PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯 分类: 编程之外 2012-06-13 18:32 451人阅读 评论(0) 收藏 举报 vb通讯byte存储cservice PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯 PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯 我们提供 PPI协议的官方文档,协议更新时间为2005年,下面是我们根据文档解析的PPI读取变量返回数据,网上的文献大部分都是讲解如何发送的,对于接收提的很少,其中接收有很多控制位,下面的表格都一一列出,如果想做可靠的工控必须对这些位进行解析,对照官方文档才能做出可靠的工控产品 西门官方PPI协议下载 说明 PPI帧头 数据头 起长度起目始 (重始 的复) 地址 源地址 功能码 PPI远冗余数据参数数据协程识别 议操ID 作 16位 考码 16位 参 个数 长度 标志 错误 PPI数据载荷区 参数1 错误码 服务ID 参数2 变量1 PPI帧尾 变量个数 访问结果 数据类型 数据数校验+结束符 位数据(bit区 个数) 默认16位 0 字节0 1 2 4 5 序 读68 16 16 68 00 VB0返回 读68 17 17 68 00 VW0返回 读68 17 17 68 00 VW1返回 读68 19 19 68 00 VD0返回 读68 16 16 68 00 M0返回 02 08 32 03 00 00 00 00 00 02 00 05 00 00 04 01 ff 04 00 08 08 5e 16 02 08 32 03 00 00 00 00 00 02 00 08 00 00 04 01 ff 04 00 20 7f ff ff ff ed 16 02 08 32 03 00 00 00 00 00 02 00 06 00 00 04 01 ff 04 00 10 ff ff 5d 16 02 08 32 03 00 00 00 00 00 02 00 06 00 00 04 01 ff 04 00 10 7f ff dd 16 02 08 32 03 00 00 00 00 00 02 00 05 00 00 04 01 ff 04 00 08 7f d5 16 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 S7-200PPI通信协议 PPI通信协议是一种主从式的通信协议,上位机即PC机为主,PLC为从。通信开始由计算机发起,PLC予以响应。 1)、计算机按通信任务,用一定格式,向PLC发送通信命令。 2)、PLC收到命令后,进行命令校验,如无误,则向计算机发送数据E5H或F9H,作出初步应答。 3)、计算机收到初步应答后,再向PLC发送SD DA SA FCFCS ED确认命令。 这里,SD为起始字符,为10H;DA为目的,即PLC地址02H;SA为数据源,即计算机地址00H;FC为功能码,取5CH;FCS为SA、DA、FC和的256余数,为5EH;末字节ED为结束符,也是16H。如按以上设定的计算机及PLC地址,则发送10、02、00、5C、5E、及16,6个字节的十六进制数据,以确认所发命令。 4)、PLC收到此确认后,执行计算机所发送的通信命令,并向计算机返回相应数据。它的通信过程要往复两次才完成一次的通信,比较麻烦,但较严谨,不易出错。 SD LE LER SD DA SA FC DASP SSAP DU FCS ED SD:(Start Delimiter)开始定界符,占1字节,为68H
LE:(Length)报文数据长度,占1字节,标明报文以字节计,从DA到DU的长度;
LER:(Repeated Length)重复数据长度,同LE
SD: (Start Delimiter)开始定界符(68H)
DA:(DestinationAddress)目标地址,占1字节,指PLC在PPI上地址,一台PLC时,一般为02,多台PLC时,则各有各的地址;
SA:(Source Address)源地址,占1字节,指计算机在PPI上地址,一般为00;
FC:(Function Code)功能码,占1字节,6CH一般为读数据,7CH一般为写数据
DSAP:(Destination Service Access Point)目的服务存取点,占多个字节
SSAP:(Source Service Access Point)源服务存取点,占多个字节
DU:(Data Unit)数据单元,占多个字节
FCS:(Frame CheckSequence)占1字节,从DA到DU之间的校验和的256余数;
ED:(End Delimiter)结束分界符,占1字节,为16H
命令类型
1)读命令 读命令长度都是33个字节。字节0~21,都是相同的,为:“68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10”。而从字节22开始,将根据读取数据的软器件类型及地址的不同而不同。
字节22,表示读取数据的单位。为01时,1bit;为02时,1字节;为04时,1字;为06时,双字。
字节23,恒0。
字节24,表示数据个数。01,表示一次读一个数据。如为读字节,最多可读208个字节,即可设为DEH。
字节25,恒0.
字节26,表示软器件类型。为01时,V存储器;为00时,其它。
字节27,也表示软器件类型。为04时,S;为05时,SM;为06时,AI;为07时AQ;为1E时,C;为81时,I;为82时,Q;为83时,M;为84时,V;为1F时,T。
字节28、29及30,软器件偏移量指针(存储器地址乘8),如:VB100,存储器地址为100,偏移量为800,转换成十六进制就是320H,则字节28到30这三个字节就是00、03、及20.
字节31、32为FCS和ED。
返回数据 与发送命令格式数据相同,但包含一条数据。具体是:
SD LE LER SD DA SA FC DASP SSAP DU FCS ED
SD LE LER SD DA SA FC DASP SSAP DU FCS ED
这里的SD、LE、Ler、SD、SA及FC与命令含义相同。但SD为PLC地址,DA为计算机地址。此外:
字节16:数据块占用的字节数,即从字节21到校验和前的字节数。一条数据时:字,为06;双字,为08;其它为05.
字节22:数据类型,读字节为04.
字节23、24:读字节时,为数据个数,单位以位计,1个字节为08;2个字节为10(16进制计),余类推。
字节25及其后至校验和之前,为返回所读值。
如读VB100开始3个字节,其命令码为:
68 1B 1B 68 02 00 6C 32 01 00 0000 00 00 0E 00 00 04 01 12 0A 10 02 00 03 00 01 84 00 03 20 8D 16(红色02为字节为单位,03为读3个字节)
68 1B 1B 68 02 00 6C 3201 00 00 00 00 00 0E 00 00 04 01 12 0A 10 04 00 01 00 01 84 00 0D 08 84 16
返回码:
68 18 18 68 00 02 08 32 03 00 0000 00 00 02 00 07 00 00 04 01 FF 04 00 18 99 34 568B 16