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

  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变量进行输入。

面向对象实现气缸吹气类的PLC逻辑相关推荐

  1. javascript创建类_如何使用JavaScript创建吹气效果

    javascript创建类 Have you ever wondered how you can create a realistic air blowing effect with JavaScri ...

  2. linux自动读取麦克风,检测用户向麦克吹气

    如果几年前你告诉我人们可以通过晃动手机或向麦克吹气使手机有所动作,我一定会大笑不止.但现在这已经是事实了. 检查晃动动作是很直接的,所有这些在3.0"motion event"(动 ...

  3. php面向对象异常处理,PHP面向对象编程——自定义PHP异常处理类

    /* ?* WEB开发笔记 www.chhua.com 每日练习 PHP面向对象编程--自定义PHP异常处理类 ?* 这所以用自定义的异常类,主要是区分异常来自程序的哪一部分,比如是来自MYSQL的还 ...

  4. java面向对象第一课,定义类,模拟人的行为:吃饭工作休息

    java面向对象第一课,定义类,模拟人的行为:吃饭工作休息 /*** 定义类,模拟人的行为:吃饭工作休息*/ public class Person {//静态特征:成员变量 属性 fieldStri ...

  5. Delphi面向对象学习随笔一:类与对象的关系

    Delphi面向对象学习随笔一:类与对象的关系 作者:巴哈姆特 http://www.cnpack.org (转载请注明出处并保持完整) 工作几年了,总想做点总结,于是有了这篇东西,叫随笔吧呵     ...

  6. 面向对象的设计原则-类设计原则

    面向对象的设计原则-类设计原则 排行榜 收藏 打印 发给朋友 举报发布者:七月十五 热度票  浏览1368次 [共4条评论][我要评论]时间:2008年11月08日 10:55 在面向对象设计中,如何 ...

  7. 面向对象:MATLAB的自定义类 [MATLAB]

    https://www.cnblogs.com/gentle-min-601/p/9785812.html 面向对象:MATLAB的自定义类 [MATLAB] 这几天刚刚开始学习MATLAB的面向对象 ...

  8. 面向对象程序设计实验——编写Rational类

    面向对象程序设计实验--编写Rational类 实验任务与要求 代码解析 定义一个命名空间Numeric Rational类的成员变量 编写默认构造函数 编写复制构造函数 编写赋值操作= 分数化简 编 ...

  9. Java6面向对象编程创建一个矩形类, 求周长 面积

    package job; /** */ import java.util.Scanner; public class Space { /* 面向对象编程创建一个矩形类, 求周长 面积 */ publi ...

  10. Python的面向对象,魔术方法、类的三大特征、自省、实例空间、经典类与新式类

    目录 1.什么是面向对象 1.1 面向过程 1.2 面向对象 1.3 面向对象的优点 2.类 2.1 什么是类.对象,方法和属性 2.2 类的定义和使用 2.2.1 类名规范和类的写法 2.3 魔术方 ...

最新文章

  1. helloworld 1 2結合版 (有意思)
  2. winrar压缩指定目录
  3. TLS--线程局部存储
  4. 对于Mybatis在C#.Net中个人使用的总结(一) Mybatis 的结果映射
  5. SpringBoot 使用AOP功能
  6. 乔碧萝凉凉!斗鱼、虎牙、B站齐封杀
  7. maven安装配置:报错NB: JAVA_HOME should point to a JDK not a JRE
  8. LaTeX中文伪代码
  9. python测验6_Python语言程序设计 - 测验6: 组合数据类型 (第6周)
  10. 倪光南回应方舟CPU失败论,企业失败不等于技术失败
  11. jOOQ 3.13.2 代码生成过程及解决 daos 无法生成的问题
  12. android手机api等级_什么是Android API 级别?
  13. 2019牛客暑期多校9H:Cutting Bamboos【主席树+二分】
  14. android中按两次返回键返回桌面或退出程序
  15. jenkins pipeline slave部署nacos负载均衡平滑升级
  16. 2017年苹果开发者账号申请——注册苹果账号
  17. zigbee 问题一:协调器究竟如何选择信道?
  18. 树莓派4安装centos7并配置环境
  19. C语言实现从字符串s中删除所有字符c
  20. 学生学python编程---实现贪吃蛇小游戏+源码

热门文章

  1. PCB 设计的基本流程
  2. R| 混合效应模型,lme4
  3. 矩阵卷积运算过程讲解
  4. 矩阵谱分解的求解流程
  5. 工程力学和计算机专业,2018工程力学专业就业方向及就业前景分析
  6. 深度学习基础知识教程
  7. Android 加壳App Demo
  8. 打包java项目_Java项目常见打包方式
  9. 安卓简单的通用文本编辑器介绍
  10. Schölkopf 、Bengio等新作解读:因果表征学习——连接因果和机器学习的桥梁