在现在工控行业的发展中,越来越多的设备控制都不局限于简单的继电器或者I/O控制,都趋向于集成功能化和高性能化的发展,更加智能。因此,对于数据处理以及复杂数学运算的要求越来越高。所以,目前市面上新出的PLC或者控制器都趋向于能做复杂数学运算大存储量的方向发展,编程语言也趋向于支持多样化,简单化,向着高级语言方向发展。目前在国际IEC61131中支持的编程语言:语句表(IL),梯形图(LD),功能块(FBD),顺序功能图(SFC),结构文本(ST),还有一种极少支持的连续功能图(CFC)目前不属于该标准之内。
指针和数组都是在处理大的数据库会用到,比如强大的配方(上万种的),强大是数据交流,比如PLC之间或者与上位机之间的数据交换采集显示等。而得益于ST的编程方式使得我们以前得用梯形图编写上百行或者千行的程序我们现在仅此几行或者几十行就搞定了。
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。
数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。有分一维、二维、多维数组。
自定义数据类型就是用户自定义数据类型名称以及所属归类的数据,可以是单个单类型,也可以是多个多类型。
从上面的定义看指针和自定义数组都可以定义相应的数组在程序的去应用。
下面就基于施耐德SoMachine编程平台采用ST的编程方式的相关应用。
例子1:指针数组在焊接机的应用:
首先自定义2个指针变量:
pt:POINTER TO UINT;
pt1:POINTER TO UINT;
在定义一个1500个数据的数组用来交换数据
ParaArray: ARRAY【1000..2500】 OF UINT;
因为要和上位机进行数据交换所以必须映射到内部存储区。
然后就是相关的读取和存储数据编程。
如下图:
首先建立一个自定义数据库声明文件(dut)
包含数据类型、名字。
// 总共的数据量(15组*32点)
user_date:ARRAY【1..480】 OF my_dates;
下面就是对于数据的读写操作
例子3:数组与数组之间处理
自己定义不同的数组但是数据量和类型一样可以选择映射到内部变量或者就纯粹的自定义。
VAR_GLOBAL RETAIN
ECO AT %MX1000.5: BOOL;
GXO AT %MD1:ARRAY【1..102】 OF REAL ;
AXY :ARRAY【1..102】 OF REAL; (*PO*)
Table :ARRAY【1..102】 OF REAL;
PO: UINT;
END_VAR
接下来就运用灵活的C语言对他们进行处理
C语言对于目前来看越来越被人接受,因此PLC行业其发展也逐步向其靠齐,因此搞工控的朋友们C语言还是挺重要的。到时候就知道多一门语言是那么的重要哦。
(水平有限,可能相关定义未解释清楚,各位看官可以百度一下,谢谢!)