查看: 524|回复: 2
收起左侧

[资料分享] 标准程序架构说明3控制对象程序的Identity

dianqizai 2022-8-23 16:18:03 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
以下文章来源于壶琰棠 ,作者壶琰棠主。

在您开启阅读前,当然希望您已经阅读了以下内容:
  【重磅】标准程序架构的发布(基于ISA88的CPG库)
   标准程序架构说明1:主程序及程序分类
   标准程序架构说明2:控制对象说明
对于整个程序架构,希望能用文字真正让大家熟悉并能理解。

1661242325041.png
图3‑1 :控制对象程序模型图
上图是前文中描述的设备程序模型,该模型是基于西门子的CPG库(基于ISA88)的程序整理而来,也是我们整个标准程序架构中EM层级设备的标准程序模型。

从本内容开始,将会对上述程序模型中的各个部分做详细说明,包括各个部分的内容定义、程序中的数据类型、程序中的实际数据块、设备程序中该部分内容的详细程序说明等。

3.1.    identity说明

Identity即为设备的ID或者说设备的编码,用于表面设备的身份或位置,一般用于设备属性和信息的前缀。比如某个设备的电机出现故障,你不能只说电机有故障,必须在电机前表明该电机属于哪一台设备,这样的信息才有意义。

Identity的定义需要有一个原则,而基于这个原则定义的Identity必须是唯一的,唯一的Identity让信息和实际设备捆绑在一起,这样的信息才是有意义的,且也便于精准定位到设备以及设备的相关信息。

此时,就会有人说,只是要唯一的话,那无所谓规则,我将设备的Identity自动加一即可,比如A0001一直到A9999,一个设备或者项目中的对象肯定不会超过一万个吧。

所以,Identity除了唯一性以外,还需要有一定的实际意义,比如Identity可以表明设备的用途,或者可以表明设备的位置区域,这样定义的Identity才是有规律且唯一的。

标准程序架构是基于西门子的CPG程序库,该程序库是基于ISA88的PackML的标准,所以标准程序架构中的设备名称是按照设备分层原则取名,比如UN01_EM01设备的Identity即为UN01_EM01,再加上ProcessCell的编码,这样可以保证所有设备的Identity都是唯一的,也能通过名称可以得知设备的位置区域(ProcessCell是指某个设备或者项目,UN就是不同的功能区域,EM是功能区域中不同的设备),这也是OMAC设备分层原理的意义之一。

OMAC设备分层的原理请参考如下两个文章:
基于OMAC的设备标准化(PLC)应用(1)
OMAC设备分层原理说明

一般的设备类型类似的流水线(比如全是输送机),将设备分层编码作为设备的Identity是可行的,因为都是一样的设备只能通过编码识别。

其他带有工艺功能的设备就无法如此,设备的Identity必须带上一些表达工艺功能的字符,这样才能理解。

所以,程序中Identity是设备的编码定义,设备的实际名称或者信息的前缀则是Identity变量的实际值。

3.2.    Identity的数据类型

为正确表示设备的Identity,标准程序架构中建立了名称为typeIdentity的自定义数据类型,其数据结构如下:

1661242416113.png
图3‑2 :typeIdentity数据结构示意图

typeIdentity数据结构里面包括两个长度为10的字符串,下标0为中文字符,下标1为英文字符,用于程序中信息前缀。

CPG程序中是预定了三种语言,但结合国内的实际,一般只需要用到中文和英文就足够了,所以标准程序架构中所有信息的表达,包括Identity的字符串都只有英文和中文可选。

3.3.    Identity的全局数据块

程序中定义了一个名称为Identity的全局的数据块(Data Block),用于存储所有设备的Identity,每一个设备Identity的数据类型都是typeIdentity。
1661242445280.png
图3‑3 : Identity数据块示意图
数据类型typeIdentity中变量的默认值为空,全局数据块中的起始值可以自己依据实际设备的编码(英文)或者名称(中文)手动填写在全局数据块Identity中对应的位置上,比如上图中下标为0中的起始值“211原纸架”和下标为1中的起始值“PF211”。

若设备的英文名称不需要实际意义的英文字符,那标准架构程序中编写了自动赋值下标1的英文字符的起始值的程序。

3.4.    FC_MesPrefixGenerate

功能: 自动生成Identity的英文字符串,并赋值到全局数据块Identity中对应设备下标为1的起始值。

