首页 理论教育 PLC网络指令通信程序设计优化技巧

PLC网络指令通信程序设计优化技巧

时间:2023-06-16 理论教育 版权反馈
【摘要】:用这些命令可改变相关PLC的工作状态,如可改变指定的PLC处于监控工作模式等。图5-92 通信过程从图5-92可知,执行CMND指令,将通过PLC的CPU总线或网络发送以字S为起始地址的指定字节数的FINS命令到指定的设备。图5-93 CMND通信示例程序以及图中S及C中各字的取值及含义利用网络通信指令,进行通信,过程较复杂。

PLC网络指令通信程序设计优化技巧

1.欧姆龙PLC与PLC网络命令通信

网络协议通信指令如表5-12所示。

5-12 网络协议通信指令

978-7-111-56641-0-Chapter06-96.jpg

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

(1)SEND指令

用于向网络节点发送数据。其梯形图格式如图5-84所示。

978-7-111-56641-0-Chapter06-97.jpg

图5-84 SEND指令

这里 S——源字首地址,指明从本PLC哪个内存区读取数据;

D——目标字首地址,指明所读取的数据发送给哪个PLC的哪个内存区;

C——控制字首地址,指明要发送多少数据等信息,含义见表5-13。

5-13 控制字C~C+4含义

978-7-111-56641-0-Chapter06-98.jpg

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

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

图5-86所示为数据传送路径简图。

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

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

978-7-111-56641-0-Chapter06-99.jpg

图5-85 网络数据传送

978-7-111-56641-0-Chapter06-100.jpg

图5-86 数据传送路径

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

978-7-111-56641-0-Chapter06-101.jpg

图5-87 发送数据梯形图程序

978-7-111-56641-0-Chapter06-102.jpg

(2)RECV指令

用于从网络节点读取数据。其梯形图格式如图5-88所示。

这里 S——源字首地址,指明从哪个内存区接收数据;

D——目标字首地址,指明所接收的数据存放在哪个内存区;

C——控制字首地址,指明要接收多少数,从哪个节点接收等信息。

978-7-111-56641-0-Chapter06-103.jpg

图5-88 RECV指令

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

图5-90所示为数据传送路径简图。

978-7-111-56641-0-Chapter06-104.jpg

图5-89 网络数据读取

978-7-111-56641-0-Chapter06-105.jpg

图5-90 数据读取路径

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

(3)CMND指令

用以向网络节点发送命令。其梯形图格式如图5-91所示。

这里 S——源字首地址,指明从哪个内存区接收数据;

D——目标字首地址,指明所接收的数据存放在哪个内存区;

C——控制字首地址,指明要接收多少数,从哪个节点接收等信息,见表5-14。

978-7-111-56641-0-Chapter06-106.jpg

图5-91 CMND指令

5-14 控制字C~C+4含义

978-7-111-56641-0-Chapter06-107.jpg

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

978-7-111-56641-0-Chapter06-108.jpg

图5-92 通信过程

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

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

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

该命令从D00010~D00019中读取10个字。应答包含有2字节的命令代码(0101),2字节完成代码,然后是10字的数据,总共12字或24个字节。10s内未接收到应答,数据将最多可重复传输3次。这里的S及C中各字的取值及含义如图5-93b所示。

【例2】 如图5-94a所示程序,显示了一个发送FINS命令到本地CPU单元的例子。当CI/O000000和A20207(某型机端口07的通信端口允许标志)为ON并且A34313为OFF时,CMND(490)将FINS命令2215(创建/删除目录)传输到本地CPU单元。应答存储到D00100~D00101中。这里,FINS命令将在欧姆龙目录下创建一个叫CS/CJ的目录。命令代码(2字节)和结束代码(2字节)将被返回并作为应答存储。这里的S及C中各字的取值及含义如图5-94b所示。

978-7-111-56641-0-Chapter06-109.jpg

图5-93 CMND通信示例程序以及图中S及C中各字的取值及含义

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

2.西门子PLC间网络指令通信

(1)S7-200网络通信命令

1)网络读(NETR)指令。用以在PPI网络上进行网络初始化,以读取指定站点、指定存储区的数据。其梯形图格式如图5-95所示。(www.xing528.com)

这里 EN——指令执行条件,输入为ON,则执行本指令;

TBL——字表的首地址;

PORT——选用的通信口。

执行本指令,则从PORT指定的通信口,从TBL字表中指定的远程站点、指定的存储区,读取1个或多个字符,并存储于TBL字表指定的存储区中。而接收字节数则由TBL字表确定,最多可接收16个。

