技术论坛

基于CPG的面向对象的控制程序模型

作者 主题
侠士

经验值: 1043
发帖数: 47
精华帖: 1
主题:【分享】基于CPG的面向对象的控制程序模型
推荐帖


只看楼主 楼主 2020-11-13 15:11:40



图1:CPG中对象化控制模型

    图1是基于CPG的内容提炼出来的一个对象化控制模型,有一些阅读过的朋友反馈说这个模型看不懂,觉得这是故弄玄虚,真正好的架构是让人容易看懂和理解的,而他们在阅读过程中没有觉得这个模型和实际设备编程有多大的关系。所以,基于这样的反馈,本文就再探讨下这个对象化控制模型的实际含义和应用。

    首先说明的是,这个Object就是一个对象。这个对象在ISA88的设备分层中可能是UN,也可能是EM。当在一个系统中对这个对象编程的时候,除了工艺逻辑部分的其他数据的接口就是围绕着Object的外围的6个要素。

    当然,有人会说,PLC编程不就是工艺嘛,这个工艺都没有咋编程?这个就是编程时候撸起袖子就干的类型,等到客户或者工艺变化的时候才发觉程序没有架构的痛苦。这里所讨论的标准化或者说架构,就是规范编程方式,同时解放工程师的双手和思考,让工程师只要专注于工艺理解即可。当把工艺理解透彻后,只要按照框架的方式在里面实现即可,而其他程序都不需要自己去编辑。本模型和昨天相比,加入了Object的FUNCTION,具体见下文解析。

    下面,通过一个工程师常见的一个虚假的生产线编程来解析对象化模型编程的思想。

    6.1 工艺概述




    图2:工艺概览图

    以上是某个生成线的一部分,物料由UN01_EM01进入,当物料到达UN01_EM02末端请求机械手(UN02)搬运,机械手(UN02)将物料搬运到UN03_EM01后由UN03_EM02进入后端工序。这是工艺的一部分,还有其他设备的物料也需要搬运到UN03_EM01上并流向下一个工序。

    同时,当物料在系统输送转运过程中,需要向上位机系统表明物料的关键路劲信息,便于上位机系统对物料的流向的追踪。

    至于上图工艺的设备分组是基于ISA88设备分层原则,UN可以单独完成一种或多种功能,和其他部件或是设备组成完整的工艺设备或者项目。一个部件可以是由一台设备组成,也可以是多台设备的集合。一个部件至少包括一个以上的设备或者智能设备。

    EM是指具备一定功能的,可以配合其他设备或是部件,组成整个工艺设备或者是项目。设备是各种元器件的载体,包括驱动器(电机、阀门等)、传感器等。

具体的可以参考如下链接中关于设备分层的相关描述。

    上图的输送机虽然都是只有输送功能,但很可能根据工艺需求的不一样,一些输送设备只是工频控制,一些是变频控制,甚至一些还有多段式速度控制等等。但标准框架程序不涉及这些内容,标准框架程序就是将Object周围的数据疏通并实现,这样工程师只要在这个框架内实现设备的工艺即可,并不需要关心其他程序的逻辑和位置。这样不管研发工程师也好,应用工程师也好,关注的重点就是工艺的过程和逻辑,这样就会有更多时间和精力用于设备工艺的改进和提升,从而使设备工艺更加合理、可靠实用,并实现设备工艺的迭代。

     除了工艺以外,以下内容就结合该工艺布局来阐述怎么在对象化模型程序中匹配并实现的。

