工控中有一些小的人机系统用高级语言有它的优势,高速、保密、小巧。而用WINCC之类的有一种 杀鸡用牛刀的感觉,速慢、庞大、没法加密,而高级语言中最缺乏的一种访问接口,如OPC、MODIBUS、直接通讯等,得自已编写。上次成功的实现了OPC与MODIBUS子程序,上一周又编好了与S7-200 PPI通迅的子程序,在此程序的基础上,又编出了与OMRON PLC的通迅子程序。
除了S7-200 226外,我还有一只CPM2A PLC,为我试
验提供了硬件条件:
我用两根线,一根是OMRON原配的232串口线,一只是国内仿制的
USB-CIF02线,可用于笔记本,需要安装一个驱动,用来将USB接口
仿成232串口,所以,实质仍是串口与PLC通迅。
百度网站为我们提供了一种巨大的书库,这是九十年代之前是无法想象的事,
有关PLC通迅的对话协议都可以搜到,还能搜到源程序,把大家的智慧集成到了
一起。言归正传,OMRON的对话协议比S7-200 PPI简单多了:
因为原资料是WORD格式,有表格线,没法贴过来。
可以发现,OMRON的命令字都是ASCII字符,所以,地址等都要从数字量
转换成 十六进字符串或十进字符串,校验码也一样,先用异或求和后,把
把结果转换为16进字符串,所以,它的命令字字符只用7位二进符就够了,
缺省232通迅参数是: 9600,e7,2.这 是与S7-200 PLC不同之处。
神仙姐姐林雪薇老师
实战经验:
1. OMRON通迅参数要设成 9600,e,7,2 而西门子S7-200 要设成 9600,e, 8,1,
用缺省通迅参数的好处是,不需设定PLC,就能直接使用,这个速度足够在高级语言
互相访问;
2. OMRON 的通讯字比西门子的PPI要简单多了,注意的是: 用 OMRON 命令写 PLC时,
PLC要用命令字设成 “监控”“编程”态,否则,在“运行”态,你是没有写进去的,
而S7-200没有这一规矩;
3. OMRON命令中,都用ASC字符,所以,地址值要转换成 四位十进制字符串,而校验
码要转换成 两个十六进制字符串,这许多人会搞不清这名堂。
4. OMRON PLC 是以16位即一个字当成基本单元,而S7-200是以8位二进制即一个字节作为
单元。所以,OMRON要用短整数作为数组单元。
香港嫩模代表、宅男女神、萌版赫本的Angelababy
void OMRON::cal_fcs(char *buf,int size)
{
int cl=size-4;
BYTE fcs=0;
for (int i=0;i<cl;i++)
fcs^=buf【i】;
sprintf(&buf【cl】,"%02hX*\r",(short)fcs);
}
// 这是校验码的子程序,最后转换成两位十六进字符
/*-----------------
调用方式:
omron=new OMRON();
omron->MSComm=MSComm1;
omron->timeout=50; // 50ms
omron->InitMSComm();
MSComm1->PortOpen=true;
ShowMessage(omron->GetCPU());
omron->SetMode(2); // 2:监控可写方式
short buf【1024】;
omron->ReadNW(_IR,100,2,buf);
short buf1=0x80;
omron->WriteW(_DM,20,&buf1);
omron->WriteBit(_IR,10,0,true);
MSCOmm1->PortOpen=false;
delete omron;
-----------------*/
这就是调用方法,足够简单,称为对象封装。