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类型与实际plc类型是否一致,文本中的plc参数的类型设置也要与实际plc参数类型一致。软元件范围不...
三菱plc如何编程与文本才有手动?
首先要保证文本与plc通讯链接好,然后在plc里写好手动程序。文本中做软元件按钮控制Plc首先要保证文本与plc通讯链接好,然后在plc里写好手动程序。文本中做软...
信捷一体机Plc计数器怎么编程,而且文本要显示计数数量?
只是一个计数功能从屏幕显示这个很简单在程序里拉一个计数器快就行了设置好复位端只是一个计数功能从屏幕显示这个很简单在程序里拉一个计数器快就行了设置好...
plc编程语言排名?
PLC目前有5种标准的编程语言,包括图形化编程语言和文本化编程语言。图形化编程语言包括:梯形图(LD-LadderDiagram)、功能块图(FBD-FunctionBlockDia......
plc常见的语言编程方法?
PLC的编程方法大体上有5种:经验法、解析法、图解法、技巧法及计算机辅助设计法。(1)经验法:运用已掌握的成功设计经验,结合实际的情况,选择与实际情...
plc指令集架构?
PLC的指令集是通过编程语言实现的,主要包括:梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)及结构化文本语言(ST)...PLC的...
文本显示器怎么控制PLC软元件,还需要编数据传送指令吗-14...
不需要编写这个数据了,但是,你在编程文本显示器上的软件时,要对应将相应控件与PLC中的一一对应,他们会在连接通信上后自动传输数据与指令的。如上...
贝加莱PLC有中文界面的编程软件吗?
据我所知,没有中文版的,用于OEM的是AutomationStudio,版本有2.X和3.X的,均有英文版和德文版的,软件支持梯形图(LD)、指令表、顺序功能图、结构文本、Basi...
PLC编程语言有哪三个?
1、PLC有五种标准化编程语言顺序功能图(SFC)、梯形图(LD)、功能模块图(FBD)三种图形化语言和语句表(IL)、结构文本(ST)两种文本语言,最常用的两种编程...1、P...
PLC编程语言?
1.LadderDiagram(梯形图):是PLC最常用的程序设计语言,采用电气线路图的形式表示控制逻辑,能够可视化控制方案,易学易懂。2.FunctionBlockDiagrams(.....
扫一扫微信交流