6.2 Operation操作&Event




    图3:工艺架构图

    整个生产线的SCADA/HMI作为整个控制指令源,除此之外这些控制指令源还可能来自本地控制柜或者操作面板,控制指令包括启动/停止命令以及模式切换指令,这些统称为Operation(Command&Mode)。

    对于一个系统来说,当有操作执行的时候,该操作的作用对象可能是整个生产线,也可能是某个(类)设备。不管对象是哪一个,这些操作指令肯定要向设备层面发送,请求设备层面的状态更新。

    所以,对于任何需要控制的对象来说,操作指令是一个必须的部分,且CPG架构中还多了一个操作的诊断信息,包括这些操作的名称,操作的结果,操作的时间以及反馈的信息等。

    既然对生产线或者设备有操作指令,那设备有没有接收并按照操作执行,这些就是一个事件(Event)的反馈。在整个架构程序中,Event由Status、Alarm和Warning组成。

    比如系统模式按钮由自动切换到手动,但生产线或者设备可能由于工艺要求,只有当前工艺执行完成后才能切换到手动模式。也有可能工艺对这些没有要求,比如一个传输带,在任何时候都允许切换到手动模式。

    ……这些反馈包括模式的反馈,包括当前状态的反馈,包括报警和警告的反馈等等。

    所以,Event既是当前事件的反馈,对于一个控制系统或设备来说,也必然要将一些必要的状态和报警警告信息反馈到工作人员,便于工作人员对于设备本身状态以及当前生产系统运行状态的反馈。

    对象化模型编程中把Event整理归类为一个大类,使其囊括整个的生产系统的生产和设备信息,这可能就是和普通编程方式的一个区别(普通编程可能只是把需要的编写出来)。

    所以,对于一个对象化编程框架或者说一个控制系统来说,操作指令(Command&Mode)和Event(Status、Alarm、Warning)是必须的两个要素,没有这两个要素就无法构成一个完整的控制系统。和普通编程的区别在于,你是愿意用一个模板免去这些程序呢还是愿意每一次编程都自己重新规划实施。

6.3 Paraments参数

    对象化模型中写的是必要的参数,这些参数是保证设备运行和生产要素的一些必要的前提条件。

    比如本文工艺图中的输送机可能的设备参数就包括如下一些:

    输送设备的速度设定,可能包括第一速度和第二速度

    输送设备的长度数据,这些数据可能用于设备节能的一些算法的依据

    输送设备上光电位置的堵塞时间的设置,若是将光电看成一个CM的话,可能还有更多的参数设定

    ……

    除了这种设备运行参数,每一个输送机或这机器人站可能还需要设置一些物料生产的参数。比如机器人抓取物料的速度、输送机上物料的前后间隔……这些影响生产效率的一些必要的参数可能不是所有控制对象都有,大部分情况下都是在影响生产效率的关键节点的设备和生产线需要。

    也有人说,这些参数每一个设备可以在FB块直接使用即可。但对象化模型编程的方式就是需要你把这些功能做成通用块,在每一个需要的地方调用,这些参数化的东西即可通过FB块的接口引进到相对应的背景数据块即可。

    当然,这些都需要工程师对工艺以及对象的物理运行过程完全并正确理解,这样也会使整个程序的可靠性得到极大的提高和稳定,因为工艺和物理运行过程在程序中完整的再现。

    所以,对于一个控制系统中的设备来说,这些不同参数根据设备工艺和运行效率,可以用不同的自定义数据类型(UDT)来表示,便于设备的模块化编程的时候基于工艺需要的自由定义和选择。

6.3 Performance性能

    Performance可以看成某些运行参数的实际性能的反馈。在CPG中是明确的定义了OEE设备综合效率。

OEE其中的一种计算方法是由可用率,表现性以及质量指数三个关键要素组成:

OEE=可用率*表现指数*质量指数

    其中:

    可用率=操作时间/计划工作时间

    它是用来评价停工所带来的损失,包括引起计划生产发生停工的任何事件,例如设备故障,原材料短缺以及生产方法的改变等。

    表现指数=理想周期时间/实际周期时间=理想周期时间/(操作时间/总产量)=(总产量/操作时间)/生产速率

    表现性是用来评价生产速度上的损失。包括任何导致生产不能以最大速度运行的因素,例如设备的磨损,材料的不合格以及操作人员的失误等。

    质量指数=良品/总产量

    质量指数是用来评价质量的损失,它用来反映没有满足质量要求的产品(包括返工的产品)。

    除了OEE以外常见的性能反馈数据就是当前总的生产速度,比如上述工艺图中机器人站每一个小时的实际抓取工件的数量等等。

6.4 Identity

    本文列举的工艺要求说明,物料在系统输送转运过程中,需要向上位机系统表明物料的关键路径信息,便于上位机系统对物料的流向的追踪。

    根据工艺要求,物料以下的节点需要向上位系统报告关键路径信息:物料的起点(UN01_EM01)、物料的等待点(UN01_EM02)、物料的接收点(UN03_EM03)以及物料的流向点(UN03_EM02)。

    在向上位系统发送信息的时候,只有将这些点设备的名称也加入到信息当中,上位系统才能由此而得到物料的路劲曲线。

    所以,Identity也是一个控制对象中必须的要素。

    因为除了上述工艺的要求以外,Event中的信息也是需要跟设备绑定。比如UN01_EM01的报警信息,都是需要和设备绑定,否则所有的信息根本无法区分发生的位置。

    CPG中的信息或者Event都是有时间标志戳,那Identity就可以理解为位置标志戳,很明显,对于一个事实的描述,时间和位置信息都是必须要交代的要素,否则无法构成一个完整的事实描述。




