最近在使用贝加莱的PLC编写程序,使用的是贝加莱公司的Automation Studio开发工具。Automation Studio的功能还是很强大的,有些类似Visual Studio,只不过是主要用在电气化和工控行业,还有些国内的工业机器人制造业也在采用贝加莱的控制器。
Automation Studio的程序(以下简称AS)可以使用C、ST等好几种语言编写,不过感觉C在里面不是很好用,一个是过程函数跟踪调试时无法查看参数值,另一个也是贝加莱在推荐使用ST语言,而且里面的库和例子基本上都是ST写的。这里的ST语言就是在C语言的基础上增加了一些面向对象的机制,和C很相似。不同的是ST有一个很好的东西是Check Bound,可以运行时查找出编码中除零、指针越界等错误,而C是无法使用这个库的。
在AS编程中,最让我兴奋的是这个里面有一种叫FunctionBlock的模块,很像C里面的Function函数,但与函数不一样的是这种模块可以当变量来用,并且是可以运行时跟踪调试代码和变量,非常好用。
例如:
AddBolco
i int var_in //输入
j int var_in
status int var_out //输出
stage int var 0 //成员
addition int var 0
FunctionBlock AddBolco
AddBolco:=0;
status := 65535;//busy
CASE stage OF
0:
addition := addition +i;
stage := 1;
1:
addition := addition +j;
stage := 2;
2:
AddBolco := addition;
status := 0;
stage:= 0;
ELSE
addition := 0;
END_CASE
END_FUNCTIONBLOCK
当在progran中定义AddBolco AddBolco0 时,在cycle中执行时,就会按照case的步骤循环执行。这只是简单的举个例子。