年前我分享了一次博图程序块降级思路,其中第一种方法是通过OPENNESS导出,但我并没有详细写方法,这里分享一下使用openness导出的方法。之前的帖子可参考https://www.ad.siemens.com.cn/club/bbs/post_f_1933474_66_0_1933474_0_.html#quote
openness由于对高级语言有一定的要求,比如需要会使用C#,这里介绍一种简单的方法,可以使用西门子为openness开发的一个辅助工具 OpennessExplorer,该工具可以直观的看到博图的对象结构,也可以获取有些需要用到的代码,也可以执行一些对象的方,工具下载地址:https://support.industry.siemens.com/cs/document/109760816/tia-portal-openness-explorer?dti=0&lc=en-US
下载完软件后直接双击运行Siemens.OpennessExplorer.exe软件,开软件后第一件事是选择DLL,点击select DLL会弹出路径选择对话框,选择openness的DLL文件,一般来说dll文件保存在博图安装路径下,这里我的是C:\Program Files\Siemens\Automation\Portal V19\PublicAPI,这个文件夹下面还有V16,V17,V18等文件夹,这里面都的不同版本的博图OPENNESS的dll文件,一般来说如果不使用最新功能的话就随便选一个。
,
,
DLL文件选择完成后可以选择已经打开的博图进程也可以打开新的博图进程,选择现有的博图进程需要先打开博图并打开项目后,然后点击画面中的刷新按钮,下面的进程选择框中就会出现正在运行的博图进程,选择需要操作的进程,点击start。
如果希望打开新的博图进程,可以通过勾选start new TIA Portal instance选择框,然后选择项目路径,点击start。

打开博图进程后,依次展开Projects-project-Device,这个下面显示的是项目中所以的设备(PLC显示的是机架名称,不是显示PLC名称,如何不知道具体指定的是哪个PLC,可以展开对象-deviceitems展开后会显示该机架中所有的模块名称,这里可以看到PLC的名称),选择需要操作的PLC,右击选择Get SoftwareContainer,这个是PLC的软件对象。

打开PLC软件对象后会显示如图,依次展开softwareContainer-software-BlockGroup 这里有三个对象,blocks(块)groups(组),systemBlockGroup(系统块)。具体功能块的位置在哪主要还是需要看程序编写的方式,我这里是使用文件夹对块进行分类的,所有这里需要在groups对象下面的blocks中。
导出方式:选择需要导出的块,鼠标点亮即可,选择后找到图片中位置的Export(这里有好几个是因为参数不同我使用的是第一个,这个只需要设置好导出路径)点击Fileninfo path后面的放大镜,如何选择导出文件的保存路径,然后点击Invoke执行指令。如果没有弹出任何提示就代表已经导出完成了,如果弹出了提示说明执行中出现错误,可以更具提示去解决。
导入方式:导入需要先选择需要导入的位置,如将块导入到最外层,不进入任何文件夹中,需要先选择最外层的blocks然后找到方法框中的Import方法,先选择好要导入的文件,然后执行方法,不弹出任何提示就是执行完成,弹出提示代表执行中出现问题,需要根据提示去解决问题。
OpennessExplorer是一个解析OPENNESS对象结构的工具,这里用于导入导出程序块,只是这个工具的很小的功能,这个工具我觉得最好用的功能还是用于在使用C#编写openness的程序时作为代码提示使用。