
ppi协议命令示意图.docx
10页读命令报文 1(上位机请求指令)0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21SD LE LER SD DA SA FC CC GU DU开始符长度长度开始符站号源地址功能码协议识别远程控制冗余识别冗余识别协议数据单元参考参数长度参数长度数据长度数据长度读标识符变量地址数变量请求格式变量地址长度变量格式标识符68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 1022 23 24 25 26 27 28 29 30 31 32DU FCS DE类型 数据个数 分区 存储器类型 偏移量 校验码 结束符02 00 08 00 00 03 00 05 E0 D2 16命令字节详细说明:Byte0(开始定界符,占一字节,Start Delimiter 2,简写:SD2) ,此位总是 68HByte1(报文数据长度,占一字节,Length Byte,简写:LD) ,报文长度为自 DA至 DU的数据长度Byte2(重复报文数据长度,占一字节,Length Byte repeated,简写:LEr),重复数据长度为自 DA至 DU的数据长度。
Byte3(开始定界符,占一字节,Start Delimiter 2,简写:SD2) ,此位总是 68HByte4(目标地址,占一字节,Destination Address,简写:DA),该地址的值,就是 PLC 的地址Byte5(本地地址,占一字节,Source Address,简写:SA),该地址的值,就是上位机自己的地址Byte6(功能码,占一字节,Frame Control,简写:FC),6CH 为首次信息周期触发,7CH 为交替周期触发一般情况下总是 6CH,当然 7CH 也是可以的,但是会不会出错还是很清楚从 Byte7到 Byte30为称为协议数据单元(Protocol Data Unit (简写 PDU))协议数据单元分为三块:帧头(Header),参数块(Parameter block),数据块(Data block)帧头(Header)定义如下(上图中蓝色区块 Byte7~Byte16)有一点问题:Byte7(协议识别,占一字节,Protocol Identification,简写:PROTO_ID): The Protocol ID for PPI is 32H。
Byte8(远程控制,占一字节,Remote Operating Services Control,简写:ROSCTR): 01H – Acknowledged request,读写请求命令时都为此值, 02H – Acknowledgement without the parameter and data fields 03H – Acknowledgement with either or both the parameter and data fields,一般在回传数据中用到此值 07H – Acknowledgement for functions with extended header information in the parameter areaByte8-9(冗余识别,占二字节,Redundancy Identification,简写:RED_ID),此位总为0000HByte11-12(协议数据单元参考,占二位,Protocol Data Unit Reference,简写:PDU_REF)每个发送请求指令都会分配一个唯一的协议数据单元参考,当回传指令建立后,它会包含这一个相同的协议数据单元参考,在一般情况,此值可以总是为 0000HByte13-14(参数长度,占二字节,Parameter Length,简写:PAR_LG),此位表示后面参数区块(是从 Byte17位开始到 FCS位前结束)的长度。
它指明参数区块块占用的字节数Byte15-16(数据长度,占二字节,Data Length,简写:DAT_LG),此位表示后面数据区块的长度,在读命令中由于没有数据区块,所以总是 0000H,在写命令中,是指写入相应地址的数据的长度,以字节为单位Byte17(命令标识符,占一字节,Service identification for Read service,简写:SERVICE_ID) ,读命令时为 04HByte18(变量存储区块数,占一字节,the number of variable addresses,简写:Number of Variables) ,如只读一个存储区块,以 01H出现,若要读取多个存储区块Byte19(变量请求格式,占一字节,the format of the variable request,简写:Variable Spec) ,在读写命令总是以 12H出现Byte20(变量地址长度,占一字节,Variable address length,简写:V_ADDR_LG) ,在读写命令总是以 0AH出现Byte21(变量定义类型,占一字节,Identification of the variable format,简写:Syntax ID) ,在读写命令总是以 10H出现。
Byte22(变量类型,占一字节,The Type defines the size and format of the variable,简写:Type) ,定义如下: Boolean: 01H Byte: 02H Word: 04H Double Word: 06H Counter (IEC): 1EH Timer (IEC): 1FH High Speed Counter (IEC): 20HByte23-24(元件数量,占二字节,This field specifies the number of elements to be read or written,简写:Number of Elements)布尔数总是占一位Byte25-26(分区,占二字节,Subarea),若操作区块为 V区时,值为 0001H,其他区块时,值为 0000HByte27(存储器类型,占一字节,Area),此为表示 PLC的 CPU存在的存储器名称,定义如下:Memory Area Area NumberStage 04HSystem Markers 05HAnalog Inputs 06HAnalog Outputs 07HCounters (IEC) 1EHTimers (IEC) 1FHHigh Speed Counters (IEC) 20HDiscrete Inputs 81HDiscrete Outputs 82HMarkers 83HVariable Memory 84HByte28-30(偏移量,占三字节,Offset) ,是指命令操作的起始地址。
偏移量在内存中以位表示,除了计数器、定时器和高速计数器三个之外例如计算 VB100就是 100×8,这是十进制,再转换成十六进制,就是 000320,若为 Q1.2就是 1×8+2,这是十进制,再转换成十六进制,就是00000AByte31(校验码,占一字节,Frame Check Sequence,简写:FCS),校验码为以 Byte 分割的 DA至 DU 数据的和 MOD 256(十进制),只取其中的末字节值Byte32(结束分界符,占一字节,End Delimiter,简写:ED),总为 16HPLC 答复指令单字符答复(Short Acknowledge,占一字节,简写:SC),总为 E5H,这是表面 PLC 主机已经确认上述请求指令报文 2(上位机请求指令)0 1 2 3 4 5SD1 DA SA FC FCS ED开始符 目标地址 源地址 功能码 校验码 结束符68 1B 1B 68 02 00命令字节详细说明:Byte0(开始定界符,占一字节,Start Delimiter 2,简写:SD2) ,此位总是 10HByte1(目标地址,占一字节,Destination Address,简写:DA),此时对 PLC而言,该地址的值,已经是上位机的地址。
Byte2(本地地址,占一字节,Source Address,简写:SA),此时对 PLC而言,该地址的值,就是 PLC自己的地址Byte3(功能码,占一字节,Frame Control,简写:FC),5CH 为交替周期触发,总为 5CHByte4(校验码,占一字节,Frame Check Sequence,简写:FCS),校验码为以 Byte分割的 DA至 FC数据的和 MOD 256(十进制),只取其中的末字节值Byte5(结束分界符,占一字节,End Delimiter,简写:ED),总为 16HPLC答复指令 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20SD LE LER SD DA SA FC开始符长度长度开始符站号源地址功能码协议识别远程控制冗余识别冗余识别协议数据单元参考参数长度参数长度数据长度数据长度错误类型错误代码服务代码变量数量68 16 16 68 00 02 08 32 03 00 00 00 00 00 02 00 05 00 00 04 0121 22 23 24 25 26 27 28 29 30DU FCS DE变量返回值数据类型 数据长度 数据区块 校验码 结束符FF 04 00 08 XX XX XX XX XX 16Byte0(开始定界符,占一字节,Start Delimiter 2,简写:SD2) ,此位总是 68H。
Byte1(报文数据长度,占一字节,Length Byte,简写:LD) ,报文长度为自 DA至 DU的数据长度Byte2(重复报文数据长度,占一字节,Length Byte repeated,简写:LEr),重复数据长度为自 DA至 DU的数据长度Byte3(开始定界符,占一字节,Start Delimiter 2,简写:SD2) ,此位总是 68HByte4(目标地址,占一字节,Destination Address,简写:DA),此时对 PLC而言,该地址的值,已经是上位机的地址Byte5(本地地址,占一字节,Source Address,简写:SA),此时对 PLC而言,该地址的值,就是 PLC自己的地址Byte6(功能码,占一字节,Frame Control,简写:FC),总为 08HByte7(协议识别,占一字节,Protocol Identification,简写:PROTO_ID): The Protocol ID for PPI is 32HByte8(远程控制,占一字节,Remote Operating Services Control,简写:ROSCTR): 01H – Acknowledged request,读写请求命令时都为此值, 02H – Acknowledgement without the parameter and data fields 03H – Acknowledgement with either or both the parameter and data fields,一般在回传数据中用到此值。
07H – Acknowledgement for functions with extended header information in the 。
