首页 百科知识 -的通信指令与通信实例

-的通信指令与通信实例

时间:2022-10-26 百科知识 版权反馈
【摘要】:S7-200PLC通信比较常用的方式是采用PPI协议和自由口通信协议。本节将详细介绍其通信指令及通信实例。S7-200PLC之间经常采用PPI协议进行通信。与网络指令有关的特殊标志位寄存器为SMB30和SMB130。例如,将特殊标志寄存器SMB30和SMB130的低2位设置为2#10,其他位为0,即SMB30和SMB130的值为16#02,则可将S7-200PLC设置为PPI主站模式。T=1表示超时,接收信息结束。EC表示是否使用SMB89或SMB189的值检测结束信息,=0为忽略;=1为使用。

8.3 S7-200PLC的通信指令与通信实例

S7-200PLC通信比较常用的方式是采用PPI协议和自由口通信协议。S7-200 PLC之间进行通信时,PPI协议更适合。本节将详细介绍其通信指令及通信实例。

8.3.1 网络读/写指令及应用

1.网络读指令和网络写指令

S7-200PLC之间经常采用PPI协议进行通信。S7-200PLC默认运行模式为从站模式,但在用户应用程序中可将其设置为主站运行模式与其他从站进行通信,在S7-200PLC作为主站时,可用网络读/写指令对其他从站中的数据进行操作。

(1)网络读指令NETR。当使能有效时,初始化通信操作,通过端口PORT可以从远程设备接收数据,所接收到的数据存储在指定的缓冲区表TBL中,形成数据表

(2)网络写指令NETW。当使能有效时,初始化通信操作,通过端口PORT将缓冲区表TBL中的数据发送到远程设备。

NETR和NETW的指令格式及操作数如表8-1所示。

表8-1 NETR和NETW的指令格式及操作数

img318

指令中,TBL为缓冲区首地址,操作数为字节。PORT为操作端口,CPU224XP 和CPU226可以为0或1,其他的CPU只能为0。NETR指令可以从远程节点上最多读取16个字节的信息,NETW指令则可以向远程节点最多写入16个字节的信息。

在程序中可以使用任意条网络读/写指令,但是在任何同一时间,最多只能执行8 条NETR指令或NETW指令、4条NETR指令和4条NETW指令,或者2条NETR指令和6条NETW指令。

使用网络读/写指令对另外的S7-200PLC读/写操作时,首先要将应用网络读/写指令的S7-200PLC定义为PPI主站模式,即通信初始化,然后才可以使用该指令进行读/写操作。

2.控制寄存器和传输数据表

与网络指令有关的特殊标志位寄存器为SMB30和SMB130。SMB30和SMB130是通信端口控制寄存器,SMB30用来控制PORT0的通信方式,SMB130控制PORT1的通信方式。SMB30和SMB130默认的设置是PPI模式,这也是唯一的、与标准的编程装置以及操作员接口实现通信的协议。若要改变通信功能的特性,如串行通信的波特率、奇偶校验特性、字符长度等,则必须改写这个通信端口控制寄存器。

S7-200PLC执行网络读/写指令时,PPI主站与从站之间的数据以传送数据表的格式传送数据,首先要将应用网络读/写指令的S7-200PLC定义为PPI模式,即通信初始化,然后就可以使用该指令进行读/写操作。和PPI及自由口通信均有密切联系的特殊标志器SMB30(PORT0)及SMB130(PORT1)中规定了PPI通信的设定方式,如表8-2所示。例如,将特殊标志寄存器SMB30和SMB130的低2位设置为2#10,其他位为0,即SMB30和SMB130的值为16#02,则可将S7-200PLC设置为PPI主站模式。

表8-2 SMB30和SMB130的格式

img319

3.NETR/NEIW指令应用举例

程序实现的功能是将主站的I0.0~I0.7的状态映射到从站的Q0.0~Q0.7中,将从站的I0.0~I0.7的状态映射到主站的Q0.0~Q0.7中。通信使用NETR/NEIW指令,程序工作原理及地址设置如图8-15所示。

img320

图8-15 程序工作原理及地址设置

主站程序及注释如图8-16所示,从站程序及注释如图8-17所示。

img321

图8-16 主站程序

img322

图8-17 从站程序

8.3.2 自由口指令及应用

自由口模式允许应用程序控制S7-200PLC的串行通信口,S7-200PLC处于RUN方式,当选择了自由口通信模式时,用户程序通过接收中断、发送中断来发送指令,可通过使用发送指令(XMT)、接收指令(RCV)、发送接收中断指令来控制通信口的操作。

1.自由口指令

(1)发送指令XMT。当使能有效时,可以将发送数据缓冲区(TBL)中的数据通过指令指定的通信端口(PORT)发送出去,发送完成时将产生一个中断事件,数据缓冲区的第一个数据指明了要发送的字节数。

(2)接收指令RCV。当使能有效时,可通过指令指定的通信端口(PORT)接收数据,并将接收到的数据存储于接收数据缓冲区(TBL)中,接收完成时也将产生一个中断事件,数据缓冲区的第一个数据指明了字节数。

表8-3所示的为XMT和RCV的指令格式及操作数。

表8-3 XMT和RCV的指令格式及操作数

img323

指令中,TBL为缓冲区首地址,操作数为字节。PORT为操作端口,CPU224XP 和CPU226可以为0或1,其他的CPU只能为0。XMT指令和RCV指令可以方便地发送和接收一个或多个字节的数据,最多为255个字节。

2.相关寄存器及标志

1)控制寄存器

