关于西门子plc的自由通信协议
----在自由口模式下,通信协议是由用户定义的。用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。在自由口模式下,通信协议完全由梯形图程序控制。
指令格式定义
计算机每次发送一个33字节长的指令来实现一次读/写操作,指令格式见表1 说明:
起始字符
----起始字符标志着指令的开始,在本例中被定义为ASCII码的"g",不同的PLC从站可以定义不同的起始字符以接收真对该PLC的指令。
指令类型
----该字节用来标志指令的类型,在本例中05H代表读操作,06H代表写操作。
目标西门子PLC站地址
----目标PLC站地址占用指令的B2、B3两个字节,以十六进制ASCII码的格式表示目标西门子PLC的站地址。
目标寄存器地址
----在西门子PLC内部可以用4个字节来表示一个寄存器的地址(但不能表示一个位地址)。前两个字节表示寄存器类型,后两个字节表示寄存器号。
读/写字节数M
----当读西门子plc的命令时,始终读回从目标寄存器开始的连续8个字节的数据(转换为十六进制ASCII码后占用16个字节),可以根据自己的需要取用,M可以任意写入。
----当写命令时,M表示的是要写入数据的十六进制ASCII码所占用的字节数。例如要写入1个字节的数据,数据在指令中以十六进制ASCII码表示,它将占用2个字节,此时应向M中写入"02"。同理,如果要写入5个字节的数据,M中应写入"0A"。
要写入的数据
----要写入西门子plc的数据在指令中以十六进制ASCII码的格式表示,占用指令的B14-B29共16个字节。数据区必须填满,但只有前M个字节的数据会被写入目标寄存器。一条指令多可以写入8个字节的数据(此时M中应写入"10",代表十进制的16)
BCC校验码
----在与MT6100IV5传输过程中,指令有可能受到任何的干扰而使原来的数据信号发生扭曲,此时的指令当然是错误的,为了侦测指令在传输过程中发生的错误,接收方必须对指令作的确认工作,以防止错误的指令被执行,简单的方法就是使用校验码。BCC校验码的方法就是将要传送的字符串的ASCII码以字节为单位作异或和,并将此异或和作为指令的一部分传送出去;同样地,接收方在接到指令后,以相同的方式对接收到的字符串作异或和,并与传送方所送过来的值作对比,若其值相等,则代表接收到的指令是正确的,则是错误的。
----在本例中,bcc为指令B1到B29的异或和,BCC为bcc的十六进制ASCII码。
----bcc=B1 xor B2 xor B3 xor B4 xor …… xor B29
结束字符
----结束字符标志着指令的结束,在本例中被定义为ASCII码的"G",不同的PLC从站可以定义不同的结束字符以接收真对该西门子PLC的指令。
西门子PLC在接到上位机指令后,将发送一个21字节长反馈信息。
指令中为何要使用ASCII码
----一条指令除包含数据外,还包含必要的控制字(起始字符、结束字符、指令类型等)。如果指令中的数据直接以其原本的形式传输,则不可避免的会与指令中的控制字发生混淆。
----为了避免这种情况的发生,可以用TPC1162HI的文本来传送二进制数据。通过以16进制ASCII码的格式描述数据,每个二进制的字节都可以表示成一对ASCII编码,这对编码表示这个字节的两个16进制字符。这种格式可以表示任何的数值,仅仅使用ASCII代码的30H到39H(表示0到9)和41H到46H(表示A到F)。ASCII码的其余部分可以用作控制字(起始标志、结束标志、指令类型等)。这样,数据中的47H以ASCII码的形式进行传送就变成了34H37H 两个字节,从而避免了西门子PLC因接收到数据中的47H而停止接收的错误。
1、 数据传送指令
数据传送指令包括MOV(传送)、SMOV(BCD码移位传送)、CML(取反传送)、BMOV(数据块传送)、FMOV(多点传送)、XCH(数据交换)。这里主要介绍MOV(传送)指令。
传送指令MOV将源操作数据传送到指定目标,其指令代码为FNC12,源操作数[S·]可取所有的数据类型,即K、H、KnX、KnY、KnM、KnS、T、C、D、V、Z,其目标操作数[D·]为KnY、KnM、KnS、 T、C、D、V、Z。
如图1所示,,当X0为ON时,执行连续执行型指令,数据100被自动转换成二进制数且传送给D10,当X0变为OFF时,不执行指令,但数据保持不变;当X1为ON时,T0当前值被读出且传送给D20;当X2为ON时,数据100传送给D30,定时器T20的设定值被间接指定为10秒,当M0闭合时,T20开始计时;MOV(P)为脉冲执行型指令,当X5由OFF变为ON时指令执行一次,(D10)的数据传送给(D12),其它时刻不执行,当X5变为OFF时,指令不执行,但数据也不会发生变化;X3为ON时,(D1、D0)的数据传送给(D11、D10),当X4为ON时,将(C235)的当前值传送给(D21、D20)。注意:运算结果以32位输出的应用指令、32位二进制立即数及32位高速计数器当前值等数据的传送,必须使用(D)MOV或(D)MOV(P)指令。
如图2所示,可用MOV指令等效实现由X0~X3对Y0~Y3的顺序控制。
2、比较指令
比较指令有比较(CMP)、区域比较(ZCP)两种,CMP的指令代码为FNC10,ZCP的指令代码为FNC11,两者待比较的源操作数[S·]均为K、 H、KnX、KnY、KnM、KnS、T、C、D、V、Z,其目标操作数[D·]均为Y、M、S。
CMP指令的功能是将源操作数[S1·]和[S2·]的数据进行比较,结果送到目标操作元件[D·]中。在图3中,当X0为ON时,将十进制数100与计数器C2的当前值比较,比较结果送到M0~M2中,若100>C2的当前值时,M0为ON,若100=C2的当前值时,M1为ON,
若100<C2的当前值时,M2为ON。当X0为OFF时,不进行比较,M0~M2的状态保持不变。
ZCP指令的功能是将一个源操作数[S·]的数值与另两个源操作数[S1·]和[S2·]的数据进行比较,结果送到目标操作元件[D·]中,源数据[S1·]不能大于[S2·]。在图4中,当X1为ON时,执行ZCP指令,将T2的当前值与10和150比较,比较结果送到M0~M2中,若10>T2的当前值时,M0为ON,若10≤T2的当前值≤150时,M1为ON,若150<T2的当前值时,M2为ON。当X1为OFF时,ZCP指令不执行,M0~M2的状态保持不变。
3、加1指令和减1指令
加1指令INC和减1指令DEC的操作数均可取KnY、KnM、KnS、T、C、D、V、,它们不影响零标志、借位标志和进位标志。INC的指令代码为FNC24,DEC的指令代码为FNC25。INC指令的功能是将指定的目标操作元件[D·]中二进制数自动加1,DEC指令的功能是将指定的目标操作元件[D·]中二进制数自动减1,
如图5所示,当X0每次由OFF变为ON时,D20中的数自动增加1,当X1每次由OFF变为ON时,D21中的数自动减1。
数字量输入模块具有以下机械特性:
紧凑型设计:
坚固的塑料外壳包括:绿色 LED,显示输入端的信号状态。
在前门背后保护前连接器的插座
前门的标签栏。
前门内侧线路的接头针脚分配。
便捷安装:
无插槽规则,输入地址由插槽决定。
当在 ET 200M 中与有源总线模块结合使用时,可进行热插拔,而没有任何反应。用户便捷接线。
这些模块具有8、16、32或64个通道。