机器中会用到很多气缸、真空、吹气等部件,一个个定义管理会显得代码冗余,可以通过抽取这些部件的共性,从而建立一个功能块统一实现这些操作,达到统一化、便利化的目的。
- 软硬件版本
1.1. 倍福Beckhoff
1.1.1. 控制器硬件
TwinCAT控制制器,PC或者EPC,包括:
嵌入式控制器:CX5020-0125(IMG版本:CX1800-0411-0007 v3.92)
工控机:C6xxx、CP2xxx、CP6xxx等
1.1.2. 控制软件
笔记本和控制器都是基于TwinCAT 2版本
2. 准备工作
2.1. 网络接线
通过路由器进行局域网连接,控制器网线连在路由器,调试PC也接入局域网,实现PC和控制器之间的通信。
2.2. 设置控制器和PC的地址
设置原则是,将倍福控制器(PLC)的IP地址和编程笔记本设置到同一网段,例如:控制器ip地址为:192.168.1.18,本地调试PC的IP地址为:192.168.1.30
- 操作步骤
3.1. 创建结构体
3.1.1. ST_TcActustor结构体
原件的交互变量用结构体保存,能够便于管理,因此创建ST_TcActustor结构体,如下:
3.2. 定义全局变量
对于真空、吹气、气缸,可分三类定义全局变量,从而实现每一类气功原件的标准化管理,变量定义如下:
其好处就是代码书写的简洁直观,能够重复调用,拓展性强。
3.3. FB_Actuator功能块逻辑的书写
在创建完结构体和全局变量后,需要编写功能块的逻辑,根据真空、气缸、吹气的元件特点,可以归结为:工作位信号触发—》到达工作位、基本位信号触发—》到达基本位,因此可以共用一个FB功能块。
3.3.1. VAR_INPUT输入变量
功能块的输入变量,是对功能块内部逻辑中相关输入变量的绑定,完整的输入变量定义如下所示:
3.3.2. VAR_ OUTPUT输出变量
功能块输出变量,用于反馈原件执行的细节,如是否到位、超时、报错等信息。完整的输出变量定义如下图所示:
3.3.3. VAR功能块内部使用的变量
在功能块逻辑中,需要使用一些计时、上升沿、下降沿等变量,因此定义了功能块内部使用的变量,完整的变量声明如下所示:
3.4. PLC逻辑
在声明好输入变量、输出变量和内部变量之后,接下来就是功能块逻辑的书写,基本的组成部分是:安全判断、工作位/基本位动作、报警输出、状态输出。
3.4.1. 功能调用
在这里插入图片描述
逻辑说明:bRqWork和bRqBasic同时true,则复位都置false。根据HMI的模式选择操作。手动模式:不操作。配置模式:
自动模式
3.4.2. 超时报警逻辑书写
超时报警,即原件在接收到指令后开始计时,在规定时间内还没到位,则超时报警,实现的逻辑如下:
3.4.3. FB_AppAlarmSetLogic功能块讲解
FB_AppAlarmSetLogic即为报警显示的功能块,其实现如下。fbAlmMoveTimeout是FB_AppAlarmSetLogic的实例调用。
3.4.4. 功能块的状态输出
子程序M_Status为功能块状态输出的书写,即达到某个信号后,输出到达信号,并且对一些变量进行计时,完整的定义如下:
简而言之就是dowork为执行,iswork为到达
3.4.5. 运动计时
3.4.6. 功能块调用
在写好FB功能块之后,即可进行调用,如下所示
这个功能块是控制真空的,所以就一个感应器信号输入和一个信号输出。同理,吹气、气缸的也可这样定义
3.5. 程序步骤中调用
3.5.1. 自动程序调用
在自动流程中对Rq进行置ture或者false
3.5.2. 手动程序调用
触摸屏的信号,转化为bool变量进行输入。