AB SLC500通讯指令的灵活运用 点击:568 | 回复:2



PLCsystem

    
  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2016-07-06 13:06:16
楼主

AB SLC500通讯指令的灵活运用

 

 

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

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

Abstract: According to the characteristics of the AB DF1 communication protocol, When making point (master station) to multipoint (slave station) communication, The master station can communicate with each slave station one by one in turn  only through the main round robin scanning way. But with the increase in the number of slave station, Can only continue to increase the number of MSG;then the procedure response time, Scan cycle also grow in pace with the former in linear.It will cause some conflict in the FIFO on account of asynchronous execution in this process. In this article, We try to change the MSG control word to realize the reuse of the procedure;And through the establishment of the FIFO to realize the Automatic schedule of the system communication, so as to shorten the system response time.

Key word: MSG control word;FIFO;Program schedule


1  引言

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

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


2  SLC500通讯指令简介

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

2.1   RSLogix 500的通讯体系结构

RSLogix 500的通讯体系结构由三个基本的部分组成:

(1)梯形图扫描(Lader Scan);  

(2)通讯缓冲区(Communications Buffers);

(3)通讯队列(Communication Queue)。

它们决定了处理器传送消息的动作特征。

当MSG指令使能,如指令内定义的是读命令,则指定的信息和数据被传送到通讯缓冲区内。处理器继续扫描梯形图程序的其他部分。一般在一个扫描周期结束后,信息被处理,并且通过通讯通道发送出处理器。

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

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


2.2    RSLogix 500  MSG指令介绍

读MSG

  


写MSG     
      


在编程时,把MSG指令块放入程序之后,需确定如下参数。

Read/Write:Read本地处理器接受数据,Write本地处理器发送数据.

Target Device:从站设备类型。

Local/Remote:本地/远程选择。

Control Block:是用户选择的整数文件地址,该文件有14个元素。 用于存储状态位,目标文件地址,及与通讯指令有关的其它数据。

Control Block Length:控制块长度为14个元素,此区域不能改变。

Control Block:控制块结构

实际使用中,控制块结构如下所示:


 


3  目标控制系统结构

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

3.1 网络结构图
    

3.2 控制方式

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

3.3 程序分析

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

通过对控制块结构的分析,每个MSG控制块的数据配置内容如下:


   

计时器预设值

   

Message Timeout

   


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

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

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

3.4 程序改进工作

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

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

(1)    通讯调度实现

通过建立操作事件队列(FIFO),实现对分站通讯动态调度,优先满足操作人员监视、操作设备的通讯。如:在操作分站时,优先执行该站通讯,避免了轮询通讯时间延时的影响。

(2)    数据的存储规划

通过复用MSG指令,完成对所有站通讯功能。因此需要对各个分站的工艺数据存储进行分配,以使MSG和数据传送程序实现复用。

(3)    通讯故障处理

当从站通讯异常时,为了不影响系统扫描周期,下次扫描时就不再对该站通讯。这要求对从站错误信息进行有效的记录。当需要对这些站进行通讯重试时,通过人工的手动复位来完成。


4  程序编写

  存储空间的分配

(1)MSG控制块地址

       根据前述要求,对MSG控制块所用数据地址进行了统一规定,以确保不同的通讯动作共用同一组存储地址,调用同一MSG控制块,完成不同的通讯功能。

(2)数据存储地址

       根据MSG控制块地址分配情况,设计了所有从站的读、写数据存储格式和地址分配方案,以实现数据传入、传出部分程序的复用。

(3)通讯故障记录地址分配

给每个分站分配了1位地址,用来记录该站的通讯状态是否正常。


  程序流程图


     

(1)判断操作

程序判断HMI操作站是否有操作。如有,HMI操作站会将操作站号写在指定的存储空间。并将指针下移一位。PLC通过检查指针移动,来判断HMI操作站是否有操作。

(2)取操作数

     当PLC判断为有HMI操作时,取出操作站号,并将指针复位。此段程序实现PLC对HMI操作站的快速反应。消除了轮询通讯的影响。

(3)顺序取数

     当PLC判断HMI操作站没有操作时,则会取顺序数发生器的数据,此数据是循环变化的,在没有HMI操作站操作时,实现对每个站的轮询通讯。

(4)故障判断

     完成上述(2)(3)任一步,即得到通讯站号,将该数值装入指针进行查表,即可得到从站健康状态。如果正常则继续向下,否则走回第一步,忽略故障从站。

(5)MSG站号赋值

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

(6)MSG写操作判断

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

(7)执行写MSG

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

(8)执行读MSG

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

(9)读数据处理

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

(10)错误记录

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

4.3 程序的编写

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


5  结束语

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

 

参考文献

[1] SLC 500 Instruction Set Reference Manual.

[2] SLC 500 Family of Programmable Controllers.

[3] DF1 Protocol and Command Set.

[4] 严蔚敏,吴伟民.数据结构.  




楼主最近还看过



李东泽

  • [版主]
  • 精华:7帖
  • 求助:25帖
  • 帖子:1209帖 | 6375回
  • 年度积分:216
  • 历史总积分:44409
  • 注册:2010年3月25日
发表于:2016-07-06 14:47:22
1楼

不错的分享,感谢楼主!

平常心心常平

  • [版主]
  • 精华:36帖
  • 求助:17帖
  • 帖子:958帖 | 3831回
  • 年度积分:0
  • 历史总积分:24794
  • 注册:2002年3月24日
发表于:2016-08-29 12:07:25
2楼


引用 李东泽 的回复内容: 不错的分享,感谢楼主!



热门招聘
相关主题

官方公众号

智造工程师