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

PLC串口协议通信编程优化方案

时间:2023-06-23 理论教育 版权反馈
【摘要】:有的PLC,如OMRON CPM2A型PLC,处于协议模式下也可执行通信指令,那通信的主动方也可处于协议模式下通信。用协议通信虽较为简单,但要弄清PLC的通信协议,否则这样的通信是无法实现的。PLC2为被动方,用HostLink协议,设定为HostLink模式,不用执行程序。图7-36所示为协议通信准备程序。

PLC串口协议通信编程优化方案

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

图7-35 控制字设置

注:在串行接口No(物理端口)中指定00hex,在对方机号地址中能够直接指定串行接口的机号地址(串行接口1:80hex+04hex×单元编号串行端口2:80hex+04hex×单元编号)

在串行接口联网的平台上,通信主动方PLC处于自由协议模式,根据通信被动方PLC厂商通信协议,调用有关串行接口通信指令或函数实现与被动方PLC通信。

与自由协议通信不同的是,协议通信只需在主动方执行发送通信命令的程序,而被动方无须执行通信程序。协议通信另一好处是,被动方可以是低档的、不具备串行接口通信指令的PLC,如OMRON CPM1A型PLC。

有的PLC,如OMRON CPM2A型PLC,处于协议模式下也可执行通信指令,那通信的主动方也可处于协议模式下通信。

用协议通信虽较为简单,但要弄清PLC的通信协议,否则这样的通信是无法实现的。

PLC1为通信主动方,用自由协议,设定为RS-232模式,要执行发送与必要的接收程序。PLC2为被动方,用HostLink协议,设定为HostLink模式,不用执行程序。

图7-36所示为协议通信准备程序。而调用发送指令的细节与自由协议通信相同,在此不再重复。该程序的通信命令为ASCII字符串,本例为“@00WR0100FFFF”。其含义是使对方PLC的0100通道的各个位置1。

提示:要使这个通信命令实现,还要预先把对方PLC处于监控模式。如果处于“运行模式,则是无法改写PLC数据的。

提示:有关HostLink协议及FCS(校验码)见本章7.2.5节介绍。

该程序运行开始时,即把命令用的ASCII字符的十六进制值,用双字传送指令赋值给D100到D107中(D107仅用高字节)。接着调用FCS功能块,以进行校验码计算。这是Host Link协议要求的。校验码是上述命令字符ASCII码十六进制制值的异或而得的。占两个字节。不足两个字节时,高位应补0,加在上述命令码之后。

计算FCS校验码功能块用ST(结构化文本语言)编写。其变量设置如图7-37所示。这里有输入变量、输出变量及内部变量。

其中图7-37a所示内部变量定义为字数组变量,而且用AT地址,即与实际内存地址关联,所以,图7-37a所示数组虽为内部变量,但实际为实际内存地址,因此,实质上是用作通信命令字符串的输入。图7-37c所示输入变量dNum,为无符号整型数INT,指明通信命令字节数。图7-37b所示输出变量为字FCS,存放校验码ASCII字符的十六进制值。

图7-37a所示数组设定如图7-38所示。图中“编辑变量”窗口是功能块在选择插入变量时打开的。

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

图7-36 协议通信准备程序

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

图7-37 变量设置

a)内部变量 b)输出变量 c)输入变量

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

图7-38 编辑变量及高级设置窗口

从图7-38可看出,在打开的“编辑变量”窗口上,有“高级”按钮项(只有内部变量编辑时此按钮才激活)。单击此“高级”按钮,将弹出“高级设置”窗口。之后,可在“高级设置”窗口上,选择“数组变量”,并定义数组大小(本例选用50);再选择“AT(指定地址)”,规定的可在为D0~D32718范围内选择(本例选D100)。选择后,单击“确定”按钮,高级设置成功,并关闭“高级设置”窗口。再在“变量设置”窗口上,单击“确定”按钮,数组设定成功,并关闭“变量设置”窗口。

经过这样设置,数组下标0,将指向D100;下标1,将指向D101。余类推。建立与实际地址关联的数组,为计算FCS提供了方便。

而用ST语言编写的计算FCS校验码的程序代码如下(代码含义见注释):

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

提示:OMRON公司新型PLC有FCS指令可用以FCS计算。

在图7-36程序中,W0.00ON时,将调用XFER指令,把D100~D107之间7个字的值,即上述命令码,依次传送给D300~D306。接着调用“ASC”指令,把在D200中存储FCS的值转换为ASCII,并存入D220中。再调两次“MOVD”指令,实现把FCS两个字节加在命令码之后。之后,再调“逻辑或”及“MOV”,在命令字符串的最后,再加上字符“∗”(十六进制值2A)及回车符(十六进制值0D0)。最终按HostLink协议,把编辑后的命令字符串存放在D300~D308(D308仅使用其高字节)中。

有了合乎HostLink协议的通信命令字符串,调用命令发送指令,即可发送通信命令。如通信正确,则使对方PLC的0100通道的各个位置1。当然,也可使0100字的各个位置不同的值。

提示:OMRONCJ型PLC还支持ModbusRTU协议。可作为主站发送ModbusRTU协议命令,与对方作为ModbusRTU协议从站的PLC或只能装置通信。其细节见本书第10.2节。

提示:对被动方而言,协议通信的命令并不是PLC要执行的指令,而是一种能为PLC识别的操作要求。PLC接收通信命令后,将按要求,与对方交换数据,或进行相应的操作。

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

我要反馈