3、编译指令
编译编译指令主要分为三种,消息编译、条件编译、属性编译。3.1 消息编译
消息编译可以用于在我们对工程进行编译的时候,在消息栏强制输出一些信息。
消息编译分为四种,text、information、warning、error。我们在编译的时候可以附加消息,警告或是报错。
(1)来试一下下面这个例子。
(2)点击菜单栏【工具】-----【编译】进行编译,如下图
(3)可以在消息栏找到对应的三条信息,分别地告诉我们已经编译完成、有一个警告要注意、以及显示的变量声明区的信息等等。
3.2 条件编译
ST 语言支持不同的条件编译指令,这些编译指令会影响预编译或编译过程中代码的生成。条件编译有很多类型,可对是否定义了某一变量、是否具有某一属性、是否具有某一类型、是否具有某一个值等情况判断,然后再选择性地编译。条件编译可配合消息编译一起使用。我们挑两个条件编译指令来演示一下。
defined (variable:variable)
该指令是对是否定义了某一变量进行判断,如果该变量被定义则表达式值为TRUE,如果没有定义则该表达式值为 FALSE。(1)可编写条件编译指令如下
(2)编译程序。
(3)编译完成后可以在消息栏看到自定义的编译信息’Variable bA is defined!’
(4)如果变量声明区不声明 bA 变量,则编译后可找到报错信息’No Variable is defined!’
hastype (variable: variable, type-spec)该指令是对是否定义了某一变量类型进行判断,如果该变量被定义为指定类型则表达式值为 TRUE,如果没有则该表达式值为 FALSE。
(1)可编写条件编译指令如下
(2)此时登录PLC并运行,就可以观察到下面的结果。很明显,这里经过条件编译的判断,只执行了第一个语句,所以 g_multitype 的值一直在按公式增加。
(3)而如果我们把这个变量的类型修改成 STRING 类型,再登录PLC并运行,就会看到它的值变成了下面图中显示的这一串字符串。
3.3、属性编译
属性编译需要添加属性,属性编译的种类非常之多。可以在变量声明区添加属性,这样会影响编译或预编译的结果。也可以有自定义属性,一般配合条件编译一起使用。属性一般适用于改变所声明或定义的函数或数据的特性。在本教程中我们选取Hide 属性来做演示。Hide 属性:{attribute 'hide'}
新建功能块,在功能块的 VAR_INPUT 关键字下申明三个变量,在 d 变量的上一行添加 Hide 属性,在 VAR_OUTPUT 和 VAR 关键字下各申明一个变量,在变量前一行添加 Hide 属性。
在主程序对功能块实例化
登录并运行PLC,我们只能看到 a、b、c 这三个变量,而被隐藏的 d 和 e 及其值是无法被看到的。
隐藏属性可用于防止变量在列表组件中、点索引时或是在线的变量申明区域可见的情况。当然,它是作用域的,只会对它的下一行变量有效。