用特殊标志位寄存器SMB 30控制和设置通信口PORT0,如果PLC主机上有通信PORT1,则用SMB130来进行控制和设置。自由口通信模式的设定方式如表8-2所示。只有CPU处于RUN模式时,才能进行自由口通信。向SMB30和SMB130的协议区置1,可以允许PLC运行自由口通信模式。处于自由口模式时,PPI通信被禁止,此时不能与编程设备通信。

2)特殊标志位及中断

特殊标志位SM4.5和SM4.6为发送结束标志位,分别用来表示PORT0和PORT1发送空闲状态,发送空闲时置1。

与自由口通信模式有关的中断为中断事件号8(PORT0)和25(PORT1);发送完成中断为中断事件号9(PORT0)和26(PORT1);接收完成中断为中断事件号23 (PORT0)和24(PORT1)。

3)特殊功能寄存器

接收信息时要用到一系列特殊标志位寄存器。对于PORT0,用SMB86~SMB94;对于PORT1,用SMB186~SMB194。各字节及内容描述如表8-4所示。下面详细介绍其中的SMB86/SMB186和SMB87/SMB187。

表8-4 特殊标志为寄存器(SMB86~SMB94和SMB186~SMB194)

img324

SMB86/SMB186为接收信息状态字节,其位数据含义为:

img325

其中,N=1表示用户通过禁止命令结束接收信息操作。R=1表示因输入参数错误或缺少起始结束条件引起的接收信息结束。E=1表示接收到字符。T=1表示超时,接收信息结束。C=1表示字符数超长,接收信息结束。P=1表示奇偶校验错误,接收信息结束。

SMB87/SMB187为接收信息控制字节,其主要用于定义和识别信息的判据,通过对接收控制字节各位的设置,可以实现多种形式的自由口接收通信。各数据位的含义为:

img326

其中,EN表示接收允许,=0为禁止接收信息;=1为允许接收信息。SC表示是否使用SMB88或SMB188的值检测起始信息,=0为忽略;=1为使用。EC表示是否使用SMB89或SMB189的值检测结束信息,=0为忽略;=1为使用。IL表示是否使用SMB90或SMB190的值检测空闲信息,=0为忽略;=1为使用。C/M表示定时器定时性质,=0为内部字符定时器;=1为信息定时器。TMR表示是否使用SMB92或SMB192的值终止接收,=0为忽略;=1为使用。BK表示是否使用中断条件来检测

起始信息,=0为忽略;=1为使用。

3.用XMT和RCV指令发送和接收数据

用XMT指令可以方便地发送1~255个字节,如果有一个中断服务程序连接到发送结束事件上,在发送完缓冲区内最后一个字符时,会产生一个发送中断(对PORT0为中断事件9,对PORT1为中断事件26)。也可以不通过中断执行发送指令,通过查询发送完成状态位SM4.5或SM4.6的变化,判断发送是否完成。如果将字符数设置为0并执行XMT指令,可以产生一个break状态,这个break状态可以在线上持续一段特定的时间,这段特定时间是以当前波特率传输16位数据所需要的时间。发送break的操作与发送其他信息一样,发送break的操作完成时也会产生一个发送中断,SM4.5或SM4.6反映发送操作的当前状态。

用RCV指令可方便地接收一个或多个字节,最多可达255个字符,如果有一个中断服务程序连接到接收信息完成事件上,在接收完最后一个字符时,会产生一个接收中断(对PORT0为中断事件23,对PORT1为中断事件24)。和发送指令一样也可以不使用中断,通过查询接收信息状态寄存器SMB86(PORT0)或SMB186(PORT1)来接收信息。当RCV指令未被激活或已被终止时,它们不为0;当接收正在进行时,它们为0。RCV指令允许用户选择信息的起始和结束条件,使用SMB86至SMB94对PORT0进行设置,使用SMB186至SMB194对PORT1进行设置。当超限或有校验错误时,接收信息会自动终止。因此,必须为接收信息功能操作定义一个起始条件和结束条件(最大字符数)。

4.用接收字符中断接收数据

为了完全适应对各种通信协议的支持,可以使用字符中断控制的方式来接收数据。每接收一个字符时都会产生中断。在执行连接到接收字符中断事件上的中断程序前,接收到的字符存储在SMB2中,校验状态(如果允许的话)存储在SM3.0中。

SMB2是自由端口接收字符缓冲区。在自由口模式下,每一个接收到的字符都会被存储在这个单元中,以方便用户程序访问。

SMB3用于自由口模式,并包含一个校验错误标志位。当接收字符同时检测到校验错误时,该位被置位,该字节的所有其他位(SMB3.1~SMB3.7)保留。

5.自由口协议通信指令应用举例

程序实现的功能是上位PC机和PLC之间的通信,要求PLC接收上位PC机发送的一串字符,直到收到回车符为止,PLC又将信息发送回PC机。通信采用自由口通信模式,通信协议为:波特率9.6Kb/s,每字符8位,无奇偶校验。接收和发送用同一缓冲区,首地址为VB100。不设立超时时间。

自由口协议通信指令应用举例的主程序如图8-18所示,本程序实现的功能是接收一个字符串,直到接收到换行字符为止。接收完成后,信息会发送回发送方。中断0为接收完成中断例行程序,如图8-19所示。中断0实现的功能是如果接收状态显示接收结束字符,则附加一个10ms计时器,触发传输并返回。中断1为10ms定时触发发送,如图8-20所示。中断2为发送字符中断事件,如图8-21所示。

img327

图8-18 自由口模式通信主程序

img328

图8-19 自由口协议通信中断0

img329

图8-20 自由口协议通信中断1

img330

图8-21 自由口协议通信中断2

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