青春灬颜
共同学习,共同进步。
级别: 探索解密
精华主题: 0
发帖数量: 134 个
工控威望: 185 点
下载积分: 384 分
在线时间: 94(小时)
注册时间: 2023-08-31
最后登录: 2024-05-07
查看青春灬颜的 主题 / 回贴
楼主  发表于: 2023-11-27 11:39
气缸急停,复位,动点原点信号,屏蔽,滤波,输出控制报警这些应该都不能少的把
共同学习,共同进步。
微信号:ppacyan,请备注工控人家园+地区+姓。
结交各位爱好工控的师傅。
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 666 个
工控威望: 1044 点
下载积分: 158 分
在线时间: 535(小时)
注册时间: 2019-09-22
最后登录: 2024-05-16
查看gxtmdb82164的 主题 / 回贴
1楼  发表于: 2023-11-27 14:39
太复杂了,写软件特别是在进行块封装、FB之类的模块化编程的时候,一定不能想着把所有功能都塞到一个组件里面搞定,软件开发的基本原则就是高内聚低耦合,只有强相关的功能才可以封装到一起。

当然,这都是理论,实际操作的时候,怎么舒服怎么来~

举例:
我自己用的单线圈电磁阀气缸控制,输入只有使能(Enable)、输入(InPut),原点(SensorA)终点(SensorB),时间脉冲(TP),超时(TimeRange),复位(Reset)
输出点只有 输出(OutPut)、报警(Alarm)

块内的逻辑只有电磁阀输出,原点终点和超时报警逻辑,其他没了,这就已经很复杂了

至于说1L提出的那些复杂功能,不好意思,都不是气缸控制块应该管的事情,气缸控制就只管气缸控制

急停应该是状态管理的任务,滤波应该是输入模块的任务(我自己的程序会再写一遍输入,从X点过渡到M点或者其他什么内部软元件,且在整个程序最前面),至于输出互锁,特殊逻辑之类的,也都是M点内部运算完成以后再输出到Y点

简单来说,不能动的条件全部串到Enable前面,Enable没了气缸块自己保持自己的状态,要做自动撤回就在输出上再串上enable,包括1L提到的什么屏蔽,无非不给使能嘛;要求动的条件全部并到InPut前面,手动也是动,自动也是动,手自动共享块提供的基本功能和超时保护,至于点动也好,连续也好,控制一下输入不就行了,另外写程序去搞定,如果频繁使用也可以封装~
本帖最近评分记录:
  • 下载积分:+5(oyangsiyuan) 好贴好贴!