西门子plc结构化编程步骤 (plc结构化文本编程)

第一章 ST语言基础知识

1. PLC编程语言简介

结构化文本(Structured Text)简称ST语言,是IEC61131-3标准制定的PLC五种编程语言之一。用于工业控制的高级语言。由于其编写方式与一般计算机语言相似,多用于较为复杂的控制场合和复杂的控制算法中。ST语言以Pascal为基础,语法也类似Pascal,它与C语言最大的不同就是不区分字母大小写。

ST最大的优点就是,可以实现跨平台移植。只要是支持IEC61131-3标准,都是可以轻松在不同品牌PLC之间复制粘贴,只需要稍微修改,它们之间的区别极其微小。

注:PLC目前有5种标准的编程语言,包括图形化编程语言和文本化编程语言。

图形化编程语言包括:梯形图(LD-Ladder Diagram)、功能块图(FBD - Function Block Diagram)、顺序功能图(SFC - Sequential Function Chart)。

文本化编程语言包括:指令表(IL-Instruction List)和结构化文本(ST-Strutured Text)。

IEC 1131-3的编程语言是IEC工作组对世界范围的PLC厂家的编程语言合理地吸收、借鉴的基础上形成的一套针对工业控制系统的国际编程语言标准,它不但适用于PLC系统,而且还适用于更广泛的工业控制领域,为PLC编程语言的全球规范化做出了重要贡献。

2.SCL、ST、STL之间的关系

西门子博途平台支持ST语言,称之为SCL(Structed Control Language结构化控制语言)。

STL 即IL语言,称之为语句表或指令表,是一种类似汇编语言的编程语言

所以,ST=SCL STL≠ST Language

3.ST语言的优点

  • 跨平台复制粘贴
  • 实现复杂工艺计算。+、-、*、/、SQRT、MOD与数*运学**算类似
  • 实现复杂的程序结构,使程序结构清晰,便于阅读。指针、数组、循环、结构体等等使用更加简单,比梯形图容易。
  • 编程语言采用高度简化的表达形式,使得程序紧凑,结构清晰。
  • 带有多种控制语句,便于实现复杂的控制逻辑,如IF、 CASE条件语句和FOR、WHILE、 REPEAT循环语句;

4. ST语言的程序结构

ST语言的程序由 语句 组成,语句由 表达式 关键字 组成,表达式由 操作数 操作符 组成。

plc结构化编程入门教程,plc项目结构化设计及实践

5.ST语言学习误区解析

  • 与英文熟练程度关系不是很大,仅仅是编程语法上懂一些英语即能编写程序。比如IF, END_IF,CASE, FOR等仅仅是英文标识,国际通用标识。
  • 无需很深的PLC基础。零基础也可以学会,学会语言不是目的,能实现工艺需求才完成编程是目的。
  • 梯形图程序和ST语言程序的执行是一样的,都是循环扫描的工作原理方式。

第二章 ST语言的基本规则介绍

ST语言是一种文本语言,只要符合它的语法规则,是可以在文本文档中编辑的,比如WORD、记事本,甚至PPT中编辑,然后复制过去。所以,了解ST的基本规则是学习ST语言的第一步。

1.基本语法规则

1) 不区分大小写

变量、关键字都不区分大小写

IF If if都可以

START Start sTART也都可以

所以可以充分利用不区分大小写的原则,对变量的命名规则进行标准化规范化。

2)不能使用中文输入法,必须在英文输入法下输入。

注意:一定要切换到英文输入法,中文输入法会报错。

3.)除判断以外,每行都以;为结尾(注意:是英文输入法的;

END_IF,END_CASE等不同的PLC处理也不同,CODESYS可以加,可以不加,而三菱、西门子则必须加,否则编译时会报错,其他品牌可以查阅PLC的相关手册确定,或自己试验一下。

2.ST语言的注释

1)多行注释

(* xxxxxxx

xxxxxxx

xxxxxxx *)

2)单行注释

// xxxxxxx

注释内容可以用中文或者任何字符,注释不编译。

注意:注释符号必须用英文输入

3. ST语言基本语句的组成

1)操作数(变量)

操作数可以是表示数据的数据文字、字符串文字、时间文字、变量元素、函数调用和其他表达式;

例如: 15、 TRUE、 T#20S、 ARRAY1[1]、 SIN(A)、(A>B) &(C=D)。

PLC编程中最基本的单元,所谓的编程其实就是对变量的操作。可以直接使用物理地址,比如三菱PLC中X0 Y0 M0 D0

西门子PLC中I0.0 M0.0 MD0

建议使用变量,西门子博途、CODESYS和三菱GX-Works都支持中文变量名。

2)操作符优先级

对变量的操作。在一个表达式中使用多个操作符时,按优先级从高到低依次执行。 相同优先级的操作符按照书写顺序从左向右依次执行。

plc结构化编程入门教程,plc项目结构化设计及实践

3)表达式

表达式的构成

ST语言的程序中,表达式由操作数和操作符组成。一个表达式可包含一个或多个操作符、变量和函数。

plc结构化编程入门教程,plc项目结构化设计及实践

各种运算,各种公式,各种处理都是表达式,如LAB1+LAB2,LAB3 AND LAB4等