OMAC PackML Machine Simulation

https://support.industry.siemens.com/cs/cn/zh/view/109768201/en

SIMATIC CPG Template

https://support.industry.siemens.com/cs/ww/en/view/109475572 



【壶琰棠】专注于PLC标准化编程以及功能编程!!
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1650707&b_id=66&s_id=0&num=12

侠士

经验值: 1043
发帖数: 47
精华帖: 1
回复:基于CPG的面向对象的控制程序模型
推荐帖


只看楼主 楼主 1楼 2020-11-13 15:18:58

6.5 Interface


图4:物料传输接口示意图

  • UN(E*************M)的接口

    物料在本文工艺布局上传输过程中存在着EM之间的传递以及EM和UN(此时里面有EM但是作为一个整体)之间的传递。

    当物料在这些设备之间传递过程就涉及到产品移交接口信号、产品附加的数据移交接口信号、控制请求接口信号等三类。

    前两种可能好理解,第三种控制请求接口是指两个设备之间的一个控制请求的信号。比如当物料从UN01_EM01向UN01_EM02传递的过程中,由于物料外形或者机械原因导致物料一直卡在两台设备之间。当光电遮挡时间超过设置的允许时间后,此时为保证物料和设备的安全,EM01和EM02都必须停止。但是此时*****是EM01处的光电开关,也就意味着某些情况下,相互在一起的设备之间会发出一些控制请求。

    还有就是,若UN01_EM02有故障或没有空余位置,此时UN01_EM02就要向UN01_EM01发起一个请求暂时停止发送的控制指令,此时UN01_EM01的外在表现可能就是暂停。

    当然,这些不是所有的情况,在此对象化模型的架构中,工程人员需要依据自己的工艺和要求制定相应的接口信号,便于整个控制系统的便利性和可靠性。

  • UN(E*************的接口

    若本文工艺布局中的机器人站(UN02)不是外购设备,那该设备就是整个生产线的一个部分,那该设备的Indentity就可以按照UN02来定义。

    若本文工艺布局中的机器人站(UN02)是外购设备,整个的控制是独立的,那该设备也可以任务是第三方设备,那意味着该机器人站的Indentity就不能是UN02,可能就是其他的有特殊含义的Indentity。

    与第三方的接口可能和UN(*************M)的接口差不多,也有可能没有产品数据信号。比如本文中的工艺要求物料在系统输送转运过程中,需要向上位机系统表明物料的关键路径信息,便于上位机系统对物料的流向的追踪。此时,对于机器人站来说就不需要产品附加数据的信号,它的任务只是负责搬运而已,并不是路线上的关键节点。

    对于一般的设备或者控制系统,一般都可能存在第三方设备的接口。比如物流里面常用的安检机、扫码枪等。医药设备中的质检机、灯检机等。项目集成中的一些防火安全门、消防系统等等。

IO接口

    IO接口就是一个设备基于工艺要求布置的一些传感器和驱动器的信号,这个根据不同的工艺配置和要求设置相应的IO信号即可。

6.6 Function

    不同工艺设备的底层的设备组成其实类似,基本都是由不同传感器和执行器组成,在ISA88设备分层中是CM部件。FUNCTION就是这些CM的一些标准功能块,任何的一个工艺程序的底层工艺就是由这些CM的块组成。

    比如本公众号中谈论过的数字量传感器的程序编程,还有常见的普通电机、阀门等的编程。由于工艺设备或者项目的底层最终是由这些CM组成,只要在这些FUNCTION之间做一些必要的信号连锁和逻辑关系,那工艺设备的程序可能就完成了。

    同时,由于CM的功能也按照对象化的思路编程,以后同样功能的CM的程序也可以在其他工艺设备中可以共享,这不但提高了程序的可利用性,减少了编程的工作。同时也间接通过时间的验证使得整个底层(CM)的程序块的可靠性得到提高和验证,那最终的结果就是我们工艺设备的程序的可靠性就会越来越高。

      如下图中的FB_CM_Motor2Dir就在5个EM的模板程序中有调用,这样提高了程序的复用性,减少编程工作。当然,对于CM层面的编程也会有较高的要求,那就是CM的程序能满足整个设备的所能覆盖到的设备的工艺要求,其实也就是文中经常说的对于工艺更深入的理解。


图5:FUNCTION的程序示意图

6.7 后续

              所以,整个对象化模型是实际编程工作在控制系统中的再现,即使有些设备可能没有所有的要素,但对于工程人员必须具备这样的编程思想和素质。

              反复会说到的,有了这个对象化模型,工程人员的工作中心就放在了工艺的琢磨和理解上面。这样不但提高了工艺的可靠性和合理性,由于工艺的透彻的理解,CM的FUNCTION的程序变得更加合理、复用性高。

              最终,提高的设备研发(工程实施)的质量和效率,并让公司和工程人员的技术可以得到积累和迭代。

图6:最终程序模型




【壶琰棠】专注于PLC标准化编程以及功能编程!!
以下网友喜欢您的帖子:

  
至圣

经验值: 13749
发帖数: 2032
精华帖: 16
回复:基于CPG的面向对象的控制程序模型
推荐帖


只看楼主 2楼 2020-11-13 17:19:40

看下来咋觉得倍福更适合,对象有方法,可以继承和接口。


工控毁我青春!
以下网友喜欢您的帖子:

  
至圣

经验值: 18410
发帖数: 2409
精华帖: 1
回复:基于CPG的面向对象的控制程序模型


只看楼主 3楼 2020-11-14 09:31:19

学习了,感谢分享


 
以下网友喜欢您的帖子:

  
至圣

经验值: 18914
发帖数: 2108
精华帖: 0
回复:基于CPG的面向对象的控制程序模型


只看楼主 4楼 2020-11-14 10:09:07

这个重点工艺


 
以下网友喜欢您的帖子:

  
至圣

经验值: 10583
发帖数: 1796
精华帖: 0
回复:基于CPG的面向对象的控制程序模型


只看楼主 5楼 2020-11-21 17:49:29


值得学习,谢谢了。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5690
发帖数: 767
精华帖: 1
回复:基于CPG的面向对象的控制程序模型


只看楼主 6楼 2020-11-21 19:57:31


多来学习学习,


 
以下网友喜欢您的帖子:

  
游士

经验值: 269
发帖数: 16
精华帖: 0
回复:基于CPG的面向对象的控制程序模型


只看楼主 7楼 2020-11-23 09:07:00


厉害了,标准化正需要。


激流勇进
以下网友喜欢您的帖子:

  
新手

经验值: 21
发帖数: 1
精华帖: 0
回复:基于CPG的面向对象的控制程序模型


只看楼主 8楼 2021-03-07 20:48:56

模板怎么下载啊



 
以下网友喜欢您的帖子:

  
侠客

经验值: 685
发帖数: 47
精华帖: 0
回复:基于CPG的面向对象的控制程序模型


只看楼主 9楼 2021-03-08 10:48:57


很受益,谢谢楼主


每天进步一点点
以下网友喜欢您的帖子:

  
侠客

经验值: 685
发帖数: 47
精华帖: 0
回复:基于CPG的面向对象的控制程序模型


只看楼主 10楼 2021-03-08 10:52:12

想问下,CPG是什么意思啊?


每天进步一点点
以下网友喜欢您的帖子:

  
至圣

经验值: 15532
发帖数: 1735
精华帖: 0
回复:基于CPG的面向对象的控制程序模型


只看楼主 11楼 2021-03-08 12:02:43

 

感谢楼主分享!


海纳百川,厚德务实!
以下网友喜欢您的帖子:

  
侠士

经验值: 1037
发帖数: 128
精华帖: 1
回复:基于CPG的面向对象的控制程序模型


只看楼主 12楼 2021-03-13 19:47:05

“”“当然,有人会说,PLC编程不就是工艺嘛,这个工艺都没有咋编程?这个就是编程时候撸起袖子就干的类型,等到客户或者工艺变化的时候才发觉程序没有架构的痛苦。这里所讨论的标准化或者说架构,就是规范编程方式,同时解放工程师的双手和思考,让工程师只要专注于工艺理解即可。当把工艺理解透彻后,只要按照框架的方式在里面实现即可,而其他程序都不需要自己去编辑。”“”-------------------看了几遍,还是没理解标准程序、模块化编程是个什么概念,(像c#d的面向对象?)这篇看下来没有那种醍醐灌顶的感觉,楼主能不能普及下什么样的算标准?感觉好多人再说标准,搞得我很焦虑


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
基于CPG的面向对象的控制程序模型
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。