ST语言数组声明

ST语言作为PLC编程的标准语言,软PLC的使用越来越多,也逐渐受到了更多的工程师的喜爱,我们探讨这里的问题。

  • 数组声明
    我们很多工程师这么声明数组
HMI_bWholeHmi    AT%MW14380   :ARRAY[1..20] OF WORD;   

熟悉高级语言编程的朋友,肯定知道一般数组引用从0开始,但是作为PLC的工程师,多数喜欢1对1的命名方式,错位会让大家很不舒服。但是值得说明的是,这种命名是存在风险的,有可能在引用时指向一个空指针,从而导致程序死机。

  • 举个例子
int i ;
HMI_bWholeHmi[i] := true;

由于我们定义数组从1开始,如对i进行引用,就必须保证i不小于1,并且即便注意了这点,如采用了for循环来操作这些位,则又易赋0进去。例如:

for i := 1 to num by 1 
	HMI_bWholeHmi[i]:=false;
end for

如不注意num的赋值时机,则可能这行程序先默认给num赋值0,从而造成数组访问到一个不在定义中的数组HMI_bWholeHmi[0]这样程序由于无法访问到这个变量,从而报错,引起程序挂机。
所以还是需要从0开始声明数组,改成如下:

HMI_bWholeHmi    AT%MW14380   :ARRAY[0..20] OF WORD; 

那么有的人会说,我怎么1对1呢,其实很简单,就是不用下标为0的数组,这一点是很灵活的。

你可能感兴趣的:(ST语言)