标准程序中建立一个名字为FC_MesPrefixGenerate的函数,MesPrefixGenerate即Message Prefix Generate,其中Mes是英文Message的惯用缩写方式,该函数的位置在Function文件夹的子文件夹Event中。

注:中文字符串没有规律,所以程序无法自动生成,需要手动填写。
1661242471778.png
图3‑4: 函数块位置示意图

FC_MesPrefixGenerate的返回类型为String,输入引脚只有一个数据类型为Variant的名称为i_SymbolName,没有其他的形参(形式参数,一般指FC或FB的输入、输出、输入输出三种引脚)。

FC_MesPrefixGenerate的程序中使用Portal提供的指令GetSymbolName读取输入形参的名字,然后将读取到的字符串中的DB块的信息去除,即可得到该形参的实际字符名称,并将该名称赋值给函数的返回值。

1661242503424.png
图3‑5: Identity自动赋值程序示意图

对于任意设备的英文字符串,只需要调用一次函数FC_MesPrefixGenerate即可将其英文字符自动赋值到全局数据块中。

3.5.    FC_MesPrefixInitialize

标准程序架构中定义了函数FC_MesPrefixInitialize,用于收集所有设备的Identity编码的英文字符串自动赋值程序的程序。FC_MesPrefixInitialize没有返回值,也没有任何形参。

由于设备的名称一旦确定则不会改变,所以所有设备英文字符串的程序只需要在CPU启动的第一个循环周期执行,其他循环周期不需要执行,提高了CPU的使用效率。

1661242530712.png
图3‑6: 所有设备Identity自动赋值程序示意图

如上图显示,FC_MesPrefixInitialize有一个示例程序,设备名称为UN01_EM01,程序执行后,全局数据块Identity中UN01_EM01的下标1的初始值为“UN01_EM01”,其他更多设备的程序则按照示例依次调用并填写好实参即可。

观察上图可以看到,其他设备的程序只有UNXX_EMXX不一样,而一台设备或者项目的设计定型后,设备或者项目中的UN的数量以及UN中的EM数量即是确定的,所以对于所有设备的程序可以借助其他软件,通过改变UNXX_EMXX中的数字即可快速实现,且不会遗漏设备。

3.6.    FB_EM_Model中的Identity

FB_EM_Model有一个数据类型为typeIdentity名称为i_Identity的输入引脚,用于将实际设备的Identity传递到设备程序内部。

1661242557109.png
图3‑7: FB_EM_Model的Identity引脚示意图

设备编码一旦确定(设计阶段就确定)基本不会改变,所以Identity的程序只在首次扫描的时候执行,不占用正常运行时候的CPU资源。

FB_EM_Model程序中建立一个s_ EMNames的静态变量,用于存储当前设备的Identity的信息,后续需要设备信息前缀的或者名称的,只要将该变量和信息连接起来即可。

1661242584099.png
图3‑8 : s_EMNames变量示意图

在“初始化数据”Region(区间)中首先判断当前的语言选择,然后再将数据块(DB)中相对应的字符复制给静态变量s_EMNames,后续程序中该变量就能获取设备Identity。

1661242608091.png
图3‑9 : s_EMNames程序示意图

备注:在判断当前语言的程序里可以看到,语言的选择是在全局数据块-Parameters中的变量System.Language来选择的,该变量默认为FALSE是中文字符,TRUE则为英文字符。

1661242634304.png
图3‑10 :系统语言选择配置示意图

3.7.    Identity总结
1661242669330.png
图3‑11:Identity程序实现示意图

标准程序架构中的Identity的结构如上图,定义Identity的数据类型typeIdentity,通过全局数据块Identity管理所有设备的Identity,再将该变量填在实际设备程序的形参引脚(引脚名称为:i_Identity)实现整个标准程序架构中Identity的数据管理、程序实现。

若设备的英文名称字符不需要实际含义,那可以通过FC_MesPrefixGenerate函数自动将设备分层的代码赋值到全局数据块中的起始值。






上一篇:【重磅】标准程序架构的发布(基于ISA88的CPG库)
下一篇:基于OMAC的设备标准化(PLC)应用(1)

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

zwqiu 2022-8-24 10:47:43 | 显示全部楼层
内容详细,感谢分享!
回复 送花

使用道具 举报

zhuyi 2022-9-8 17:29:48 | 显示全部楼层

感谢分享。。。。。好东西
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部