当前位置:首页 > 演讲稿 > c# 组态软件变量排序【工业组态软件直接地址变量重叠检查的设计与实现】
 

c# 组态软件变量排序【工业组态软件直接地址变量重叠检查的设计与实现】

发布时间:2019-07-10 03:58:59 影响了:

  摘 要:工业组态软件中(DCS、PLC)涉及到大量的直接地址变量应用,这些变量是由用户定义到指定的地址,正是这种灵活的定义变量方式可能导致变量共用一块内存。这种情况有的属于用户定义,操作内存的值,另一种情况是用户无意中定义的。文中通过研究分析这些直接地址变量在内存分配中的特点,探寻一种算法结构,在允许的时间和空间上查找到重叠的变量。
  关键词:工业组态软件;直接地址变量;DCS;PLC;重叠检查
  Research an implement of checking the directly address
  variables overlap in configuration softeware for industy
  YU Zhi-Wen
  (Beijing HollySys Co.,Ltd, Beijing 100176)
  Abstract: There are many directly address variables and they are mostly used in industrial configuration software.These variables are defined by the user for the specified address,the way which is the flexible definition of variables may result in variables in memory using the same time . This happens to have deliberately or unintentionally.We research and analysis these directly address variables to find an algorithm which can solve our problems with less time and space.
  Keywords: configuration software for industry;directly address variable;DCS;PLC;overlap checking
  工业组态软件,也称组态监控软件系统软件,是指用于数据采集与过程控制的专用软件。组态软件的应用领域很广,可以应用于电力系统、给水系统、石油、化工等领域的数据采集与监视控制以及过程控制等诸多领域。
  目前常用的工业组态软件是DCS(分布式控制系统,Distributed Control System)、PLC(可编程逻辑控制器,Programmable Logic Controller)等。这些组态软件都支持用户在某一内存或者特殊内存区自定义变量,即直接地址变量,直接地址变量和用户没有指定具体地址的变量在内存分配上是有区别的。直接地址变量的定义有可能会导致多个变量占用同一块内存。
  正是由于这种灵活的定义变量方式导致了以上问题的出现。本文将研究这些直接地址变量的特点并且提供一种算法来检查工业组态软件中这些直接地址变量。造成变量重叠的原因有以下两种:第一是用户希望通过这种内存重叠的变量操作达到想要的内存数据或者修改对应的内存数据;第二则是用户在无意中定义的多个直接地址变量操作了同一块内存,导致内存中的数据被修改(此处的修改也许是用户不想发生的)。第二种情况是需要提示给用户,否则由这些变量参与的组态逻辑下装到各控制器中后,周期运行时,会导致组态逻辑运算出错、控制器死循环等一系列危险情况。
  本文对直接地址变量重叠检查的研究已成功应用到了实际的组态软件中(国内著名的自动化企业PLC控制软件)。
  1 分析与设计
  本节将首先通过对直接地址变量在内存中分布特点进行研究与分析,然后设计一种算法,检查某一内存区域的直接地址变量。
  1.1 重叠变量的分析
  在一个组态软件中,会划分出不同的模块,这些直接地址变量会定义到不同的模块中,假定各个模块已经将这些直接地址变量收集,并且按照各个变量的偏移(变量相对于某块内存的位置)放入一个数组中,数组中的成员是列表形式的,这样可以将同一个偏移处的变量连接到一个数组下标中,而同一个数组下标处的变量,我们可根据各个变量的大小,按照升序的方法存入列表。如图1所示就是放入数组的两个直接地址变量。
  见图1可知变量a和b的偏移都为2,a变量大小为1个字节,b变量大小为2字节,按照变量大小升序放入下标为2的地址处。
  (1)直接地址变量的简介
  这里我们简单介绍一下直接地址变量。第一种直接地址变量称为位变量,如a :%MX0.1,类型为 BOOL,第二种直接地址变量称为非位变量,例如 b:%MD4。由于组态软件的不同,直接地址变量定义所在的内存区也可能不同,也有可能是I、Q等内存区。D代表DWORD类型,组态软件中还支持B(BYTE)、W(WORD)等类型。
  接下来我们通过图2的数据结构来表示直接地址变量在某快内存中重叠的现象。首先定义有如下的变量。
  a:%MX0.2,类型为 BOOL,位变量,大小为1位;
  b:%MX0.2,类型为BOOL,位变量,大小为1位。
  c:%MD0,类型为BYTE,非位变量,大小为1字节;
  d:%MD0,类型为 DWORD,非位变量,大小为4字节;
  e:%MW2,类型为 WORD,非位变量,大小为2字节;
  f:%MD4,类型为DWORD,非位变量,大小为4字节。
  上图表明变量a、b、c、d、e、f在M这块内存中存放的数据结构,利用这种数据结构存放变量可以清晰的查找同偏移处的所有变量,而且升序的存放方法为后续的地址重叠查找带来很大的方便。
  (2)内存中直接地址变量分析

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3