PLC的结构化文本ST语言编程,请教一个简单的例子。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PLC的结构化文本ST语言编程,请教一个简单的例子。相关的知识,希望对你有一定的参考价值。
X0按下5次,让变量a加1,当变量a为3的时候,让Y0输出。
这一个简单的例子怎么用ST结构化文本语言编程?跪求大侠指点!!!
css
PROGRAM Example
VAR
X0: BOOL;
Y0: BOOL;
a: INT;
END_VAR
a := 0;
WHILE TRUE DO
IF X0 THEN
a := a + 1;
END_IF
IF a = 3 THEN
Y0 := TRUE;
ELSE
Y0 := FALSE;
END_IF
IF a >= 5 THEN
a := 0;
END_IF
// 延时,防止程序过快执行
DELAY 100ms;
END_WHILE
这个程序首先定义了三个变量X0、Y0和a,其中X0表示按键输入,Y0表示输出信号,a表示按键按下的次数。然后通过一个无限循环来不断检测X0输入是否为真,并根据条件判断和计数来实现功能。
具体来说,程序先将a初始化为0,然后在循环中不断执行以下操作:
判断X0是否为真,如果为真则将a加1;
如果a等于3,则将Y0输出为真,否则输出为假;
如果a大于等于5,则将a重置为0,重新开始计数;
延时一段时间,防止程序过快执行。
需要注意的是,ST语言中的循环语句使用WHILE DO和END_WHILE来表示,IF语句的条件判断需要用THEN和END_IF来限定,变量赋值可以使用:=操作符。 参考技术A IF X0 == true AND M0 <> X0 THEN
index_X0 := index_X0+1;
IF 5 == index_X0 THEN
a := a+1;
IF 3 == a THEN
Y0 := true;
END_IF
END_IF
END_IF
M0 := X0;追问
谢谢,但是我想让X0按下时动作一下,也就是上升沿触发。这样怎么编程呢?
追答IF X0 == true AND M0 X0 THEN
...
(* coding here *)
END_IF
a:=a+1;
IF a = 3 THEN
Y0:=1;
ELSE
Y0:=0;
END_IF;
END_IF; 参考技术C 一
CTU1(
CU=X0,
RESET=CTU1.Q,
PV=5,
CV=>,
Q=>);
IF CTU1.Q THEN
a=a+1;
END_IF
IF a=3 THEN
Y0=TRUE;
END_IF 参考技术D LD I0.0 //开始计数
LD I0.1 //计数器完成后复位
CTU C1, 5 //5次计数器后计数器输出
LD SM0.1 // 首次扫描为1
MOVR 16#0, MD0 //MD0清零
LD C1
EU //上升沿
+R 16#1, MD0 //MD0加1
LDR= MD0, 16#03 //等于3时候
= Q0.0 //输出Y1
国产PLC软件PikePLC——FBD图形化编程语言开发交通灯控制示例
基于PikePLCStudio用FBD图形化编程语言开发了一个用于控制交通灯的简单示例。 本文最后的ST源代码是FBD编译器将FBD转换为ST语言后的结果。 说明:本示例主要是为了演示使用PikePLCStudio基于FBD开发PLC程序的能力,至于交通灯控制程序逻辑本身,不排除还会有其它更好的逻辑
以上是关于PLC的结构化文本ST语言编程,请教一个简单的例子。的主要内容,如果未能解决你的问题,请参考以下文章
[PLC]ST语言六:DI/EI/FEND/WDT/FOR/NEXT
[PLC]ST语言三:OUT/OUT_T/OUT_C/OUT_C-C32