1、例:013启始资料地址4资料数F6CRLF01H+03H+04H+01H+00+01H=0AH 0AH的2的补数为F6H注1:2补数的求法:(1补数再加1)0A(H)=00001010(B)先取1补数(将b0-b7反相)得11110101(B),再加1为11110110(B)=F6(H)即为0A(H)的2补数。注2:在收到一串完整的通讯命令,要检查这串通讯命令是否有误,只要将(ADR1,0)至(LRC1,0)加总等于0,则通讯无误,否则表示命令中资料有些是错误的。通讯异常PLC的回应:PLC收到完整的通讯命令时,会判断命令是否有效,造成无效的原因有:原 因EXCEPTION CODELRC C
2、HK ERROR07DEIVCE ADDRESS INVALID02要求的资料超过范围03COMMAND CODE INVALID01通讯命令格式INVALID使用命令码01读取X000-X017的状态Field NameExample (Hex)Heading3ASlave AddressFunctionStarting Address Hi04Starting Address Lo00Number of Points HiNumber of Points Lo10Error Check (LRC)EAPLC回应:81Exception Code7C因为Address 0400 对Funct
3、ion 01是不合法的,所以回应Exception Code=0X02,且Function 01被设为81(b7被设为1),亦即由回应的Function code的MSB被设为1表示PLC回应ERROR MESSAGE,并且由Function code可得知是何种错误。可用的命令码叙述如下:(每个device的address,请参考最后一页)CodeNameDescriptionRead Coil StatusS,Y,M,T,CRead Input StatusS,X,Y,M,T,CRead Holding RegistersT,C,D05Force Single Coli06Preset S
4、ingle Register15Force Multiple Coli16Preset Multiple Register17Report Slave IDNone资料字元的格式依命令码而定,依可用的命令码的资料内容分别叙述如下:Function Code :01,Read Coil Status1425BFNumber of Points(max)= 255 = 0x00FF从从动装置01读取线圈T20-T56PCPLC “:01 01 06 14 00 25 BF CR LF”PLCPC “:01 01 05 CD 6B B2 0E 1B E6 CR LF”ContentsBytes Co
5、untData (Coils T27T20)CDData (Coils T35T38)6BData (Coils T43T36)B2Data (Coils T51T44)0EData (Coils T56T52)1BE602,Read Input Status从从动装置01读取接点Y024-Y07001 02 05 14 00 25 BF CR LF”01 02 05 CD 6B B2 0E 1B E5 CR LF”Data (Coils Y033Y024)Data (Coils Y043Y034)Data (Coils Y053Y044)Data (Coils Y063Y054)Data (
6、Coils Y070Y064)E503,Read Holding Registet08DANumber of Points(max)= 18(for 16 bit register)= 9(for 32 bit register)从从动装置01读取线圈T20-T2701 03 06 14 00 08 DA CR LF”01 03 10 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 B8 CR LF”Data Hi(T20)Data Lo(T20)Data Hi(T21)Data Lo(T21)Data Hi(T22)Data Lo(T22)Da
7、ta Hi(T23)Data Lo(T23)Data Hi(T24)Data Lo(T24)Data Hi(T25)Data Lo(T25)Data Hi(T26)Data Lo(T26)Data Hi(T27)Data Lo(T27)B805,Force Single CoilCoil Address HiCoil Address LoForce Data HiFFForce Data LoF6NMNN = 0xFF00Coil ONNMNN = 0x0000Coil OFF强制设定线圈 Y000 ON01 05 05 00 FF 00 F6 CR LF”06,Preset Single R
8、egisterRegister Address HiRegister Address LoPreset Data Hi12Preset Data Lo34AD设定暂存器 T0 to 00 03 01 06 06 00 12 34 AD CR LF”Switch(c) Case 0 :T0Q :01 06 06 00 12 34 AD CR LF Case 1 :C001 06 0E 00 12 34 AF CR LF Case 2 :C23201 06 0E E8 12 34 56 78 EF CR LF Case 3 :D1001 06 10 0A 12 34 99 CR LF Case 4
9、 :D100001 06 13 E8 12 34 BA CR LF15,Force Multiple Coils0FQuantity of Coils HiQuantity of Coils Lo0AByte Count11Quantity of Coils(max)= 255 设定线圈 Y007Y000 = 1100 1101,Y011Y010 = 01。01 0F 05 00 00 0A 02 CD 01 11 CR LF”01 0F 05 00 00 0A E1 CR LF”Register To Address HiRegister To Address LoE116,Preset M
10、ultiple RegisterNumber of Register HiNumber of Register LoData HiData LoC6Number of Register(max)= 16(for 16 bit register)= 8(for 32 bit register)设定暂存器 T0 为 00 0A, T1 为 01 02。01 10 06 00 02 00 04 00 0A 01 02 D6 CR LF”01 10 06 00 00 02 E7 CR LF”E717,Report Slave IDReturns a description of controller
11、present at the slave address, the current status of the slave Run indicator, and other information specific to the slave device.EESlave IDRun indicator Status00 = OFFFF = ONData 0 (D1001 HI)40Data 1 (D1001 LOW)9A台达PLC装置地址(device address)DeviceRangeEffective RangeAddressS000-255000-1270000-00FF246-51
12、10100-01FF512-7670200-02FF768-10230300-03FFX000-377(8进制)000-177(8进制)0400-04FFY0500-05FFT0600-06FFM0000-12790800-08FF256-5110900-09FF0A00-OAFF0B00-0BFF1024-12790C00-0CFFC232-2550E00-0EFFD000-5991000-11431000-10FF1100-11FF1200-12FF1300-13FF1400-14FF台达PLC通讯协议修正译文例外码校验码错误错误的装置地址命令码错误通讯格式错误名称例码 (Hex)头码从站
13、地址命令码启始地址高位启始地址低位资料高位资料低位校验码(LRC)因为地址 0400 对命令 01是不合法的,所以回应例外码 = 0X02,且命令 01被设为81(b7被设为1),亦即由回应的命令码的MSB被设为1表示PLC回应错误讯息,并且由命令码可得知是何种错误。(每个装置的地址,请参考最后一页)功能作用范围读线圈状态读输入状态读寄存器值设定单一线圈预设单一寄存器设定多个线圈预设多个寄存器状态、机种报告命令码 :01,读取线圈状态命令校验(LRC)资料位(max)= 255 = 0x00FF内容字节数数据(线圈 T27T20)数据(线圈T35T38)数据(线圈T43T36)数据(线圈T51T44)数据(线圈T56T52)校验码02,读取输入状态数据(线圈Y033Y024)数据(线圈Y043Y034)数据(线圈Y053Y044)数据(线圈Y063Y054)数据(线圈Y070Y064)校验(LRC