北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章558 浏览9220743

复杂数据类型(3)——基于汇川AM系列控制器的结构化文本语言编程

上一篇文章我们介绍了枚举和联合体两种复杂数据类型,今天这篇文章我们来介绍别名、子集、引用和指针。

cover.png

1、别名

别名是给一种数据类型另起一个名字,其语法为:

TYPE

<别名> : <基类型>

END_TYPE

其中:“基类型”可以是基本数据类型,也可以是复杂数据类型。

比如:假设经常用到含有100个整数的数组,则可以给它起个别名 typeArray100。

打开InoProShop,新建项目,选择控制器AM521-0808TN。

在开发环境左侧的“POUs”(或设备树的“应用”)单击右键,在弹出的菜单中选择“添加对象”→“DUT”。

在弹出的对话框中选择“枚举”,命名为“typeArray100”,如下图所示:

1.png

单击“打开”按钮,生成数据类型如下图所示:

2.png

使用示例:

新建函数块test,在其中新建变量myArray,其数据类型为typeArray100。

这样可以直接通过索引号对变量中的元素进行寻址,如下图所示:

3.png

2、子集

子集,顾名思义,是某个基本类型的子集。其语法为:

TYPE

<子集名> : <基类名> (<下限> ..<上限>)

END_TYPE;

或者在变量声明列表中直接声明,语法为:

<变量名>:<基类型>(<下限> ..<上限>)

比如:

counter:INT(-100..100);

其中:

支持的基类包括:短整型(SINT),无符号短整型(USINT),整型(INT),无符号整型(UINT),

长整型(DINT),无符号长整型(UDINT),字节型(BYTE),字型(WORD),双字型(DWORD),

长整数(LINT),无符号长整数(ULINT),长字(LWORD);

3、引用

引用就像一个快捷方式,操作引用实际上是对被引用的对象进行操作。其语法为:

<引用变量名> : REFERENCE TO <引用对象的数据类型>

比如我们之前声明了别名类型:typeArray100,并在test函数块中声明了一个变量myArray。

现在我们再声明一个引用类型变量myRefArray,其指向的数据类型为typeArray100,如下图所示:

4.png

对引用进行赋值,并操作,如下图所示:

5.png

4、指针

指针中的数值是对象的地址。

指针变量声明时要明确其指向的数据类型,语法为:

<指针变量名>: POINTER TO <数据类型>;

使用指针时还需要取地址操作符(ADR)和取值操作符(^)。

  • ADR获取一个对象的地址;

  • ^从地址中获取变量的值;

例如:

声明一个指向整数类型的指针变量pInt,声明整数变量myInt和myInt2,如下图的13、15、16行:

6.png

获取myInt的地址并将其赋值给指针变量pInt,将指针变量pInt的值赋给myInt2,如下图所示:

7.png好了,汇川AM系列控制器的复杂数据类型到这里就介绍完毕了。

我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》从硬件到软件,比较详细的介绍了SCL语言的编程,感兴趣的话可以扫描下面的二维码查看:

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论