MSG指令在SLC500中的运用

时间:2022-10-11 02:07:11

摘 要:根据AB DF1通讯协议的特点,在进行点(主站)对多点(从站)通讯时,主站只能通过程序显式调用,以轮循扫描的方式,对各个分站进行依次逐个通讯。但随着通讯分站数量增加,只能不断增加MSG指令的数量,使得程序反应时间和扫描周期同步线性增长,而在这一过程中,由于异步执行问题,还存在MSG指令占用队列,相互影响的情况。针对这一问题,本文通过改变MSG控制字,实现程序复用;并通过队列(FIFO)的应用,实现系统对通讯操作的自动调度,实现了缩短系统响应时间的目的。

关键词:MSG控制字;FIFO;程序调度

中图分类号:TP273

在应用单主从网络通讯的控制系统中,随着节点数量的增多、导致网络通讯负荷同步上升,出现了系统数据更新周期延长,无法满足控制系统的数据采集实时性、操作安全性要求的情况。

针对这一问题,本文通过对工程实例中通讯程序的优化,实现了对控制系统通讯性能、功能的改进;并且通过对通讯指令的技术处理,简化了程序编写。

1 SLC500通讯指令简介

MSG指令用于在AB PLC通讯网络上的节点之间传送数据。当该指令备使能时,信息传递被挂起。在扫描周期末尾时异步执行数据传送。

RSLogix 500的通讯体系结构。RSLogix 500的通讯体系结构由梯形图扫描(Lader Scan)、通讯缓冲区(Communications Buffers)、通讯队列(Communication Queue)三个基本的部分组成,它们决定了处理器传送消息的动作特征。

RSLogix 500内共4个通讯缓冲区。当在一个通讯指令结束前,它的信息和数据被传送到其余未用的一个通讯缓冲区内。当四个缓冲区全满,第五个通讯指令又要被处理时,通讯信息放在通讯队列中(注意,不是要传送的数据)。通讯队列是另一个信息存储空间,存储了那些还没有被分配缓冲区的通讯指令。通讯队列的操作顺序是先进先出(FIFO),它可容纳梯形图中所有的通讯指令。缓冲区和队列机制都是完全自动执行的。通讯缓冲区被自动分配和释放,当缓冲区满时,后到请求则自动进入队列。

因为通讯队列中不是存储要传送的数据,所以如果一条通讯指令在队列中移出,处理器实际发送的数据和通讯指令第一次被扫描时可能不同。

2 目标控制系统结构

这里以点对多点的通讯方式构建控制系统。中央控制室装有主CUP(主站),就地设备分别配置独立的CPU(从站)。控制系统需完成集中监视并控制就地从站的功能。

2.1 网络结构图

图1

2.2 控制方式。从站CPU采集的数据通过MSG指令,传输到主站CPU,并接收主站CPU操作指令,启停就地设备。

2.3 程序分析。如果对每个站都使用前述所示的通讯设置,每个站按配置最少一个读MSG和一个写MSG通讯计算。那么在主站程序中,要出现200个MSG指令。

根据以上分析,通过联机实验发现:上表中六组控制字,除了Size inElements不能通过赋值语句写入外,其他控制字均可在程序运行时更改。

根据分析结果,在分站程序规划时,设定每个站的情况相同,即上述通讯参数不变,至此,需要改变的数据只剩下分站节点号Local Node Address。

对于写MSG参数设置,除Data Table Address数据填写与工艺要求相关外,与上述完全相同。

2.4 程序改进工作。经过上面的分析,有可能实现这样的目标,即:减少MSG指令的重复。使控制系统需要完成的全部通讯功能,通过重复使用的MSG指令,即只用一个读指令和一个写指令来完成。同时,通过自动写入MSG目标地址实现动态通讯调度,并实现完善的通讯队列溢出、故障处理。

为达到这一目的,进行了如下工作。

