面向对象实现气缸吹气类的PLC逻辑

机器中会用到很多气缸、真空、吹气等部件,一个个定义管理会显得代码冗余,可以通过抽取这些部件的共性,从而建立一个功能块统一实现这些操作,达到统一化、便利化的目的。

  1. 软硬件版本
    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

  1. 操作步骤
    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变量进行输入。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当使用西门子的SCL(Structured Control Language)编程语言来采用面向对象的方法编写气缸控制时,可以按照以下步骤进行: 1. 定义气缸对象:首先,定义一个表示气缸的对象。该可以包含属性(例如气缸的状态、位置等)和方法(例如控制气缸的运动、获取气缸状态等)。 2. 实例化气缸对象:在程序创建气缸对象的实例。可以为每个气缸创建一个独立的对象,以便对其进行独立的控制和状态管理。 3. 初始化气缸:在程序初始化气缸对象。这包括设置气缸的初始位置、速度、加速度等参数,并将气缸置于初始状态。 4. 控制气缸运动:使用对象方法控制气缸的运动。例如,可以编写一个名为"moveToPosition"的方法,接受目标位置作为参数,并根据当前位置和目标位置来控制气缸的运动。 5. 监测气缸状态:通过对象方法监测和获取气缸的状态。例如,可以编写一个名为"getStatus"的方法,用于获取当前气缸的位置、速度、运动状态等信息。 6. 错误处理和异常处理:在编写气缸控制代码时,考虑对错误和异常情况进行处理。例如,可以在方法添加错误处理机制,以防止气缸超出范围或发生其他异常情况。 7. 测试和调试:完成编写气缸控制代码后,进行测试和调试。通过模拟输入和输出信号,验证气缸的运动是否按预期进行。 请注意,上述步骤仅为一般性指导,具体实现方法可能会因PLC型号、项目需求和编程经验而有所差异。在实际编写,需要参考西门子PLC编程手册和相关文档,以及遵循最佳实践和安全标准。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

光怪陆离的节日

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

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

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

打赏作者

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

抵扣说明:

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

余额充值