故事作者:moyb

最近创作

看看TA的故事

【软件编程】一个可以让客户自己编程的程序

已锁定

moyb

  • 帖子

    49
  • 精华

    1
  • 被关注

    2

论坛等级:游侠

注册时间:2018-01-31

普通 普通 如何晋级?

【软件编程】一个可以让客户自己编程的程序

6399

49

2021-02-18 08:29:14

大家有没有遇到过这样的客户,初期方案讨论时侃侃而谈,把设备的动作讲得一清二楚,但是当你按他讲的东西披星戴月的做出来后,他觉得这个要改、那个要调整,今天要增加一个步骤,明天要增加一个产品,三天两头改工艺。甚至有些人自己对具体的操作的步骤都时云里雾里的。

遇到这样的客户怎么办?如果做到只要做到客户自己能够随意改工艺路线,想让设备怎么动作就只要在触摸屏上点点就好了,岂不两全其美?所以最终方案就是做一个工艺路线的组态程序,正如下文所述。而且用这个编程方法,还有另外两个优点。其一、可以作为过程控制程序的标准模板,不再需要从头设计程序的框架结构,所有过程控制类的程序都可以直接套用这个程序结构。其二、对单个控制对象(例如一个双动作阀门、一个模拟量的液位计)所编写的程序,可以不加修改地直接用于所有其他项目中,复用率极高。当此类程序累积到一定数量后,编程时间将大为缩短,且错误极少,编程效率会达到一个令人惊叹的程度。

做这样的程序当然要用面向对象编程,分析好系统中的类和对象,最好用数组的形式建立对象,便于程序上的处理,而且可以适当的增加数组长度,以防客户将来增加硬件,到时候软件就不需要再改了。如果使用S7-1500的PLC,则可以用数组数据块,数组长度就是可变的了。除了完成每个对象固有的编程之外,还需要完成一个“工艺对象”的编程。

首先,对于每一个控制对象,列出所有的动作,通过对一个“指令”变量赋值,就能让它执行相应的动作,例如一个阀对象的指令有开阀和关阀两个,可以分别定义为“1”和“2”,再加上保持原来状态的指令,定义为“0”。对于每一个检测对象,则列出所有的状态,还是以阀为例,其状态有“全开”、“全关”、“正在开”、“正在关”、“故障”,5个状态,分别用1~5来定义。对于模拟量则需要离散化,比如要设定几个区间,或者定义一个运算过程,按运算结果来定义状态。此外,考虑到某一个检测对象的状态与某一步工艺无关,所以所有检测对象都还有一个“不相关”状态,也用”0”表示。

然后,把每个对象的状态和指令汇集成整个系统的状态集和指令集,即为所有对象的状态和指令的组合。把状态集和指令集分别定义在两张表中,并给每个状态和指令指定一个不可重复的序号。这两张表可以自动生成,优点是编程简单,缺点是可能浪费存贮空间、程序执行效率低。也可以人为逐条添加,优缺点则和自动生成正好相反。

接着还需要一个工序表,定义每一道工作步骤要进行什么样的操作,既执行哪一条指令。

最后再建立一个工艺表,定义每一道步骤执行后各种可能的状态下所对应的后序步骤,如果后序步骤为空值(实际用零表示)则表示该步骤为最后一步,所有工序执行结束。

至此,完成了一个小小数据库的设计,如图1所示。



这些表在博途中全部以UDT的数组(或数组数据块)形式建立。由于这些表都需要添加、修改和删除一条记录的操作,所以可以定义一个表的通用函数用于这些操作,用Variant数据类型作函数的输入输出接口。需要注意的是,对指令表的删除操作需要先确认工序表中是否有使用该指令的工序,如果有就不能删除该指令。否则将来执行相应工序时,就不知道要做什么了。同理,对状态表的删除操作也需要在工艺表中确认。

程序执行时,先从工序表中调入第一条工序作为当前工序,并按当前工序对应的指令序号在指令表中找出相应的指令进行操作,操作完成后,将设备的当前状态与状态表中的记录比较,找到对应的状态序号,然后用工序序号和状态序号在工艺表中找出后续工序序号,将后续工序序号赋值到当前工序,如此循环直到后续工序为空值。下图展示了程序的伪代码。



按此思路完成PLC程序和HMI的设计就万事大吉了,剩下的事就可以交给客户自己去折腾了。且慢!还漏了重要的一件事:教会客户怎么在HMI上操作??(后期就电话远程指导吧)。

有的时候一套设备可能会用于不同的产品,那么只要多建立一张产品表,把产品和该产品的首道工序联系起来就可以了,如图2所示。但是需要注意的是,即使工序的指令是一样的,但是只要是不同的产品,就应该定义不同的工序序号,除非所有后续工序和工序切换条件都是一样的。


 



【软件编程】一个可以让客户自己编程的程序 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3227条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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