2)网络写(NETW)指令。用以在PPI网络上,进行网络初始化,以把数据写入TBL指定站点、指定存储区。其梯形图格式如图5-96所示。

这里 EN——指令执行条件,输入为ON,则执行本指令;

TBL——字表的首地址;

PORT——选用的通信口。

执行本指令,则用PORT指定的通信口把TBL字表指定的存储区中数据传送给TBL字表中指定的远程站点、指定的存储区。而传送字节数则由TBL字表确定,最多可接收16个。

以上两个指令,在每一PLC中最多可使用8次。

此两个指令的TBL字表长度最大为23个字节,其含义见图5-97。

图5-97中偏移0字节,即TBL指向的字节为状态字节。位D为1,执行功能完成;0未完成。位A为1,通信功能激活;0未激活。位E为1,通信出错;0未出错。如出错,错误码记录在它的0~3位中。

978-7-111-56641-0-Chapter06-110.jpg

图5-94 CMND通信示例程序二及图中S及C中各字的取值及含义

978-7-111-56641-0-Chapter06-111.jpg

图5-95 NETR指令

978-7-111-56641-0-Chapter06-112.jpg

图5-96 NETW指令

978-7-111-56641-0-Chapter06-113.jpg

图5-97 TBL字表含义

偏移1字节,指定远程站点站号。偏移2~5共4个字节,指定远程站点的存储区指针。而存储区可以是输入区I、输出区Q、辅助区M或数据存储区V。偏移6字节,指定读、写数据的字节数。在偏移7字节及其后,用于存储读、写数据。其最大偏移字节,取决于指定读、写数据的字节数。如指定读、写数据的字节数为16个,则最大偏移为22个字节。

用这两个网络通信指令的特点是,只需一方执行程序,调用此指令,而被读、写方不必编程,不必执行程序,也可实现通信。但双方都应处于PPI下,否则无法通信。

方便的是,S7-200编程软件STEP7Micro/WIN提供有使用者两个指令的导向,可按自身要求指定有关参数。完成后,将生成一个NET-EXE子程序供调用。而且查找指令帮助,STEP7Micro/WIN还提供编程实例。

(2)S7-300、400网络通信函数

S7-300、400PLC不用指令,而是函数。而且这类函数很多,并多与使用通信模块或网络有关。在MPI网上,可使用的有X-PUT(SFC67)、X-GET(SFC68)、X-SEND(SFC65)及X-REC(SFC66)等。在PROFIBUS网上,可使用的有DPWD-DAT(SFC15)、DPRD-DAT(SFC14)、DP-SEND(FC1)及DP-REC(FC2)等。在以太网上,可使用的有AG-SEND(FC5)及AG-REC(FC6)等。在使用串口通信时,可使用的有P-SEND(FB2)、P-RCV(FB3)、P-SEND-RK(FB8)及P-REC-RK(FB7)等。当然,有的函数在使用前还需对网络进行相关的组态

有的函数为单边通信方式,如用X-GET、X-PUT,使用时,编程一方作为客户机,而不编程一方作为服务器。特别适合S-300(作为客户机)与S7-200(作为服务器)通信。只要在S7-300上执行X-GET、X-PUT指令,即可从或向函数指定站点的S7-200上的函数指定的字节中读取或写入数据。而读取或要写入的数据则存于函数指定S7-300的存储区中。

而有的函数为双边通信方式,如X-SEND、X-REC,使用时,通信双方都要编程。一方发送,用X-SEND指令,把函数指定存储区中数据打包,记上包的标志(REQ-ID,其值由用户选定),发送函数指定的站点。另一方接收,用X-REC指令,接收发来的数据,并存于指令指定的存储区中。但不管谁发来的数据,它都接收。所以,还要对数据包的标识(REQ-ID)进行判断,以确定是否为所要接收的数据。

也可使用标准的通信函数块PUT(FB14)、GET(FB15)、SEND(FB12)及REC(FB13)。其功能与上述4个函数基本相同。但只能在S7-300、400间通信,而且,在使用前,要做相应组态,要指定双方为通信伙伴。

S7-300、400还有很多通信函数或函数块,功能很强,并多与使用说明网络及通信模块有关。有了这些函数或函数块,为设计PLC通信程序提供了很大方便。

以下为两套S7-300通过以太网实现数据链运行网络指令实现通信的实例。运行程序前首先要做好网络组态,其步骤如下:

1)打开SIMATIC Manager,根据本系统要求,插入两个S7-300的站,插入CPU,并开始相应硬件组态。

