文章目录

  • 一、编程基础 - 掌握核心概念,降低入门难度
    • 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程序 一直是在死循环中的。

 void main(){for(;;){PLC程序主体}}
  • 如果了解嵌入式,可以用中断服务函数更准确的模拟PLC执行机制(比起c语言用死循环模拟,中断的方式可以表达 plc程序是在被周期性循环执行)。如果你倍福plc开发环境中,设置PLC task (扫描周期)是10ms,那么PLC就能做到程序执行一次的时间一定在10ms(扫描时间)以内。(那如果在PLC里面写一个死循环呢? 程序当然会卡住吧(系统利用率会飙升))。
 void timer1_10ms()  interrupt 0{PLC程序主体,每10ms执行一次}

所以,在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 THENi:=1  tDelay1(IN:=FLASE,PT:=t#2s,ET:=)tDelay2(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay2.Q THENi:=10tDelay2(IN:=FLASE,PT:=t#2s,ET:=)tDelay3(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay3.Q THENi:=100tDelay3(IN:=FLASE,PT:=t#2s,ET:=)tDelay4(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay4.Q THENi:=1000tDelay4(IN:=FLASE,PT:=t#2s,ET:=)tDelay5(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay5.Q THENi:=10000tDelay5(IN:=FLASE,PT:=t#2s,ET:=)
END
  • 实现流程顺序控制 - 流水灯。借助CASE OF语法(类似与C语言的 switch case) + 信号上升沿功能块,
rt_Execute(CLK:=Execute , Q=>Execute_Q);
IF rt_Execute.Q THENiState:=0;
END_IFrt_Restart(CLK:=Restart , Q=>);
IF rt_Restart.Q THENiState:=iStateSave;
END_IFrt_STOP(CLK:=STOP , Q=>);
IF rt_STOP.Q THENiStateSave:=iState;iState:=-1;
END_IFrt_RESET(CLK:=RESET , Q=>);
IF rt_RESET.Q THENiState:=1000;
END_IFCASE 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 代码风格(编程约定)

  • 常见数据类型

  • 文件后缀名解释

倍福BECKHOFF PLC:自动化编程笔记相关推荐

  1. 倍福BECKHOFF PLC:FileWirte/Puts,FileRead/Gets File Function Blocks文件操作功能块

    测试总结 官方范例 实际测试 打开文件:FileOpen 关闭文件:FileClose 文件读写FileWirte/Puts,FileRead/Gets 测试总结 1. 如果使用二进制,进行文件读写, ...

  2. 学习倍福BECKHOFF PLC可利用的资源

    一.[lizzyChen]个人分享 lizzyChen的FTP仓库https://tr.beckhoff.com.cn/enrol/index.php?id=160 二.[睿慕课]相关课程 倍福Twi ...

  3. 倍福BECKHOFF PLC优秀资源

    1. https://blog.csdn.net/u012928587/article/details/104194290

  4. 倍福模块通讯协议_认识倍福(Beckhoff)CX5100系列嵌入式控制器

    今天这篇文章,我们来认识下倍福(Beckhoff)CX5100系列嵌入式控制器. 倍福CX5100系列嵌入式控制包括:CX5120.CX5130和CX5140系列. 1.CX5120系列 CX5120 ...

  5. 倍福 BECKHOFF CX9020 是一款适合 DIN 导轨安装的紧凑型以太网控制器,如何做CAN隔离

    CX9020 是一款适合 DIN 导轨安装的紧凑型以太网控制器,采用的是 1 GHz ARM Cortex™-A8 处理器.用于连接倍福 I/O 系统的接口直接集成在 CPU 模块中.设备具有自动识别 ...

  6. 倍福(Beckhoff) 软件及资料分享

    倍福(Beckhoff) 软件及资料分享 一.倍福软件安装包 下载链接 二.倍福资料 倍福虚拟学院

  7. 倍福beckhoff详细知识库展示

    教材(一) TwinCAT 2.0 从入门到精通 1 系统概述 1.1 TwinCAT 软件介绍 1.2 PC 控制的原理 1.3 选型设计 1.4 安装和接线 1.5 常见问题 2 编程入门 2.1 ...

  8. 倍福beckhoff知识库

    本内容只是为了方便用搜索工具查找信息,具体知识请咨询陈利君获取详细资料或通过京东购买书籍. 教材(一) TwinCAT 2.0 从入门到精通 1 系统概述 1.1 TwinCAT 软件介绍 1.2 P ...

  9. 西门子博图HMI与倍福进行PLC使用OPC DA服务器进行通讯配置

    1.安装OPC DA 服务器 2.配置OPC DA服务器 选择相应的PLC的.tpy文件 3.运用后点击保存,退出 4.博图配置 1.双击连接到连接画面 2.配置如图

  10. 倍福 在 vs 里 编程 是怎么做到的_截图里的文字要改,字体怎么做到一模一样?...

    大家是不是碰到过这么一个尴尬的情况:一个截图里有一个错别字,或者其中一小段文字要修改,可是苦于找不到源文件,又没办法找出和原来文字一模一样的字体.每次遇到这样的情况你都是怎么处理的呢?火箭君今天给大家 ...

最新文章

  1. Mean Shift+聚类
  2. oracle统计事务,统计Oracle 查询事务数的方法
  3. Alibaba-AndFix Bug热修复框架原理及源码解析
  4. [C++11]对模板右尖括号的优化
  5. 第九十期:哪种人是软件设计中的稀缺型人才?
  6. Zookeeper单机安装(开启kerberos)
  7. 求N个数的最大公倍数
  8. Exchange Server 2016管理系列课件17.创建和使用会议室邮箱
  9. 新加入一个团队,我们应该怎么做?
  10. Android中如何解决输入法键盘和activity页面遮挡的问题
  11. ansible的playbook进行yum批量安装nginx最新版本
  12. thinkphp php5.1,ThinkPHP5.1完全开发手册
  13. 极光推送上线7周年大庆,777件礼物送给大家
  14. arcgis把jpg转成栅格图像_[转载]在ArcGIS中配准(TIF、JPEG)栅格图像并矢量化(转)...
  15. 数据备份技术知识梳理(建议收藏)
  16. 王者荣耀-是用什么编程语言开发的
  17. CentOS 之 openssl-devel 安装
  18. 抖音的上下滑实现—iOS
  19. 数据包络分析(超效率-SBM模型)附python代码
  20. 2022年深圳市专精特新中小企业认定标准、材料清单

热门文章

  1. (附源码)计算机毕业设计ssm基于JAVA宠物店管理系统
  2. 好看的登录html界面,很漂亮的用户登录界面HTML模板
  3. (C++)设计算法求集合{1,2,...,n}的幂集
  4. [转载]Altium Designer 破解,避免局域网冲突的ad9.ini
  5. 瑞萨RH850F1x单片机开发板完整开发环境搭建介绍
  6. SMA2.92高频连接器的主要特点​
  7. OBS 直播、录屏软件下载安装操作教程
  8. matlab节约里程法_求助节约算法MATLAB代码
  9. 如何用Python抓抖音上的小姐姐
  10. CMMI3级认证过程记录