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

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

时间:2023-07-01 理论教育 版权反馈
【摘要】:在串口连网的平台上,通信主动方PLC处于自由协议模式,根据通信被动方PLC厂商的通信协议,调用有关串口通信指令或函数实现与被动方PLC通信。但要弄清PLC的通信协议。以下以欧姆龙PLC为例介绍此类通信。这里PLC1为通信主动方,用自由协议,设定为RS-232模式,要执行发送与必要的接收程序;而PLC2为被动方,用Host Link协议,设定为Host Link模式,不用执行程序。其含义是使对方PLC的0100通道的各个位置1。

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

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

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

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

以下以欧姆龙PLC为例介绍此类通信。这里PLC1为通信主动方,用自由协议,设定为RS-232模式,要执行发送与必要的接收程序;而PLC2为被动方,用Host Link协议,设定为Host Link模式,不用执行程序。

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

978-7-111-39745-8-Chapter07-120.jpg

图6-87 协议通信准备程序

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

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

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

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

978-7-111-39745-8-Chapter07-121.jpg

图6-88 变量设置

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

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

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

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

978-7-111-39745-8-Chapter07-122.jpg

图6-89 编辑变量及高级设置窗口

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

978-7-111-39745-8-Chapter07-123.jpg

提示:欧姆龙新型PLC有FCS指令,可用以FCS计算。

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

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

提示:欧姆龙CJ机还支持Modibus RTU协议。可作为主站发送Modibus RTU协议命令,与对方作为Modibus RTU协议从站的PLC或智能装置通信。其细节见本章6.8.5节。

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

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

我要反馈