理论教育 SoMachine控制器:POUST结构文本编程指南

SoMachine控制器:POUST结构文本编程指南

时间:2023-10-22 理论教育 版权反馈
【摘要】:在建立POU时,选择实现语言为结构化文本,如图5-36所示,建立的POU为POU ST。图5-36 建立POU ST在程序变量定义区,我们定义输入点I0,I1和输出点Q1为布尔量。例2:条件语句的使用格式1:IF表达式THEN语句块END IF结束IF语句图5-44 添加POU ST到任务配置的MAST图5-45 仿真开始运行图5-46 延时结束,Q变为“真”格式2:多个条件的串行IF表达式1 THEN语句块1;ELSIF表达式2 THEN语句块2;如果表达式1为“真”,则执行语句块1。

SoMachine控制器:POUST结构文本编程指南

这种方式类似于高级语言,可以方便地编写复杂运算程序以及各种跳转和循环。在建立POU时,选择实现语言为结构化文本(ST),如图5-36所示,建立的POU为POU ST。

978-7-111-46531-7-Chapter05-36.jpg

图5-36 建立POU ST

在程序变量定义区,我们定义输入点I0,I1和输出点Q1为布尔量。在编程区,我们写出输出变量Q1和输入变量I0,I1的逻辑关系,如图5-37所示。

978-7-111-46531-7-Chapter05-37.jpg

图5-37 结构化文本编程

在采用文本编程时,我们也可以用快捷键“F2”,或在编程行点击鼠标右键来调出输入助手,如图5-38、图5-39所示。

978-7-111-46531-7-Chapter05-38.jpg

图5-38 点击鼠标右键,选择输入助手

978-7-111-46531-7-Chapter05-39.jpg

图5-39 打开输入助手,选择所需功能块或变量

通过输入助手,我们可以调用已经做好的功能块、变量、命令关键字和操作转换符。例1:编辑一个延时输出功能。要求延时6s,输出打开。

首先,按“F2”打开输入助手,点击功能块,选择“TON”,如图5-40所示。

978-7-111-46531-7-Chapter05-40.jpg

图5-40 打开输入助手,选择功能块

弹出功能块自动声明,需要对调用的功能块命名,如图5-41所示。

978-7-111-46531-7-Chapter05-41.jpg

图5-41 命名确认功能块

命名这个功能块为t1,按“确定”,如图5-42所示。

978-7-111-46531-7-Chapter05-42.jpg

图5-42 命名功能块名称

程序行出现调用的功能块t1,如图5-43所示。

978-7-111-46531-7-Chapter05-43.jpg

图5-43 在程序行写入t1功能块

在程序中,可以给功能块的输入和输出定义变量,也可以通过仿真来观察程序执行情况。我们把编辑的程序POU ST加入到任务配置下的MAST,并且定义POU ST的执行类型为循环,循环时间为20ms,如图5-44所示。

设定PT为6s,执行仿真,使IN为“真”。则延时开始,如图5-45所示。

延时6s,输出Q为“真”,如图5-46所示。

例2:条件语句的使用

格式1:IF表达式THEN语句块

END IF结束IF语句

978-7-111-46531-7-Chapter05-44.jpg

978-7-111-46531-7-Chapter05-45.jpg

图5-44 添加POU ST到任务配置的MAST

978-7-111-46531-7-Chapter05-46.jpg

图5-45 仿真开始运行

978-7-111-46531-7-Chapter05-47.jpg

图5-46 延时结束,Q变为“真”

格式2:多个条件的串行

IF表达式1 THEN语句块1;

ELSIF表达式2 THEN语句块2;

如果表达式1为“真”,则执行语句块1。跳到结束。

如果表达式1为“假”,则再判断表达式2,表达式2

为“真”,则执行语句块2。跳到结束。

END IF

978-7-111-46531-7-Chapter05-48.jpg

格式3:条件的并行分支

IF表达式1 THEN语句块1;

ELSIF表达式2 THEN语句块2;

ELSE语句块3;

END IF

如果表达式1为“真”,则执行语句块1。跳到结束。

如果表达式1为“假”,则再判断表达式2,表达式2

为“真”,则执行语句块2。跳到结束。

如果以上表达式都为“假”,则执行语句块3。

结束IF语句(www.daowen.com)

当前面v5为真时,不执行ELSE后面的语句。

978-7-111-46531-7-Chapter05-49.jpg

当前面表达式都为假时,执行ELSE后面的语句。

978-7-111-46531-7-Chapter05-50.jpg

978-7-111-46531-7-Chapter05-51.jpg

例3:多重选择CASE表达式OF…END CASE

CASE表达式OF

值1:语句1;

值2:语句2;

……

值n:语句n;

END CASE

写出表达式

表达式值为值1,执行语句1;

表达式值为值2,执行语句2;

表达式值为值n,执行语句n;

结束CASE语句

这种选择语句结构,CASE的表达式相当于一个指针,指向被执行的语句。

程序事例:

978-7-111-46531-7-Chapter05-52.jpg

仿真情况如下:

978-7-111-46531-7-Chapter05-53.jpg

例4:语句的循环执行

格式1:FOR循环

规则:INT VAR:INT;

FOR<INT VAR>:=<初值>TO<结束值>{BY<步长>}DO

语句块;

END FOR

这里{}内的命令是可选的。语句块的循环执行,一直到<INT VAR>大于结束值为止。

语句块执行一次,INT VAR值增加一个步长。

参考实例如下:

978-7-111-46531-7-Chapter05-54.jpg

仿真结果:

978-7-111-46531-7-Chapter05-55.jpg

格式2:WHILE循环

规则:WHILE表达式DO

语句块;

END WHILE

语句块循环执行,一直到表达式为‘假’为止。

程序案例:

978-7-111-46531-7-Chapter05-56.jpg

仿真结果如下:

978-7-111-46531-7-Chapter05-57.jpg

格式3:REPEAT循环

规则:REPEAT语句块;

UNTIL表达式

END REPEAT

语句块循环执行,直到表达式为“真”停止。

注意规则:表达式后没有分号。

程序案例如下:

978-7-111-46531-7-Chapter05-58.jpg

仿真执行结果:

978-7-111-46531-7-Chapter05-59.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