回复:用变址实现工艺矩阵编程构想!!

一直活着

  • 帖子

    352
  • 精华

    1
  • 被关注

    2

论坛等级:侠客

注册时间:2005-09-21

普通 普通 如何晋级?

发布于 2009-09-01 09:38:51

0楼

这是网上一个大侠的高论,希望对大家有益。
1.用字(双字)数组来存放工艺矩阵,上位机可随时变更。数组中每行代表一个工艺步,每位代表一个设备在该工艺步中应否运行或是打开/关闭等(由各个位按顺序排列所得到的相应的设备序列以下简称工艺设备序列)。
2.若要在每步运行后检测相应的设备的状态以便决定是否存在故障或是矩阵应否继续运行,则应增设多个字(双字)数组来存放每个工艺步所应检测的状态(每个数组代表一种要检测的状态,如自动状态为一个数组,设备开为一个数组,设备关一个数组等,该种数组以下简称检测数组)。该种数组与工艺矩阵数组维数和每行的位数相同,各位所代表的设备与工艺矩阵相同。或是某位为1,则代表该工艺步中要检测相应的设备状态。
3.PLC的I/O模块编址时,把同类型的信号放置在一起,并且同种信号的排列顺序按照工艺设备序列编排,如所有设备的自动状态放在连续的IO点上,所有的开停信号也放在连续的IO点上等。这样可方便操作。编程时,把同类型的信号直接移动或是通过移位和AND等逻辑操作移动到PLC的内存双字(字)或是数组中(该种数种称状态数组)。由于I/O编址时是同类型的信号放在一起,因而移动操作只需用很少的系统开销就可实现。(编址时不要按信号所归属的设备来编址,因为这样要实现把同种类型的信号移动到内存字(双字)要实现很多次的移动操作,系统开销较大。)状态数组与检测数组的维数及大小相同,各个位所代表的设备也相同。
4.把状态移动到状态数组时,若是某种设备不具备相应的某种状态,则把相应的该位置为0。如当前正在处理的是阀门的开尽状态,而对于电机类设备,则把对应的位置为0。若是处理某些互斥的状态,而I/O点只有其中的某一种时,则在编程中手动填入另一种状态,如对于电机的开/停状态,而I/O中只有开状态的,则应把开状态取反后放入关状态的数组。
5.在某个工艺步中,若要检测相应状态,只需把同一种状态相对应的状态数组和检测数组中对应的行进行异或操作,或结果为0,则表示当前无故障。若结果不为0,则表示为1的位所对应的设备的该种状态没有达到预期的要求。编者按程时可根据故障类别分别作出不同的响应。
6.在各个工艺步中,若要引用对应的各个设备的状态时,由于I/O编址、状态数组、检测数组和工艺矩阵数组均是按工艺设备序列来排列的,因而实现变址操作时十分方便。
7.可根据以上的思想;设置故障响应数组(可分为暂停矩阵数组,复位矩阵数组等),把上述第5点中进行异或操作后所得到的结果与相应的故障响应数组进行逻辑操作(如与操作),若结果不为0则执行相应的操作。
8.另应增设工艺运行时间数组和检测故障时间数组,用来存放每个工艺步所对应的应运行时间和进入每个工艺步后进行故障检测的等待时间。
可根据以上的思想增设特殊跳转数组,数组行数与工艺矩阵的行数相同,每位代表一种跳转条件,如位0代表COD超过50,位1代表1#DO超过2等。每个PLC周期检测相应的状态并组成一行(与特殊跳转数组位数及各位的含义相同),并与特殊跳转数组中相应的行相异或,若结果不为0,则代表要执行跳转,跳转到某个工艺步。若跳转的情况组合较为简单,则用少量的逻辑语句即可,若是较为复杂,则可另增设跳转矩阵。该矩阵为二维数组,行数与特殊跳转数组的行数相同,列数与特殊跳转数组的位数相同,每个无素代表在某个工艺步中,发生某种跳转条件下要跳转到的的相应工艺步。

长夜漫漫,无心睡眠!看西门子官方网站。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54758条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。