PLC的结构化文本编程(ST)-小案例
作为PLC编程语言中的一种,结构化文本编程近些年越来越受欢迎。那么什么是结构化文本编程呢?
"结构"是指高水平的结构化编程能力,像一个"结构化的编程";"文本"是指应用文本而不是梯形图和顺序函功能表的能力。ST语言不能代替其它的语言,每种语言都有它自己的优点和缺点。ST主要的一个优点就是能简化复杂的数学方程。
今天我们做一个简单的案例,来熟悉一下ST编程方式。
编程要求:
以上为编程要求
有了题目之后,我们第一步需要做什么呢?当然是建立相关的变量表啦,变量表的建立如下:
建立变量表
变量表建立之后,我们就可以根据要求写程序啦,程序已经写好,但不完整,小伙伴们可以改进完善哦。
编程程序
程序编写完成之后,我们需要进行仿真测试。
首先我们将模拟量的输入值模拟为200,那么这个值在整个占比中为5%。因为小于设置的25%,因此结果输出为LOW。
输出结果为LOW
然后我们将模拟量的输入值模拟为2000和3800,那么这两个值在整个占比中分别为50%和95%。按照程序设定,我们分别会得到OK和HIGH的运行结果。
输出结果为HIGH
输出结果为OK
小伙伴们,看完之后是否有了一点点收获呢?欢迎小伙伴的添加补充,更欢迎小伙伴们的转发和收藏,有什么问题也可以私信小编哦,小编会尽力回答各位“控油”的。让我们一起在工控的道路上一起变得强大吧!!!
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语言的程序由语句 组成,语句由表达式 和关键字 组成,表达式由操作数 和操作符 组成。
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)操作符优先级
对变量的操作。在一个表达式中使用多个操作符时,按优先级从高到低依次执行。 相同优先级的操作符按照书写顺序从左向右依次执行。
3)表达式
表达式的构成
ST语言的程序中,表达式由操作数和操作符组成。一个表达式可包含一个或多个操作符、变量和函数。
各种运算,各种公式,各种处理都是表达式,如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; ✔
比如
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
梯形图:
ST语言: TAG1
ST语言: NOT TAG1
2. 与 AND
梯形图:
ST语言: LAB0:=TAG1 AND TAG2;
3. 或 OR
梯形图:
ST语言: LAB0:=TAG1 OR TAG2;
4. 逻辑拆分以及起保停程序的实现
梯形图:
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
相关问答
plc文本一体机如何编程?
PLC文本一体机的编程需要使用专业的编程软件,比如Siemens的STEP7或者RockwellAutomation的Studio5000。首先,需要创建一个新的项目,然后添加需要控制的设.....
PLC和文本编程?
首先要保证文本与plc通讯链接好,然后在plc里写好手动程序。文本中做软元件按钮控制Plc首先要保证文本与plc通讯链接好,然后在plc里写好手动程序。文本中做软...
plc程序设计语言?
1、梯形图(LadderDiagram)程序设计语言梯形图程序设计语言是用梯形图的图形符号来描述程序的一种程序设计语言。采用梯形图程序设计语言,程序采用梯形图的形...
plc基本编程模式?
PLC编程有五种标准化编程语言:顺序功能图(SFC)、梯形图(LD)、功能模块图(FBD)三种图形化语言和语句表(IL)、结构文本(ST)两种文本语言。最常用的是梯...PLC...
plc西门子td400文本显示器如何编程?
关于这个问题,PLC西门子TD400文本显示器的编程步骤如下:1.连接显示器:将TD400文本显示器与PLC进行连接,可以通过RS232接口或者MPI接口进行连接。2.配置显...
PLC常用的编程语言?
PLC编程语言五种:梯形图、指令表、功能模块图、顺序功能流程图及结构化文本)。目前编程语言的价值在于用经验的方式来管理软件系统复杂度。而SQL算是一个数...
plc有两种编程方式分别为?
常用的方法有梯形图法、波形图法及流程法。梯形图法是基本方法,无论是经验法还是解析法,若将PLC程序转化成梯形图后,就要用到梯形图法。波形图法适合于时间控...
请教信捷PLC与信捷文本显示器的编程问题。再线等!谢谢?
不同品牌的PLC编程思路不尽相同,对于永宏台达等PLC你的思路是对的,信捷我不确定,但你的问题解决起来不难。1、确定PLC与文本显示正常连接。你可以在文本显示...
OMRON的PLC功能块这么编写呢?
选择合适的功能块类型:梯形图或结构化文本;新的功能块被创建,它的名称将默认为‘功能块’。三、是打开功能块进行编辑,包括在块头中设置使用功能块变量;块...三...
wincc如何编辑文本?
2、在弹出的“变量属性”对话框中的“常规”选项卡中“名称”文本框中可以输入过程变量的名称。3、在“数据类型”列表框中可以选择过程变量的数据类型。4、...