在西门子PLC中使用SCL语言编程的技巧

在西门子PLC中使用SCL语言编程的技巧

在西门子PLC中使用SCL语言编程的技巧

1、 在FB块中使用结构

编写FB块的准则,就是其使用的内部变量尽量与外部隔离,除了像PLC的新启动/重启动标志,以及一些方波/脉冲波等全局变量可以在FB块中使用外,其他的任何全局变量都不应该在FB内部使用,即使是自定义结构也应该在FB中单独定义,在FB块中使用结构应该在静态类型变量中定义,

如下: VAR // Static Variables IM:STRUCT //Data structure of Internal Flags H1_AFCountImp:BOOL:=False; // Aux Flag Counter Impulse

H1_CountImp:BOOL:=False; // Counter Impulse H1_ELCountMV:BOOL:=False; // Endless Counter Maximum Value END_STRUCT; //other data structure END_VAR 在使用这些结构时,可以按照如下方式: IM. H1_CountImp:=Imp;

2、 在SCL中替代Set/Reset指令的方法

SCL中不存在Set/Reset指令,或者说也没有必要使用。在SCL中,不使用排他条件Else的条件语句就是一个Set/Reset指令。

如下编程: IF THEN Variable name:=1; END_IF; 其等同于: (S)

若加上Else条件,如下: IF THEN Variable name:=1; ELSE Variable name:=0; END_IF; 则等同于: ( )

一条完整的包含置位和复位的语句可以使用如下方式编程:

IF THEN Variable name:=1; END_IF; IF THEN Variable name:=0; END_IF; 其等效于SR指令,若将上面的两个条件语句的先后次序颠倒一下,则等效于RS指令。

3、 简化程序指令 <1>、尽量使用赋值语句替代那些不用于SR/RS指令的BOOL型赋值条件语句,如下: IF fnAdd

&(button=false) THEN pus1:=true; ELSE pus1:=false; END_IF; 其等效于pus1:= fnAdd &(NOT button),这样使程序看起来更加简洁和容易阅读。

<2>、对于非BOOL型赋值语句则不能这如上简化,而是可以通过SEL函数实现: IF fnAdd &(button=false) THEN

pus1:=value1; ELSE pus1:= value2; END_IF; 其等效于pus1:= SEL (G:= fnAdd &(button=false), IN0:= value2,IN1:= value1);

使用该函数时注意两点:<1>、参数名不能省略;<2>、当选择条件G为TRUE时,选择后一个参数值IN1,为FALSE时,选择前一个参数值IN0,这点与计算机C语言等正好相反。

<3>、XOR指令有着比AND 和OR更为复杂的表达,能使用XOR的地方应该尽量使用 IF (condition1 AND (NOT

你可能喜欢

  • SCL编程
  • PLC编程语言
  • SCL语言
  • PLC精品课程
  • 孙子兵法原文

在西门子PLC中使用SCL语言编程的技巧相关文档

最新文档

返回顶部