查看: 1657|回复: 26
收起左侧

[资料分享] 关于中型机面向类对象编程中IO定义的建议

邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
本帖最后由 zhchuaftsc 于 2023-7-20 08:23 编辑

IO定义思路:
先把开关量16个点位看做一个整体,模拟量8个点位看做一个整体,建立一个结构体,命名ST_BT;
因模拟量输入有些厂家硬件链接INT数据类型,有些厂家硬件链接UINT数据类型,因此模拟量建立两种数据,根据实际需求进行选择,如下图。
1.png
此结构体可以做到库中,方便后期使用。
在实际项目当中,再建立一个结构体,命名ST_IO,其中主要包含输入、输出、M代码,如下图所示:
2.png
其中DAI表示输入信号(含开关量、模拟量);
      DAQ表示输出信号(含开关量、模拟量);
      MCD表示开关量DAQ所表示的M代码,主要用于传送给屏幕使用,让屏幕不再链接单个的IO信号,具体使用见后面介绍。
      每一个DAQ开关量仅且关联一个MCD码。
因为此处是使用倍福的PLC作为举例,在汇川PLC中不需要AT %I* 和AT %Q* ,否则会报错。
     将DAI和DAQ数组化,数组的个数以电箱中最多的输入和输出作为标准,当然也可以直接做一个大的数组,但是会造成资源浪费。
     此处数组标号从1开始,位数根据上述要求及实际项目合理填写。
     如上所述,一个电箱的IO已经生成,然后根据实际项目定义电箱号,先建立一个全局标签GIO,然后对ST_IO进行实例化,如下图;
3.png
根据控制系统进行划分区域,若是多个控制系统,则生成二位数组,若是单个控制系统,则生成一维数组即可。
在倍福控制系统中,可通过任务划分不同的控制系统,汇川中目前暂不支持。
其中电箱的个数根据实际项目设置,标号起始号为1,终止号码为电箱的个数。
如此,所有电箱的IO一次就可以做完。

根据工艺划分不同的工位,对工位做一个功能块,含初始化、端口控制、自动逻辑、手动点动、半自动逻辑、报警输出(含数报警、位报警)、状态结果转换、开关量输出M代码生成等信息,如下图所示。
4.png
其中QG为FB_SixInOne的实例化,FB_SixInOne为开关量控制通用模版程序,具体可见上一个论述。
做好一个FB功能块,需建立一个相对应的结构体,如下图所示
5.png
然后在全局标签里面对此结构体进行实例化,也在程序中对此工位进行实例化,其中实例化的个数一致。
建立相关程序,如下图所示
6.png
然后直接可以使用for循环,直接对各工位的IO信号进行批量处理。
屏幕上对所有开关量输出做一个通用模版,如下图所示:
7.png
一个开关量对应2个检测信号,因开关量输出和两个检测信号与中间M代码相关联,所以模版信号状态反馈即可通过M代码的位状态进行判断。
每个工位都可建立相对应的信号,方便查看。
8.png
其中在任意状态,此列表可监控IO的状态反馈信号,
但在手动点动状态或自动暂停状态下,可以按相应控制信号部位,可以实现端口的取反操作,实现点动控制。
9.png
当有错误的时候,其底色立马变红,方便报警快速定位。
也可以根据当前M代码判断其逻辑、报警是由等。

面向类对象编程:
        来源于面向对象编程思想,但是可以通过类的形式,实现类对象编程。
        因PLC中三大量、开关量、模拟量、轴控制,只要实现了单个量的通用模版控制,即可实现类编程,最终用for循环实现其功能。

以上截图均为实际项目中的截图,因牵扯保密协议,因此不能上传程序等,在此,仅为大家提供一个参考思路,欢迎大家踊跃讨论。








点评

感谢分享  发表于 2023-7-21 08:50




上一篇:InoProShop怎么在程序里改轴参数?
下一篇:CNC程序SMC_OUTQUEUE模式编译错误怎么解决

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

maker210 2023-7-20 11:46:00 | 显示全部楼层
第一张的库文件能详细讲讲吗?

点评

这个库只有20个功能块,一般最多用到八个功能块,很多功能块只是***功能块的子功能块罢了。可关注抖音号zhchuaftsc_plc  发表于 2023-7-20 13:16
回复 送花

使用道具 举报

null._. 2023-7-20 14:54:03 | 显示全部楼层
看着好繁琐呀
HCTU111.png

点评

所有的开关量控制都可以用功能块FB_SixInOne来处理,所以多个开关量,一个for循环即可搞定。  发表于 2023-7-20 15:54
一个工位,最多只需要建立一个功能块,而此功能块包含所有状态下的控制、含初始化、端口、逻辑、数报警、位报警、点动端口/通讯操作,无需流程  发表于 2023-7-20 15:53
回复 送花

使用道具 举报

liuqiangniu2020 2023-7-20 16:05:33 | 显示全部楼层
没讲明白,糊里糊涂的,不知道讲的什么

点评

自研发的面向类对象编程,大多数工程师用的是面向对象编程,对象包括(气缸、电机、真空等具体对象),类对象包括开关量、模拟量、轴等对象  发表于 2023-7-21 13:03
回复 送花

使用道具 举报

方方圆圆 2023-7-20 17:44:50 | 显示全部楼层
不能传原程序,可以做个小的示例小程序吗,看不懂啊

点评

感谢感谢大神的无私奉献.  发表于 2023-7-22 10:53
链接:https://pan.baidu.com/s/1cs_wOOR2b-G8xwKTFNOEtg 提取码:zhch  发表于 2023-7-21 13:05
回复 送花

使用道具 举报

一万九5 2023-7-20 20:21:20 | 显示全部楼层
这需要建立一个对应的数组处理,消耗了一定的资源,系统已经提供了IO变量
FB 封装的完整性,受到影响,在FB里检查这些接口,需要到数组里去查看,多了一个步骤

点评

一个工位就是一个功能块,从输入到输出一条龙服务,像倍福中IO都是自定义的,检测输入信号和控制输出信号都是在外部程序进行配置的  发表于 2023-7-21 13:07
回复 送花

使用道具 举报

瞬间AK 2023-7-21 08:56:59 | 显示全部楼层
很好的资料,感谢楼主分享
回复 送花

使用道具 举报

Liwei6 2023-7-21 09:18:26 | 显示全部楼层

大势所趋,生产线用的多,单机无所谓。
回复 送花

使用道具 举报

Liwei6 2023-7-21 09:19:55 | 显示全部楼层
现在好多工程师都是这么写,移植性好,也容易封装。对于传统编程人员 可能一时不好转变。
回复 送花

使用道具 举报

冯1994 2023-7-21 09:32:09 | 显示全部楼层
楼主抖音模版2000大洋

点评

这是面向类对象编程,可扩展性非常强的。如果你还比较喜欢流程步的方式,可以去选择codesys徐工的框架,3000大洋包会。我这边框架属于配置型架构  发表于 2023-7-21 10:10
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部