首页 理论教育 PLC自由协议通信编程优化技巧

PLC自由协议通信编程优化技巧

时间:2023-06-23 理论教育 版权反馈
【摘要】:而这一就绪则是用辅助继电器A392.14和A392.06ON表示。在主动发起通信的同时,仍可使用HostLink协议被动通信。设定可使用CX-Programmer软件,通过USB接口与PLC联机后进行。联机后,首先要使PLC处于编程状态。图7-30a所示为PLC1为定时

PLC自由协议通信编程优化技巧

1.OMRONPLC串行接口通信指令

自由协议通信双方都要用到串行接口通信指令。OMRON串行接口指令较多。同样指令,机型不同,功能也不完全相同。表7-3所示为CJ系列PLC的串行接口指令。

7-3 CJ系列机串口指令

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

串行接口帧格式也有多种,如图7-26所示。使用什么帧格式,由调用指令时使用的控制字决定。

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

图7-26 帧格式

(1)发送指令TXD。用以向串行接口发送数据,指令的梯形图格式如下:

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

这里,S———指定发送数据存放的首地址

C———控制字;

N———指定发送数据的字节数。

执行本指令,将从串行接口发送操作数N指定字节的数据。数据的开始地址由操作数S指定。选用哪个串行接口及通信帧格式由控制字C指定。控制字C的含义如图7-27所示。

不过,数据真正发送还需在串行接口发送准备就绪后才能实现。而这种就绪则是用辅助继电器A392.13(对通信板1)和A392.05(对通信板2)ON表示。

最多可发送的字节数为259B。但除去帧的开始及结尾,真正包含的数据最多为256B。

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

图7-27 发送控制C字含义

(2)接收指令RXD。用以

从串行接口读取数据,指令的梯形图格式如下:

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

这里,D指定接收数据存放的首地址,C为控制字,N为指定接收数据的字节数。

执行本指令,将从串行接口接收数据N指定字节的数据,并予以存储。数据存储的开始地址由操作数D指定。选用哪个串行接口及通信帧格式式由控制字C指定。控制字C的含义如图7-28所示。

不过,数据接收还需在串行接口接收准备就绪后才能实现。而这一就绪则是用辅助继电器A392.14(对通信板1)和A392.06(对通信板2)ON表示。

最多可接收的字节数为259B。但除去帧的开始及结尾,真正包含的数据最多为256B。

使用发送、接收指令,首先要做好串行接口设定,其次还要弄清有关通信控制与状态辅助继电器的含义及使用。表7-4所示为有关辅助继电器的功能及说明。

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

图7-28 接收控制字含义

7-4 串行接口有关辅助继电器功能及说明

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

提示:早期OMRONC系列机没有串行接口指令。串行接口只能按HostLink协议被动接受通信。自C200Hα型PLC后,才有串行接口指令,才可主动发起通信。在主动发起通信的同时,仍可使用HostLink协议被动通信。但对CJ型PLC来说,当处于Host Link协议时,不能调用通信指令,而处于RS-232模式时,才可调用。

2.OMRONPLC串行接口通信,一台发送数据,另一台接收数据程序实例

两台PLC通信,PLC1定时发送数据,PLC2随时接收。在通信前,首先要分别对两台PLC都做好串行接口设定。设定可使用CX-Programmer软件,通过USB接口与PLC联机后进行。图7-29所示为串行接口1设定的情况。

联机后,首先要使PLC处于编程状态。接着打开设定窗口。这里选用通信板1,即串行接口1。从图7-29可知,通信设置为定制,即用户自定。图中1,选波特率为9600bit/s,格式为8,2,N,表示为8位数据位(可保证传送所有二进制数据),2位停止位,无奇偶校验。图中2所示的通信模式为RS-232C,接收字节数为16B,不用起始码及结束码。这样选择,所使用的数据区不超过16B。

设定后,点击窗口上“选项”下拉菜单,再在其上,选“传送到PLC”项(图中4)。按提示操作,将把这里的设定下载给PLC。

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

图7-29 串行接口1设定

a)PLC设定窗口 b)下拉菜单 c)PLC设置检验窗口

下载后,可再在“选项”下拉菜单中,选“校验”项,将进行是否下载成功的检查,如成功将弹出“PLC设置检验”窗口,并提示“检验成功”,否则将显示“检验错误”。

提示:有时,设定下载后,须对PLC重新上电,设定才能生效,即检验才能成功。

除了设定,还要编程。图7-30a所示为PLC1为定时发送数据程序。而图7-30b所示为PLC2定时接收数据程序。

从图7-30可知,两个程序都是先进行初始化,做好通信准备。图7-30a把D100(控制字)赋值十六进制数100(使用串行接口1,无起始及结束字节,先发送高字节),D101赋值为十六进制数10(发送16B、8个字)。图7-30b把D103(控制字)赋值为十六进制数100(使用串口1,无起始及结束字节,先发送高字节),把D104赋值为十六进制数10(发送16B、8个字)。

进而,都是进行定时器调用,目的都是生成1s脉冲信号T1。接着PLC1是在发送就绪标志ON及定时时间到时,调用发送指令。而PLC2是在接收完成标志ON及定时时间到时,调用接收指令。

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

图7-30 PLC定时发送、接收数据程序

