新浪博客

浅谈结构化语言(ST)在PLC程序中的应用

2012-02-02 17:13阅读:
现在多数PLC程序都是采用梯形图的方式进行编写,这种编程方式编写的PLC程序直观,方便于PLC系统顺序控制的控制方式,因此得到广泛的应用。但是利用梯形图也有它的一些弱点,比如用梯形图编写数据处理和数据计算程序比较复杂,可读性不强;各个PLC厂家基于技术垄断的原因,梯形图程序的编写方式各不相同,造成了程序转化和程序升级的工作量的增加。
  随着各个PLC系统的不断升级,CPU处理能力的增强,一种基于高级编程语言的新的PLC编程语言应运而生,它能够很好的补充梯形图编程的弱点,这就是结构化语言(也叫做ST语言)。
  国际电工委员会(IEC)已经制订了一系列有关可编程控制器的规范,制定这些规范的目的就是为了促进控制工业中所使用的设备和编程语言的国际化。
  ST语言是指,关于开放/控制中的逻辑记述方式所制定的国际标准IEC61131-3 中定义的语言。在ST语言中支持运算符、控制语句、函数,
  它的特点有:
  通过条件语句进行分支选择,通过重复语句进行的重复的控制语句。
  使用(*、/、+、-、<、>、=等)公式
  可以进行程序注释
  配备了丰富的函数群。有助于简化程序编写步骤。
  下面就公司常用的几种PLC系统的结构化语言就行分别的介绍:
  三菱系统
  三菱系统只有在Q系列以上才支持ST语言的编程,同时编程软件GPPW版本也需要在8.0以上才能正常的编写和打开ST语言的程序。
  下面是一段三菱ST语言的程序:
  IF m150 THEN
   FOR z10:=0 TO 10 BY 1 DO
   z11:=z10*6;
   z13:=z10*2;
   IF ((d4050z10-d300z11-d301z11)<200) AND m100z13 AND m340z13 THEN m170z13:=TRUE; END_IF; (*1工位超差范围确认*)
   IF ((d4050z10-d302z11-d303z11)<200) AND m101z13 AND m341z13 T
HEN m171z13:=TRUE; END_IF;
   END_FOR;
  上边程序语句实现的功能是:
  1.10个工位小料超差确认功能。
  2.超差确认的范围是:超过目标重量误差上限重量200g超差确认有效。
  三菱系统的梯形图不支持复杂运算语句,以往要实现复杂的数据处理语句往往要编写多步语句。而通过ST语言可以很好的简化复杂数据处理程序的编写步骤,而且通过重复循环语句可以大大减少了类似程序的重复工作量。大大提高了程序编写的效率。
  但是三菱系统的ST语言也有自己的缺点,程序编写不知能,不能自动区分大小写;ST语言程序占用CPU空间高于梯形图程序,对于本身内存较小的三菱CPU来说是一个很大的程序负担。
  AB PLC 系统
  AB PLC只有Logix系统通过RSLogix 5000编程软件可以对Logix系列的CPU编写ST程序
  下面是ST 语言的例子
  for j:=0 to 251 by 63 do
   for i:=0 to 14 by 1 do
   if Weigh_Parameter[i].RecipeNo=_R1_4_Detail[j] then
   Weigh_Parameter[i].TargetValueA:=_R1_4_Detail[j+4*i+3];
   Weigh_Parameter[i].TargetErrorA:=_R1_4_Detail[j+4*i+4];
   Weigh_Parameter[i].TargetValueB:=_R1_4_Detail[j+4*i+5];
   Weigh_Parameter[i].TargetErrorB:=_R1_4_Detail[j+4*i+6]
   Weigh_Parameter[i].RecipeNumber:=_R1_4_Detail[j+1];
   end_if;
   end_for;
  end_for;
  上述程序实现的功能:根据配方号(RecipeNo)判断,将上位机下传的配方数据转存到称量数据区。
  可以看出RSLogix 5000的ST语言有以下特点:
  程序编写灵活。由于5000系统编程软件数组的定义,可以非常方便的进行同类数据的整理编程。
  类似于高级语言的程序处理方式。ST语言是一种类似于高级编程语言的Pasacl语言的编程方式,在5000程序中ST语言处理方式更加类似于高级语言。
  同Tag设置有很好的对应。5000系统中Tag的使用,使程序同高级语言程序能够很好的进行结合,在这里通过ST语言,对于熟悉上位机语言的工程师能够很好的接受PLC程序,进行快速有效的程序对接。
  西门子系统
  编程语言SCL(结构化控制语言)是一个可选软件包,它是按照国际电工技术委员会
  IEC1131-3标准定义的高级的文本语言。它类似与PASCAL类型语言,在编写诸如回路和条
  件分支时,用其高级语言指令要比STL容易。因此,SCL适合于公式计算,复杂的最优化算
  法或管理大量的数据。
  S7 SCL程序是在源代码编辑器中编写的。
  FUNCTION_BLOCK FB20
  VAR_INPUT
  ENDVAL: INT;
  END_VAR
  VAR_IN_OUT
  IQ1: REAL;
  END_VAR
  VAR
  INDEX: INT;
  END_VAR
  BEGIN
  CONTROL:=FALSE;
  FOR INDEX:= 1 TO ENDVALUE DO
  IQ1:= IQ1 * 2;
  IF IQ1 >10000 THEN
  CONTROL = TRUE
  END_IF
  END_FOR;
  END_FUNCTION_BLOCK
  西门子的SCL(ST)相对于其他两种PLC,是最严谨的语言编写方式,同高级语言的编写方式可以说完全相同,需要函数的定义和变量的声明等等。
  函数程序语句的编写和5000程序有相似之处,这里便不再详细解释。
  通过三种PLC系统ST语言程序的比较,可以发现,虽然三种PLC品牌不同,编程软件不同,但是应用ST语言后程序的主题结构基本相同,只是对应不同的PLC需要在编程结构上进行一定的变化。这样利用ST语言编写的程序可以很快的从一种PLC转化成为另一种PLC所能应用的程序结构,大大降低了程序转化的工作量。为了以后程序的标准化和模块化奠定了良好的基础。不过,我们对于ST语言的了解还是不够,不能将ST语言通SFC或者结构框图程序有效的结合,这样能够使我们的PLC程序更好的结构化和模块化。

我的更多文章

下载客户端阅读体验更佳

APP专享