博图标准化编程技巧(一)巧用UDT整理上位变量
博图环境下,UDT用户自定义数据类型功能已经非常强大,可以在DB、FC、FB中灵活使用,并且修改方便,不再像传统STEP7环境下那样定义并引用以后如果修改了UDT会让所有引用的位置不能识别。博图环境下修改UDT定义后引用的位置会显示橙色,只需要右键点击“更新界面”就可以同步UDT定义。
标准化编程首先标准化的就是上位机通讯数据,要争取一类设备使用同样的上位机接口,并且上位机接口变量数量比普通编程增加了很多。传统做法是将上位机变量定义在FB的IO接口处或者内部变量处,上位机使用的时候直接从FB的背景数据块读取数据。如果标准化块使用的是FC那么只能定义在IO接口处,并且要给IO接口逐一赋实参,当上位变量数量较多时会让FB或FC块变得非常长,调试和查看都不方便。
使用UDT整理上位变量就可以非常方便的解决变量引用数量多的问题。我们可以给每一种设备定义一个或两个上位通讯专用的UDT(如HMI_IN和HMI_OUT),在FB或FC的IO接口处引用;同时定义一个上位访问专用DB块(如DB2),内部变量全部采用上位专用UDT创建。编辑FB的时候,从IO接口的UDT数据变量中读取和输出上位数据;应用FB的时候只需要在IO接口处连接上位专用DB块的地址即可以实现全部上位变量的映射,程序块也很短,并且可以在程序开发前提前编辑上位专用DB块提供给上位开发人员,提高团队协作效率,后期FB有接口更改也不影响上位访问地址(如果采用访问背景数据块的方式,当IO接口改变时大概率会改变上位接口的绝对地址,非常麻烦)。
因第三方上位软件只能采用绝对地址访问的方式,因此我们可以给上位专用DB块设置为非优化的块访问,给FB程序块设置为优化的块访问,这样既可以享受优化块访问带来的存储空间和编程便利,还不影响第三方上位软件访问。如果第三方上位软件采用访问FB背景数据块的方式采集数据,我们只能将整个FB设置为非优化的块访问,需要断电存储时只能将整个背景数据块选择为断电保持属性,当设备数量多时断电保持数据区将不够用。
以下是一个仪表转换程序的标准化功能块,HMI_IN和HMI_OUT代表上位机写入和读写的变量接口。仪表上位机读写数据全部位于DB2内,通过FB接口与实际程序连接,实现上位数据的转换。