4)语句

a)赋值语句

赋值语句用于将赋值符号(:=)右侧的表达式计算的值赋给左侧的变量。

格式

赋值语句的一般形式如下,其中“:=”为赋值操作符,且要用分号“;”结尾。

格式 变量:= 表达式;

例子

变量1:= 100; //对变量1赋值100

变量2:= TRUE; //对变量2赋值TRUE

变量3:= 变量1*2; //将变量1乘以2后得到结果赋值给变量3

变量4:= SIN(变量3); //将变量3做正弦运算后的结果赋给变量4

数组A[1]:= 1.5; //对数组A下标为1的元素赋值1.5

变量5:= 1; 变量6:= 1.5; 变量7:= FALSE; //一行中可以同时存在多条赋值语句

表达式的结果

b)函数调用

函数(FC)调用后将其返回值作为表达式的值赋值给其他变量,其一般格式如下:

变量 := 函数名(参数表) ;

参数表有两种书写方式:

方式1:变量:= 函数名 ( 函数输入参数1:= 输入变量1 ,函数输入参数2:= 输入变量2 , … );

方式2:变量:= 函数名 (输入变量1 , 输入变量2 , … );

例如:通过函数MAX(取最大值)选取变量1和变量2中的最大值,并将该最大值赋值给变量3,两种调用方式如下:

方式1:变量3:=MAX(IN1:=变量1, IN2:=变量2);

方式2: 变量3:=MAX(变量1,变量2);

注意: 通过方式2调用时,参数表中的变量从左往右依次与函数的输入参数对应,所以不能空缺;

某些二元操作符不能作为函数名进行函数调用,如MOD、 AND,NOT等:

注意 变量:=MOD(变量1,变量2); ×

变量:=变量1 MOD 变量2;

比如

plc结构化编程入门教程,plc项目结构化设计及实践

c)功能块调用

功能块(FB)调用需要将其进行实例化,通过实例名称实现调用,其一般格式如下:

格式

功能块实例名(参数表) ;

参数表有两种书写方式:

方式1:功能块实例名(功能块输入参数1 := 输入变量1 ,

功能块输入参数2 := 输入变量2 ,

功能块输出参数1=> 输出变量1 ,

功能块输出参数2=> 输出变量2,

… )

方式2:功能块实例名(输入变量1 , 输入变量2 , …,输出变量 1,输出变量2, ….);

例如:通过功能块TON的实例名TIMER1对TON进行调用:

方式1:

TIMER1( EN:= 变量1 , IN:= 变量2 , PT:= T#1S,ENO =>变量4, Q =>变量5, ET=>变量6 );

方式2:

Timer1 (变量1,变量2,T#1S,变量4,变量5,变量6);

d)直接赋值与间接赋值

直接赋值

通过功能块TON的实例名Timer1对TON进行调用:

Timer1 ( EN:= 变量1,

IN:= 变量2,

PT:= T#1S,

ENO =>变量4,

Q =>变量5,

ET=>变量6 );

间接赋值

Timer1.EN:= 变量1; //对TON的输入参数EN进行赋值

Timer1.IN:= 变量2; //对TON的输入参数IN进行赋值

Timer1.PT:= T#1S; //对TON的输入参数PT进行赋值

Timer1 ( ); //调用TON功能块执行

变量4:=Timer1.ENO; //将TON功能块输出参数ENO的状态输出到变量4

变量5:=Timer1.Q; //将TON功能块输出参数Q的状态输出到变量5

变量6:=Timer1.ET; //将TON功能块输出参数ET的状态输出到变量6

4. 提高ST语言编程效率的方法

1)科学的变量命名方法,有规则,表达信息多。

2)借鉴程序员的习惯以及各大IT公司的规则。注意缩进。

IF 表达式1 THEN

表达式2

END_IF

IF 表达式3 THEN

IF 表达式1 THEN

表达式2

END_IF

END_IF

第三章 ST语言的基本逻辑介绍

PLC是可编程逻辑控制器的简称,其最基本的功能就是实现各种逻辑。梯形图是实现逻辑最直观的语言。所以,学习ST语言的的逻辑控制,最简单的办法就是对照梯形图的逻辑来学习。

PLC中最基本的逻辑就是与、或、非。无论多复杂的梯形图,都是基本逻辑的组合。

1. 非 NOT

梯形图:

plc结构化编程入门教程,plc项目结构化设计及实践

ST语言: TAG1

plc结构化编程入门教程,plc项目结构化设计及实践

ST语言: NOT TAG1

2. 与 AND

梯形图:

plc结构化编程入门教程,plc项目结构化设计及实践

ST语言: LAB0:=TAG1 AND TAG2;

3. 或 OR

梯形图:

plc结构化编程入门教程,plc项目结构化设计及实践

ST语言: LAB0:=TAG1 OR TAG2;

4. 逻辑拆分以及起保停程序的实现

梯形图:

plc结构化编程入门教程,plc项目结构化设计及实践

ST语言: LAB0:=(TAG1 OR TAG2) AND (NOT TAG3);

5. 异或 XOR

相同为0,不同为1

A := B XOR C

0 0 0

0 1 1

1 0 1

1 1 0