倍福BECKHOFF PLC:自动化编程入门1

文章目录
一、编程基础 - 掌握核心概念,降低入门难度
1.1 TwinCAT2 编程入口 - POUs(Program Organization Unit)
1、PRG
2、FUNCTION
3、FB
4、其他入口
1.2 常用功能块简介
1.3 程序编写实例 - 流水灯
1.4 附录
一、编程基础 - 掌握核心概念,降低入门难度
我初学倍福PLC,学习过程的一些总结:
1、熟系编程环境,多操作几次就熟系了。
2、了解一些功能块,资料主要在官方帮助系统中查找。
3、理解程序执行流,从代码第一行开始一步一步执行,再套上周期循环,简单来说 在PLC中写代码就是在周期中断服务函数中写代码。
4、还是与理解程序流有关系,就是plc程序的机制是不断循环的(周期扫描机制),在PLC中要实现顺序控制/状态机,有固定的套路,有的厂家会提供顺序控制功能块,使用倍福plc + st语言编程,就借助于case语法实现。
1.1 TwinCAT2 编程入口 - POUs(Program Organization Unit)
新建POU程序文件(Ctrl+N / File>New POU)
在这里插入图片描述
界面区域功能
在这里插入图片描述
1、PRG
新建PRG
在这里插入图片描述
在这里插入图片描述
ACT子程序
在这里插入图片描述
在这里插入图片描述
2、FUNCTION
可重入问题(如何开启多线程)
3、FB
类似高级语言的类
4、其他入口
Data Types(数据类型)
Visu(可视化)
Resources(资源)
1.2 常用功能块简介
R_TRIG/F_TRIG
TON/FON
CASE … END_CASE
1.3 程序编写实例 - 流水灯
在我看来,理解程序的执行过程是编程的重要一步。

PLC程序执行流的常见描述如下:

采用不断循环的顺序扫描工作方式,从上往下,从左往右,每一次扫描所用的时间称为扫描周期或工作周期。

通过资料查询,经常会看到如下图所示的执行顺序解释。这对不熟悉梯形图语言设计意图,又习惯文本程序编程的人来说,理解PLC程序如何被执行就比较困难。
在这里插入图片描述
习惯文本语言编程(比如用C语言来描述plc程序的执行流),可以简单的这样理解:PLC程序 一直是在死循环中的。
如果了解嵌入式,可以用中断服务函数更准确的模拟PLC执行机制(比起c语言用死循环模拟,中断的方式可以表达 plc程序是在被周期性循环执行)。如果你倍福plc开发环境中,设置PLC task (扫描周期)是10ms,那么PLC就能做到程序执行一次的时间一定在10ms(扫描时间)以内。(那如果在PLC里面写一个死循环呢? 程序当然会卡住吧(系统利用率会飙升))。
所以,在PLC的循环机制的作用下,一个典型的一步步执行的加工流程怎么写出来?举个栗子,让变量i从1一步步的变到10000

写法1:执行的效果的i始终是10000,看不出来从1变化到10000的过程。这种连续赋值的思路,相当于只写了最后一句 i:=10000;
在这里插入图片描述
那如果用延时功能块TON呢?结果是可以实现流程控制的效果,但如果流程很长,TON功能快会越用越多。。。(这里,需要了解TON延时功能块);PLC实现流程控制的主流方式肯定不是这样的,借助TON实现流程控制太繁琐了。通常,借助ST语言的CASE OF 语法,来实现流程步数的控制。
i :INT;
tDelay1 :TON;
tDelay2 :TON;
tDelay3 :TON;
tDelay4 :TON;
tDelay5 :TON;
START : BOOL; (轻叩按钮,tap,非自锁)

tDelay1(IN:=START,PT:=t#2s,ET:=)
IF tDelay1.Q THEN
i:=1
tDelay1(IN:=FLASE,PT:=t#2s,ET:=)
tDelay2(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay2.Q THEN
i:=10
tDelay2(IN:=FLASE,PT:=t#2s,ET:=)
tDelay3(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay3.Q THEN
i:=100
tDelay3(IN:=FLASE,PT:=t#2s,ET:=)
tDelay4(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay4.Q THEN
i:=1000
tDelay4(IN:=FLASE,PT:=t#2s,ET:=)
tDelay5(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay5.Q THEN
i:=10000
tDelay5(IN:=FLASE,PT:=t#2s,ET:=)
END
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
实现流程顺序控制 - 流水灯。借助CASE OF语法(类似与C语言的 switch case) + 信号上升沿功能块,
rt_Execute(CLK:=Execute , Q=>Execute_Q);
IF rt_Execute.Q THEN
iState:=0;
END_IF

rt_Restart(CLK:=Restart , Q=>);
IF rt_Restart.Q THEN
iState:=iStateSave;
END_IF

rt_STOP(CLK:=STOP , Q=>);
IF rt_STOP.Q THEN
iStateSave:=iState;
iState:=-1;
END_IF

rt_RESET(CLK:=RESET , Q=>);
IF rt_RESET.Q THEN
iState:=1000;
END_IF

CASE iState OF
-1:
;
0:
el2809[0]:=TRUE;
iState := 1;
1:
el2809[1]:=TRUE;
iState := 2;
2:
el2809[2]:=TRUE;
iState := 3;
3:
el2809[3]:=TRUE;
iState := 4;
4:
el2809[4]:=TRUE;
iState := 5;
5:
el2809[0]:=FALSE;
el2809[1]:=FALSE;
el2809[2]:=FALSE;
el2809[3]:=FALSE;
el2809[4]:=FALSE;
iState := 0;
1000:
el2809[0]:=FALSE;
el2809[1]:=FALSE;
el2809[2]:=FALSE;
el2809[3]:=FALSE;
el2809[4]:=FALSE;
END_CASE

在这里插入图片描述

1.4 附录
倍福帮助系统

官方PLC编程手册

IEC61131-3 代码风格(编程约定)
在这里插入图片描述
常见数据类型
在这里插入图片描述
文件后缀名解释
在这里插入图片描述

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光怪陆离的节日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值