AOTC的出现,使得最终用户更加灵活与便捷的创建自定义趋势组,而且告别了直接浏览归档变量的繁琐方式。AOTC控件不仅有实力而且也是“颜值担当”,提供了更加丰富的显示和选择功能:

关于AOTC控件的基本使用,我们在此不再赘述,可参考以下FAQ:PCS7中通过AOTC控件在同一个画面中显示多个趋势曲线。
接下来主要介绍非标情况下如何使用AOTC的功能。
AOTC的扩展应用当采用APL的块图标时,工程师不需要任何额外设置就已经包含了该功能。
接下来我们重点看下如下三个方面:
都有哪些功能块支持AOTC的功能?
下位机采用APL库,自定义块图标如何使用AOTC的功能?
自定义功能块和自定义块图标是否可以使用AOTC功能?
追本溯源——哪些块支持AOTC

从版本开始,APL模板画面中不管任何功能块的图标,只要包含模拟量值的都已经集成了该功能。
AOTC不仅局限于添加模拟量,同时对于APL中的以下功能块,也集成了添加数字量到AOTC控件的功能。

同添加模拟量到AOTC控件类似,按住Ctrl键+左键单击对应图标,比如在MotL块图标上执行了以上动作,则会将添加到新打开(或已经打开的)AOTC控件窗口。其原理和添加模拟量显示相似,如下图所示:

APL_OpenCurveControl函数两个关键参数lpszValue和lpszUnit:

按图索骥——自定义块图标实现AOTC
接下来我们仍然以MonAnL为例,在下位机程序不变的情况下,如何将自定义的块图标同样实现AOTC的功能。
我们以最简单的I/O域创建一个自定义对象来测试。在2.1章节,MonAnL-APL_OpenCurveControl的lpszUnit参数赋值使用了tag,而MotL则在lpszValue中使用了tag,所以tag为对应的块图标属性中的TagName。
标准APL的块图标肯定会包含TagName等属性,但是对于自定义对象则不是必须的。因为lpszUnit可以为None,我们先不添加TagName看自定义对象是否可以打开AOTC控件,并正常使用。
注意:此处仅创建一个最小自定义对象来实现AOTC功能,非完整创建块图标的步骤,完整创建自定义块图标的步骤请参考以下文档(尤其注意构成PCS7块图标的三个必要系统属性:Type,Tagname和Servername):APL风格的功能块图标和面板设计
自定义对象定义如下:

自定义对象连接和脚本操作顺序如下图所示:

使用WinCC脚本诊断工具ApDiag检查脚本执行是否正确:

此时仿照PCS7块图标的格式,用DataSet收集tagname,从standard中拖拽DataSet到画面中,并添加Index设置名称为TagName,Type为String格式。

将DataSet添加到之前的自定义对象,并组态如下:

将TagName的静态值定义为对应结构体变量名称:


上图中Unit之所以为空,是因为没有给APL_OpenCurveControl函数的lpszUnit参数赋值所致,修改脚本如下图(其中tag指tagname):

学以致用——自定义功能块+
自定义块图标实现AOTC
前文已经介绍了在下位机使用APL库功能块时,无论使用标准的块图标,还是使用自定义对象都可以方便的使用AOTC功能。那么如此方便的功能,对于自定义的功能块和图标能否支持呢?
最后让我们一起来研究一下自定义的块和图标如何灵活的使用AOTC功能。
AOTC控件中除包含变量的趋势外,还获取了变量的量程、质量状态、上下限和单位等信息。单位是通过lpszUnit参数获取的。但是对于其他的参数并没有直接赋值,而是在内部根据tagname获取的相应变量。因此对于自定义的功能块,可以仿照MonAnL块,定义如下图所示的对应管脚即可:

管脚属性的定义参考MonAnL的定义,此处仅定义了必须的管脚,其他非必要管脚可以根据实际需求添加,内部逻辑程序根据自己需要定义即可,PV_Out可以通过管脚属性直接设置为归档。

此处直接使用按图索骥——自定义块图标实现AOTC创建的自定义对象来进行测试,只需将结构体变量,变更为自定义功能块对应的结构体变量即可。

AOTC控件让用户直观方便的创建、存储、调用趋势控件,而不需要进行复杂的组态。做到了“所见即所得”而不再需要一个个找归档变量。对于工程师而言也简化了编写复杂脚本的工作,即便不使用APL库也可以很方便的将自己的功能块集成AOTC功能。PCS7的这几个版本的更新中,新增了许多非常实用的功能,并且在数字化和标准化的应用上也在一步步完善创新,这些功能等待着我们去挖掘使用。