幸运大弯钩
微信1570478188,欢迎各位同行交流
级别: 探索解密
精华主题: 0
发帖数量: 84 个
工控威望: 154 点
下载积分: 1305 分
在线时间: 78(小时)
注册时间: 2021-11-21
最后登录: 2025-04-01
查看幸运大弯钩的 主题 / 回贴
楼主  发表于: 6天前


有没有大神知道三菱的gx works3里的FB类型,宏类型与子程序类型有什么区别?
还有这个MC/MCR控制EN是指只有在EN条件满足时才扫描执行FB里的程序吗?




还有更诡异的是FB使用宏类型时,  FB接口类型为input类型,居然可以在fb内部改变input接口的状态,复位或者改变图中M0和D0的值,这可是input接口啊只读的,让我想不明白,注:只有在FB为宏类型时才可以。

还要吐槽下三菱的fb,接口占用的梯形图空间大就算了,一个页面都看不到几行梯形图,最恶心的是他的inout类型接口,居然占用2个接口,一个在输入侧一个在输出侧,提过意见了那么多年了也不改,没见过这么恶心的plc。
[ 此帖被幸运大弯钩在2025-03-27 17:34重新编辑 ]
接线上线下自动化PLC项目设计编程,答疑排故等,欢迎各位同行技术探讨。微信1570478188
幸运大弯钩
微信1570478188,欢迎各位同行交流
级别: 探索解密
精华主题: 0
发帖数量: 84 个
工控威望: 154 点
下载积分: 1305 分
在线时间: 78(小时)
注册时间: 2021-11-21
最后登录: 2025-04-01
查看幸运大弯钩的 主题 / 回贴
1楼  发表于: 6天前
这三菱plc不管新旧的软件都不支持通过变址寄存器动态访问数据寄存器的特定位,也就是D0Z0.0 或 Array[Index].BitX,还要经过种种转换,真是蛋疼,西门子博途甚至汇川小型plc autoshop都支持了,它还在原地踏步
接线上线下自动化PLC项目设计编程,答疑排故等,欢迎各位同行技术探讨。微信1570478188
zmrs163
级别: 家园常客
精华主题: 0
发帖数量: 385 个
工控威望: 533 点
下载积分: 1502 分
在线时间: 328(小时)
注册时间: 2017-06-12
最后登录: 2025-04-01
查看zmrs163的 主题 / 回贴
2楼  发表于: 5天前
子程序就是一段程序存放在一个位置,执行时跳转过去,宏类型编译时会在调用处展开代码,更浪费步数,早期子程序有bug,重复调用内部变量不初始化出现很多莫名奇妙的Bug,EN就和西门子一样的导通就执行内部代码,然后分两种,一种是MCR方式,一种是CJ方式,会影响你内部计数器以及上升沿等的工作模式。三菱的块和西门子的块执行逻辑也不一样,变量其实是静态变量,调用时会残留上次的值。
[ 此帖被zmrs163在2025-03-28 10:14重新编辑 ]
幸运大弯钩
微信1570478188,欢迎各位同行交流
级别: 探索解密
精华主题: 0
发帖数量: 84 个
工控威望: 154 点
下载积分: 1305 分
在线时间: 78(小时)
注册时间: 2021-11-21
最后登录: 2025-04-01
查看幸运大弯钩的 主题 / 回贴
3楼  发表于: 5天前
引用
引用第2楼zmrs163于2025-03-28 09:20发表的  :
子程序就是一段程序存放在一个位置,执行时跳转过去,宏类型编译时会在调用处展开代码,更浪费步数,早期子程序有bug,重复调用内部变量不初始化出现很多莫名奇妙的Bug,EN就和西门子一样的导通就执行内部代码,然后分两种,一种是MCR方式,一种是CJ方式,会影响你内部计数器以及上升沿等的工作模式。三菱的块和西门子的块执行逻辑也不一样,变量其实是静态变量,调用时会残留上次的值。

