资源描述:
《台达PLC通讯协议》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、台达PLC通讯协议原文1、通讯协议ASCII模式,9600,7,e,12、通讯资料格式:STX头码‘:’(3AH)ADR1通讯地址:8-bit位址包含了2个ASCII码ADR0CMD1命令码:8-bit命令包含了2个ASCII码CMD0DATA(0)资料内容:n个8-bit资料包含了2n个ASCII码n〈=74个ASCII码DATA(1)………DATA(n-1)LRCCHK1校验码:8-bit校验码包含了2个ASCII码LRCCHK0END1尾码:END1=CR(0DH),END0=LF(0AH)END0ADR(通讯地址):PLC通讯地址出厂设定为0X01,因此(ADR1,ADR0)=
2、‘0’,‘1’→=30H,31H校验码:校验码采用LRC方式,将ADR1至最后一个资料内容加总,将该值取2的补数,结果即为LRC校验码。例:STX‘:’ADR1ADR0‘0’‘1’CMD1CMD0‘0’‘3’启始资料地址‘0’‘4’‘0’‘1’资料数‘0’‘0’‘0’‘1’LRCCHK1LRCCHK0‘F’‘6’END1END0CRLF01H+03H+04H+01H+00+01H=0AH0AH的2的补数为F6H注1:2补数的求法:(1补数再加1)0A(H)=00001010(B)先取1补数(将b0-b7反相)得11110101(B),再加1为11110110(B)=F6(H)即为0A(
3、H)的2补数。注2:在收到一串完整的通讯命令,要检查这串通讯命令是否有误,只要将(ADR1,0)至(LRC1,0)加总等于0,则通讯无误,否则表示命令中资料有些是错误的。通讯异常PLC的回应:PLC收到完整的通讯命令时,会判断命令是否有效,造成无效的原因有:原因EXCEPTIONCODELRCCHKERROR07DEIVCEADDRESSINVALID02要求的资料超过范围03COMMANDCODEINVALID01通讯命令格式INVALID07例:使用命令码01读取X000-X017的状态FieldNameExample(Hex)Heading3ASlaveAddress01Func
4、tion01StartingAddressHi04StartingAddressLo00NumberofPointsHi00NumberofPointsLo10ErrorCheck(LRC)EAPLC回应:FieldNameExample(Hex)Heading3ASlaveAddress01Function81ExceptionCode02ErrorCheck(LRC)7C因为Address0400对Function01是不合法的,所以回应ExceptionCode=0X02,且Function01被设为81(b7被设为1),亦即由回应的Functioncode的MSB被设为1表示P
5、LC回应ERRORMESSAGE,并且由Functioncode可得知是何种错误。可用的命令码叙述如下:(每个device的address,请参考最后一页)CodeNameDescription01ReadCoilStatusS,Y,M,T,C02ReadInputStatusS,X,Y,M,T,C03ReadHoldingRegistersT,C,D05ForceSingleColiS,Y,M,T,C06PresetSingleRegisterT,C,D15ForceMultipleColiS,Y,M,T,C16PresetMultipleRegisterT,C,D17ReportS
6、laveIDNone资料字元的格式依命令码而定,依可用的命令码的资料内容分别叙述如下:FunctionCode:01,ReadCoilStatusFieldNameExample(Hex)Heading3ASlaveAddress01Function01StartingAddressHi06StartingAddressLo14NumberofPointsHi00NumberofPointsLo25ErrorCheck(LRC)BFNumberofPoints(max)=255=0x00FF例:从从动装置01读取线圈T20-T56PC→PLC“:010106140025BFCRLF”P
7、LC→PC“:010105CD6BB20E1BE6CRLF”FieldNameContentsSlaveAddress01Function01BytesCount05Data(CoilsT27…T20)CDData(CoilsT35…T38)6BData(CoilsT43…T36)B2Data(CoilsT51…T44)0EData(CoilsT56…T52)1BErrorCheck(LRC)E6FunctionCode:02,ReadInpu