首页 理论教育 PLC网络协议通信编程优化方案

PLC网络协议通信编程优化方案

时间:2023-06-23 理论教育 版权反馈
【摘要】:网络协议通信指令如表7-8所示。表7-8 网络协议通信指令以下仅对SEND、RECV及CMND指令做简要介绍,其它指令可参阅有关说明书。被传送的PLC不必编程。其梯形图格式为:2.RECV指令用于从网络节点读取数据。用这些命令,可改变相关PLC的工作状态,如可改变指定的PLC处于监控工作模式等。表7-10 控制字C到C+5含义从图7-44可知,执行CMND指令,将通过PLC的CPU总线或网络,发送以字S为起始地址的指定字节数的FINS命令,到指定的设备。

PLC网络协议通信编程优化方案

网络协议通信指令如表7-8所示。

7-8 网络协议通信指令

978-7-111-26319-7-Chapter07-53.jpg

以下仅对SEND、RECV及CMND指令做简要介绍,其它指令可参阅有关说明书。1.SEND指令

用于向网络节点发送数据。其梯形图格式为:

978-7-111-26319-7-Chapter07-54.jpg

这里,S为源字首地址,指明从本PLC哪个内存区读取数据;D为目标字首地址,指明所读取的数据发送给哪个PLC的哪个内存区;C为控制字首地址,指明要发送多少数据等信息,含义见表7-9。

7-9 控制字CC+4含义

978-7-111-26319-7-Chapter07-55.jpg

如图7-39所示,执行SEND指令,则把从本地节点的S地址开始的C指明的字数,传给目标节点的D地址开始的目标存储区中。

被传送的PLC不必编程。本指令也可微分执行。

图7-40所示为数据传送路径简图。

978-7-111-26319-7-Chapter07-56.jpg

图7-39 网络数据传送

978-7-111-26319-7-Chapter07-57.jpg

图7-40 数据传送路径

如果目标节点号被设为FF,数据将向指定网络的所有节点广播。这就是广播传送。

如果需要响应(C+3的12~15位设置为0),但在响应监视时间内未收到响应,数据最多可传输15次(在C+3的0~3位中设置重试次数)。

图7-41所示为发送数据梯形图程序。当“输入条件”和A20200(对某机型端口00的通信端口允许标志)为ON时,D00100~D00109的10个字被传输到本地网的节点3D00000~D00009的10个字中。如果在10s之内未收到响应,数据将传输3次。

978-7-111-26319-7-Chapter07-58.jpg

图7-41 发送数据梯形图程序

这里C中各字的取值及含义如下:

978-7-111-26319-7-Chapter07-59.jpg

2.RECV指令

用于从网络节点读取数据。其梯形图格式为:

978-7-111-26319-7-Chapter07-60.jpg

这里,S为源字首地址,指明从哪个内存区接收数据;D为目标字首地址,指明所接收的数据存放在哪个内存区;C为控制字首地址,指明要接收多少数,从哪个节点接收等信息,见表7-9。

如图7-42所示,执行RECV指令时,请求把从源节点的字S开始的C中指定数目的字,传输到本地节点,并写入以D开始的数据区中。

图7-43所示为数据传送路径简图。

978-7-111-26319-7-Chapter07-61.jpg(www.xing528.com)

图7-42 网络数据读取

978-7-111-26319-7-Chapter07-62.jpg

图7-43 数据传送路径

RECV(098)要求有响应,因为响应包含要接收的数据。如果在C+4中设置的应答监视时间内没有收到应答,数据传输请求重复达15次(重试次数在C+3的0~3位设置)。

3.CMND指令

用以向网络节点发送命令。其梯形图格式为:

978-7-111-26319-7-Chapter07-63.jpg

这里,S为源字首地址,指明从哪个内存区接收数据;D为目标字首地址,指明所接收的数据存放在哪个内存区;C为控制字首地址,指明要接收多少数,从哪个节点接收等信息,见表7-10。

执行本指令,可向网络上的节点发送通信命令。用这些命令,可改变相关PLC的工作状态,如可改变指定的PLC处于监控工作模式等。

其通信过程如图7-44所示。

7-10 控制字CC+5含义

978-7-111-26319-7-Chapter07-64.jpg

从图7-44可知,执行CMND指令,将通过PLC的CPU总线或网络,发送以字S为起始地址的指定字节数的FINS命令,到指定的设备。应答数据存储到以D开始的存储区中。

CMND发送的是OMRON FINS协议的命令代码。如代码为0102,那么执行CMND指令,如同执行SEND;代码为0101,执行CMND指令,如同执行RECV。

例1 图7-45所示的程序就是一个发送FINS命令到另一个CPU单元的例子。当000000和A20207(某型机端口07的通信端口允许标志)为ON时,CMND将FINS命令0101(内存区读)传输到节点号3,应答存储到D00200~D00211中。

该命令从D00010~D00019中读取10个字。应答包含有2B的命令代码(0101)、2B完成代码,然后是10字的数据,总共12字或24B。10s内未接收到应答,数据将最多可重复传输3次。

978-7-111-26319-7-Chapter07-65.jpg

图7-44 通信过程

978-7-111-26319-7-Chapter07-66.jpg

图7-45 CMND通信示例程序一

这里的S及C中各字的取值及含义如下:

978-7-111-26319-7-Chapter07-67.jpg

例2 图7-46所示的程序显示了一个发送FINS命令到本地CPU单元的例子。当CI/O 000000和A20207(某型机端口07的通信端口允许标志)为ON,并且A34313为OFF时,CMND(490)将FINS命令2215(创建/删除目录)传输到本地CPU单元。应答存储到D00100~D00101中。这里,FINS命令将在OMRON目录下创建一个叫CS/CJ的目录。命令代码(2B)和结束代码(2B)将被返回,并作为应答存储。

978-7-111-26319-7-Chapter07-68.jpg

图7-46 CMND通信示例程序二

这里的S及C中各字的取值及含义如下:

978-7-111-26319-7-Chapter07-69.jpg

利用网络通信指令进行通信,过程较复杂,若被传的对方也正处于通信状态,则这个传送将不执行,故通信指令执行中,要求设定重试及其次数,还有不少成功或失败的标志。另外,被通信的对方也可设定或用指令(程序),予以禁止或保护,以保护自己的数据及自身安全。

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

我要反馈