为啥用宏类型的fb时,fb内部可以改变input接口的值?
接线上线下自动化PLC项目设计编程,答疑排故等,欢迎各位同行技术探讨。微信1570478188
zmrs163
级别: 家园常客
精华主题: 0
发帖数量: 385 个
工控威望: 533 点
下载积分: 1502 分
在线时间: 328(小时)
注册时间: 2017-06-12
最后登录: 2025-04-01
查看zmrs163的 主题 / 回贴
4楼  发表于: 5天前
图片:
说的好像子程序类类型就改不了一样
引用
引用第3楼幸运大弯钩于2025-03-28 10:29发表的  :

为啥用宏类型的fb时,fb内部可以改变input接口的值?
幸运大弯钩
微信1570478188,欢迎各位同行交流
级别: 探索解密
精华主题: 0
发帖数量: 84 个
工控威望: 154 点
下载积分: 1305 分
在线时间: 78(小时)
注册时间: 2021-11-21
最后登录: 2025-04-01
查看幸运大弯钩的 主题 / 回贴
5楼  发表于: 5天前
引用
引用第4楼zmrs163于2025-03-28 11:22发表的  :
说的好像子程序类类型就改不了一样


你fb里面可以复位in1?
接线上线下自动化PLC项目设计编程,答疑排故等,欢迎各位同行技术探讨。微信1570478188
zmrs163
级别: 家园常客
精华主题: 0
发帖数量: 385 个
工控威望: 533 点
下载积分: 1502 分
在线时间: 328(小时)
注册时间: 2017-06-12
最后登录: 2025-04-01
查看zmrs163的 主题 / 回贴
6楼  发表于: 5天前
图片:
图片:
你可以校验下然后看其编译出来的结果。区别正如我所说的,宏类型就是FB在调用的地方展开,子程序就是调用,调用过程涉及了形参和实参的参数传递过程,而宏类型直接把FB展开把内部的变量用引脚的变量替换了,因此会出现你所说的结果。这只能说明三菱的软件不好用,这种违背规范的程序编译过程居然连警告都没有
引用
引用第5楼幸运大弯钩于2025-03-28 11:32发表的  :

你fb里面可以复位in1?
[ 此帖被zmrs163在2025-03-28 15:03重新编辑 ]
幸运大弯钩
微信1570478188,欢迎各位同行交流
级别: 探索解密
精华主题: 0
发帖数量: 84 个
工控威望: 154 点
下载积分: 1305 分
在线时间: 78(小时)
注册时间: 2021-11-21
最后登录: 2025-04-01
查看幸运大弯钩的 主题 / 回贴
7楼  发表于: 5天前
引用
引用第6楼zmrs163于2025-03-28 13:17发表的  :
你可以校验下然后看其编译出来的结果。区别正如我所说的,宏类型就是FB在调用的地方展开,子程序就是调用,调用过程涉及了形参和实参的参数传递过程,而宏类型直接把FB展开把内部的变量用引脚的变量替换了,因此会出现你所说的结果。这只能说明三菱的软件不好用,这种违背规范的程序编译过程居然连警告都没有


确实,那就是说用宏类型的fb会比子程序类型fb占用的程序步要多?
但是宏类型fb有个优点,就是input类型接口有inout类型的属性,毕竟三菱的fb inout太难用了,还要占一个输出引脚,太占空间了
接线上线下自动化PLC项目设计编程,答疑排故等,欢迎各位同行技术探讨。微信1570478188
zmrs163
级别: 家园常客
精华主题: 0
发帖数量: 385 个
工控威望: 533 点
下载积分: 1502 分
在线时间: 328(小时)
注册时间: 2017-06-12
最后登录: 2025-04-01
查看zmrs163的 主题 / 回贴
8楼  发表于: 5天前
基于BUG编程
引用
引用第7楼幸运大弯钩于2025-03-28 15:24发表的  :

确实,那就是说用宏类型的fb会比子程序类型fb占用的程序步要多?
但是宏类型fb有个优点,就是input类型接口有inout类型的属性,毕竟三菱的fb inout太难用了,还要占一个输出引脚,太占空间了