a)发送数据程序 b)接收数据程序

可知,PLC1执行图7-30a程序,将相隔1s钟都将把D0~D7间8个字、16B的当前值向PLC2发送。当然,不用定时发送,而用先设置逻辑条件,在条件满足时发送也是可以的。

而PLC2执行图7-30b程序,将相隔1s将把从串行接口读取的数据,存入D200~D207间8个字、16B中。

由于这里用的是RS-232C接口,是全双工的,所以当两台PLC同时都运行既有发送指令又有接收指令的程序,那么即可做到,各PLC都可把自身D0~D7的8个字的数据,写到对方的D200~D207的8个字中,实现实时的数据相互交换。(www.xing528.com)

一般讲,数据发送比数据接收要简单些。发送准备就绪,执行发送指令总能把数据发出。但数据接收则比较麻烦些。当串行接口出错、接收数据溢出等情况,将不能接收数据。有时,还可能出现数据存储“串位”。图7-31所示为改进的数据接收程序。

从图7-31可知,程序总是进行接收计数器与设定的接收数据字节设定值比较,一旦出现前者大、等于后者,将执行接收指令;之后还使串口复位、初始化,为新的接收作准备。而且,一旦串行接口出错,即标志A392.12ON,也将初始化串行接口,经实际调试,效果更好。

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

图7-31 改进的数据接收程序

3.OMRONPLC串行接口通信模块通信指令

OMRONCJ1、CP1H等机型还可配置串行接口通信模块。它不能使用上述串行接口指令,而要用自身的通信指令。

(1)发送指令。用以发送数据,其梯形图格式为

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

这里,S———指定发送数据存放的首地址;

C———控制字;

N———指定发送数据的字节数。

执行本指令,将从S到S+(N/2)-1源字中读取数据,在串行接口通信模块处于自由协议模式下,将所读数据向通信对方发送。选用哪个模块、模块上哪个通信口以及通信帧格式由控制字C及C+1指定。控制字C及C+1的含义如图7-32所示。

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

图7-32 发送控制字含义

与TxD命令不同的是,它的控制字有两个:C仅用于低字节,功能与TxD的相同;C+1是新加的,其低字节用以指定通信模块的地址。通信模块的地址与所设定的机号有关,可按下式计算:

80(十六进制)+4×机号(对口1)

或 81(十六进制)+4×机号(对口2)

其高字节的第8~11位,指定使用模块上的串行接口0(设定值为0)或1(设定值为1)。高字节的第12~15位,指定通信使用的逻辑通信口,在0~7之间选择。因为通信模块通信要接收FINS协议管理。不同通信口可共用一个逻辑通信口,但同时只能一个使能(Enabled)。使能与否,分别由辅助继电器A202.00~202.07的状态位(对应逻辑口0~7)显示。还有其它一些辅助继电器,其功能见表7-5。

7-5 有关辅助继电器功能

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

此外,使用串信接口通信模块通信所作的设定不像CPU模块上的串信接口,使用CX- Programmer软件设定窗口进行设定。而用I/O表及其设置项进行。也可对指定的相关数据区赋值实现。相关数据区与设定模块机号有关。其计算公式如下:

m=D30000+100×单元编号CH

n=1500+25×单元编号

而对CP1H机,其计算公式为

数据存储区:m=D30000+100×模块机号

核心I/O区:n=CIO1500+25×模块机号

而这些内存区的设定及状态如表7-6、7-7所示。

7-6 有关数据存储区的设定及状态

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

(续)

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

7-7 有关内存位状态

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

图7-33所示为这个指令的使用实例。

本例的使用模块的机号设定为2;用端口1;所使用数据区为D30205为1100hex,含义为使用帧起始、结束代码;D30204为203hex,含义是制定帧起始代码为02hex(ST)、结束代码为03hex,D30205设定为003hex。

控制字C设为1hex,C+1为3112hex。含义为低字节先发送,指定逻辑端口3,使用串行接口1及串行接口通信单元地址为12hex。

结合本例,如果原数据区的内容如图7-34a所示,那么,对应所发送的字符串将是如图7-34b所示。

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

图7-33 使用发送指令程序

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

图7-34 原数据区内容

执行本程序,只要逻辑通信接口3使能(A202.03ON)、指令又不是执行中(1559.05OFF),当0.0 ON时,将把字符串“ST”+“1234ABCDEF”+“ED”发送给通信对方。

(2)接收指令。其梯形图格式为:

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

执行本指令,将从通信模块的串口上,接收通信对方发送的、由操作数N指定字节的数据。所接收数据存储开始地址由操作数D指定。而选用从哪个模块、模块上哪个通信口接收,以及通信帧格式由控制字C及C+1指定。控制字C及C+1的含义如图7-35所示。

与RxD命令不同的是,它的控制字有两个:C仅用低字节,功能与RxD的相同;C+1是新加的,其低字节用以指定通信模块的地址,通信模块的地址使用及相关设置与TXDU指令相同。

提示:CJ系列机有关串行接口通信模块有多种型号与版本。不是所有机型都支持这两个指令。是否支持,在使用之前可用CX-Programmer软件对其进行配置,如可设置成自由协议通信模式,则支持;否则不支持。

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

我要反馈