文档介绍:-232CRS-,9600(传输速率),偶同位,1个起始位,1个停止位9600,7,e,‘:’(3AH)ADR1通讯地址:ADR08-bit地址包含了2个ASCII码CMD1命令码:CMD08-bit命令包含了2个ASCII码DATA(0)资料内容:DATA(1)n个8-bit资料包含了2n个ASCII码……….n<=74个ASCII码DATA(n-1)HK1侦误值:HK08-bit侦误值包含了2个ASCII码END1结束字符:END0END1=CR(0DH),END0=LF(0AH)􀂄􀀃ADR(通讯地址)PLC通讯地址出厂设定值为0x01,因此(ADR1,ADR0)=’0’,’1’􀃖’0’=30H,‘1’=31H􀂄􀀃HK(侦误值)CMD(命令指令)及DATA(数据字符)􀂄􀀃HK(侦误值)侦错方式采用LRC(LongitudinalRedundancyCheck)侦误值。LRC侦误值乃是将ADR1至最后一个资料内容加总,将该值取2补码(2’sComplement)得到之结果即为LRC侦误值。附录-3例:STX‘:’ADR1‘0’ADR0‘1’CMD1‘0’CMD0‘3’起始资料地址‘0’‘4’‘0’‘1’资料数‘0’‘0’‘0’‘1’HK1‘F’HK0‘6’END1CREND0LF01H+03H+04H+01H+00+01H=0AH0AH的2补码为F6H注12补码的求法:(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的响应:附录-4PLC收到完整的通讯命令时,会判断命令是否有效,造成无效的原因有:MANDCODEINVALID01通讯命令格式INVALID07例:使用命令码01读取X000~X017的状态FieldNameExample(Hex)Heading3ASlaveAddress01Function01StartingAddressHi04StartingAddressLo00NumberofPointsHi00NumberofPointsLo10ErrorCheck(LRC)EA附录-5PLC响应:FieldNameExample(Hex)Heading3ASlaveAddress01Function81ExceptionCode02ErrorCheck(LRC)7C因为Address0400对Function01是不合法的,所以响应Exceptioncode=0x02,且Function01被设为81(b7被设为1),亦即由响应的Functioncode的MSB被设为1表示PLC响应ERRORMESSAGE,并且由Exceptioncode可得知是何种错误。􀂋􀀃可用之命令码叙述如下:(每个device的address,请参考最后一页)CodeNameDescription01ReadCoilStatusS,Y,M,T,C02R