2)分别插入两个系统的以太网模块。如图5-98所示在CPU314C-PtP机架上插入CP343-1模块。在弹出的“Properties-CP343-1”窗口上,用鼠标左键点击“Properties”按钮

3)之后,将弹出如图5-99所示的“Properties-Ethernet interface CP343-1”窗口。并在其上设置IP地址及子网掩码,并建立以太网。

4)另一S7-300站也做类似组态。组态完两套系统的硬件模块后,分别进行下载,然后用鼠标左键点击Network Configuration按钮,打开如图5-100所示的系统的网络组态窗口Net-Pro,并选中CPU314。

978-7-111-56641-0-Chapter06-114.jpg

图5-98 插入CP343-1模块

978-7-111-56641-0-Chapter06-115.jpg

图5-99 Properties-Ethernet interfaceCP343-1窗口

5)在窗口的左下部分点击鼠标右键,插入一个新的网络链接,并设定链接类型为ISO-on-TCPconnection或TCP connection或UDP connection或ISOTrans-port connection,如图5-101所示。

978-7-111-56641-0-Chapter06-116.jpg

图5-100 网络组态窗口上选中CPU314

6)以上选定后,用鼠标左键点击“OK”按钮,将弹出如图5-102所示的“Properties-ISO-On-TCP Connection”(链接属性)窗口。使用该窗口的默认值,并根据图a对话框右侧信息再进行有关程序块的参数设定:

7)当两套系统之间的链接建立完成后,用鼠标选中图标中的CPU,分别进行下载。

8)到此为止,系统的硬件组态和网络配置已经完成。下面进行系统的软件编制,在SIMATICManager界面中,分别在CPU314C-2PTP、CPU314C-2DP中插入OB35定时中断程序块和数据块DB1、DB2,并在两个OB35中调用FC5(AG_Send)和FC6(AG_Recv)程序块,如图5-103所示。

978-7-111-56641-0-Chapter06-117.jpg

图5-101 插入新连接

978-7-111-56641-0-Chapter06-118.jpg

图5-102 Properties-ISO-on-TCP connection窗口

9)创建DB1、DB2数据块,如图5-104a所示。

10)两套控制程序已经编制完成,分别下载到CPU当中,将CPU状态切换至运行状态,就可以实现S7-300之间的以太网数据交换了。这时,用鼠标左键点击编程窗口的“View”菜单项下的“DataView”项,切换到数据监视状态,在图5-104所示的窗口上观测。从站可看到CPU314C-2DP的DB1数据发送到CPU314C-2PtP的DB2情况。

978-7-111-56641-0-Chapter06-119.jpg

图5-103 调用FC5(AG_SEND)、FC6(AG_RECV)程序块

除了上述两套连接,也可多套连接。一个实例就是沈阳旭风电子公司为本溪钢厂辽宁冶金技师学院所配置的S7-300实验室。该系统有20个实验台。每台都配置有S7-300及其以太网模块。同时还都配置计算机及以太网卡。这40个以太网接口都通过交换机连接,组成星形拓扑的因特网。20台计算机、PLC站点都有自身唯一的IP地址。如图5-105所示,每台PLC站点还分别命名为IE1~IE20(但该图仅显示部分站点)。

图5-105用鼠标左键点击了IE1站点的CPU图标,从图下方可见到这里以组态的连接。指明了连接的类型是UDP connection,自身及连接对方的IP地址。当然,为了PLC间交换数据,连接双方的PLC还都得两定义数据块,编写相应程序调用FC5、FC6功能块。而网络上的任何计算机,如运行Step7软件则可与网络上的任何一台PLC联机编程、监控。当然,计算机间做好设置相互访问也是可以的。由于这里是实验室,用的是普通交换机,网络的实时性、确定性不是很理想。但作为实验、熟悉以太网组态及编程应用还是很理想的。再就是这里站点间建立连接的数量是有限制的。具体与因特网模块的性能有关。

3.三菱PLC网络指令通信

所用的网络指令很多,也多与使用通信模块、网络或协议有关。表5-15所示为它的Q不同协议使用的通信指令。

978-7-111-56641-0-Chapter06-120.jpg

图5-104 CPU314C-2DPDB1及CPU314C-2PtPDB2数据块及其监视画面

978-7-111-56641-0-Chapter06-121.jpg

图5-105 多套以太网连接实例

5-15 三菱PLC网络通信命令

978-7-111-56641-0-Chapter06-122.jpg

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

我要反馈