最近需要与S7-200 PLC通信,以前使用的是OPC方式通信,现在要使用PPI通讯协议,查找了很多资料,都是VB方面的,VC方面的基本没有,有的也只是论文形式的,泛泛之谈。于是只有自己研究下了。。研究之后,小有收获,到时候等设备过来调试,如果没有问题,就整理成文档。。呵呵
读命令分析:一次读一条数据(地址VW10)
SD LE LER SD DA SA FC DASP SSAP DU FCS ED
SD:(Start Delimiter)开始定界符(68H)
LE:(Length)报文数据长度
LER:(Repeated Length)重复数据长度
SD: (Start Delimiter)开始定界符(68H)
SA:(Source Address)目标地址,指该地址的值,就是PLC的地址
DA:(Destination Address)本地地址,指该地址的指针,就是上位机自己的地址
FC:(Function Code)功能码,5CH为交替周期触发,6CH为首次信息周期触发,7CH为交替周期触发。
DSAP:(Destination Service Access Point)目的服务存取点
SSAP:(Source Service Access Point)源服务存取点
DU:(Data Unit)数据单元
FCS:(Frame Check Sequence)校验码
ED:(End Delimiter)结束分界符(16H)
报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值关于这个校验码的计算方法同上面说明。
在读写PLC的变量数据中,读数据的功能码为 6CH,写数据的功能码为 7CH。
对于一次读取一个数据,读命令都是33个字节。
向地址VW10=1读值:
1.发送数据
68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 04 00 01 00 01 84 00 00 50 BA 16
2.收到数据
E5
3.发送数据
10 2 0 5C 5E 16
4.收到数据
68 17 17 68 00 02 08 32 03 00 00 00 00 00 02 00 06 00 00 04 01 FF 04 00 10 00 01 60 16
写命令分析:
向地址VW10写值1:
1.发送数据
68 21 21 68 02 00 7C 32 01 00 00 00 00 00 0E 00 06 05 01 12 0A 10 02 00 02 00 01 84 00 00 50 00 04 00 10 00 01 E5 16
2.收到数据
E5
3.发送数据
10 2 0 5C 5E 16
4.收到数据
68 12 12 68 00 02 08 32 03 00 00 00 00 00 02 00 01 00 00 05 01 FF 47 16