(1)通讯调度实现。通过建立操作事件队列(FIFO),实现对分站通讯动态调度,优先满足操作人员监视、操作设备的通讯。如:在操作分站时,优先执行该站通讯,避免了轮询通讯时间延时的影响。(2)数据的存储规划。通过复用MSG指令,完成对所有站通讯功能。因此需要对各个分站的工艺数据存储进行分配,以使MSG和数据传送程序实现复用。(3)通讯故障处理。当从站通讯异常时,为了不影响系统扫描周期,下次扫描时就不再对该站通讯。这要求对从站错误信息进行有效的记录。当需要对这些站进行通讯重试时,通过人工的手动复位来完成。

3 程序编写

3.1 存储空间的分配:(1)MSG控制块地址。根据前述要求,对MSG控制块所用数据地址进行了统一规定,以确保不同的通讯动作共用同一组存储地址,调用同一MSG控制块,完成不同的通讯功能。(2)数据存储地址。根据MSG控制块地址分配情况,设计了所有从站的读、写数据存储格式和地址分配方案,以实现数据传入、传出部分程序的复用。(3)通讯故障记录地址分配。给每个分站分配了1位地址,用来记录该站的通讯状态是否正常。

3.2 程序流程图:(1)判断操作。程序判断HMI操作站是否有操作。如有,HMI操作站会将操作站号写在指定的存储空间。并将指针下移一位。PLC通过检查指针移动,来判断HMI操作站是否有操作。(2)取操作数。当PLC判断为有HMI操作时,取出操作站号,并将指针复位。此段程序实现PLC对HMI操作站的快速反应。消除了轮询通讯的影响。(3)顺序取数。当PLC判断HMI操作站没有操作时,则会取顺序数发生器的数据,此数据是循环变化的,在没有HMI操作站操作时,实现对每个站的轮询通讯。(4)故障判断。完成上述(2)(3)任一步,即得到通讯站号,将该数值装入指针进行查表,即可得到从站健康状态。如果正常则继续向下,否则走回第一步,忽略故障从站。

图2 程序流程

(5)MSG站号赋值。此段程序将通讯目标的站号、相关数据,通过传送程序,写入MSG指令的预设控制字中,实现MSG指令复用。

(6)MSG写操作判断。当HMI操作站没有操作时,无需执行写通讯命令。因此,执行完此程序后,要么执行写MSG指令,否则直接跳转至读MSG指令,使得通讯周期几乎减半。这也是减少扫描周期的关键所在。

(7)执行写MSG。此段程序只有在HMI操作站操作后执行。此段主要完成对HMI操作站操作的立即响应。

(8)执行读MSG。不管从上述两段程序哪一个跳转过来的,此段是必需执行的通讯。完成对从站的状态监控。

(9)读数据处理。此段主要将从各分站读取的数据,根据从站地址,散转到预先分配的存储区域,供其他程序使用。完成此段,程序进入下一循环。

(10)错误记录。此段主要对不能正常通讯的从站号进行记录,并进行相应的处理。在下次通讯时直接略过。以去除故障站点的扫描周期,减少故障站点对其他正常站点的影响。

3.3 程序的编写。有了上述的流程图,只要对RSLogix 500编程软件稍有熟悉,即可编写出此程序,这里不再讲诉。

4 结束语

本文通过对程序流程的合理处理,解决了单主从通讯网络的实时性的问题。并且指令运用和存储规划,简化了通讯程序,增加了通讯超时处理、通讯诊断、故障站点回避等功能。可为控制系统的通讯程序编写提供参考。

参考文献:

[1]SLC 500 Instruction Set Reference Manual.

[2]SLC 500 Family of Programmable Controllers.

[3]DF1 Protocol and Command Set.

[4]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2009.

作者简介:王福朝(1964.05-),男,本科,高级工程师,主要从事设备自动化研究,参与过南京汽车西班牙设备搬迁调试项目、南汽名爵英国设备搬迁调试项目等众多设备的调试、改造升级项目技术负责人。

作者单位:中国三安建设有限公司,西安 710043

上一篇:基于C语言的发牌程序的实现 下一篇:有关考勤管理系统的设计和实现分析