沙漠仙人掌
级别: 探索解密
精华主题: 0
发帖数量: 64 个
工控威望: 104 点
下载积分: 2006 分
在线时间: 56(小时)
注册时间: 2022-05-05
最后登录: 2024-09-13
查看沙漠仙人掌的 主题 / 回贴
楼主  发表于: 2024-06-06 10:36
请问在三菱PLC程序里,主程序和子程序可以输出同一个线圈吗?也就是双线圈的问题是否可以?
菜鸟入行
级别: 论坛先锋

精华主题: 0
发帖数量: 1381 个
工控威望: 1557 点
下载积分: 3686 分
在线时间: 177(小时)
注册时间: 2017-09-01
最后登录: 2024-06-11
查看菜鸟入行的 主题 / 回贴
1楼  发表于: 2024-06-06 10:49
应该不行吧。可以主程序输出一个M100,子程序输出一个M200, 然后M100和M200共同输出Y0
打个酱油,懂的不多
水平有限,能帮则帮
互相帮助,共同进步
我是新来的
这里需要写点儿东西
级别: 论坛先锋
精华主题: 0
发帖数量: 306 个
工控威望: 1824 点
下载积分: 33407 分
在线时间: 349(小时)
注册时间: 2019-11-21
最后登录: 2024-09-19
查看我是新来的的 主题 / 回贴
2楼  发表于: 2024-06-06 11:55
两个子程序不同时调用的可以,主程序和子程序不行,亲身经历
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 171 个
工控威望: 246 点
下载积分: 773 分
在线时间: 69(小时)
注册时间: 2021-10-31
最后登录: 2024-09-17
查看ayusecret的 主题 / 回贴
3楼  发表于: 2024-06-06 13:18
图片:
看你的用法
1、如果一个元件定义成可以在多处地方临时调用,你100个双线圈都没问题,前提是你在使用的时候需要正确的初始化它,我经常定义一些临时变量拿来重复计算用,用之前初始化即可
2、如果一个元件定义成全局控制唯一(流程唯一或数据唯一),那得尽量避免双线圈.
理解一点,程序是按扫描执行的,你的输出取决于最后一次如何处理,你在输出的扫描之前能正确处理即可,之所以要避免双线圈,是担心你在实际编写程序时,双线圈的时序会乱放,导致逻辑不明确,扫描的时序不对导致输出不对

所以上图的执行结果,Y0的输出只取决于X0的输入,和上面的其他逻辑无关
沙漠仙人掌
级别: 探索解密
精华主题: 0
发帖数量: 64 个
工控威望: 104 点
下载积分: 2006 分
在线时间: 56(小时)
注册时间: 2022-05-05
最后登录: 2024-09-13
查看沙漠仙人掌的 主题 / 回贴
4楼  发表于: 2024-06-06 15:33
谢谢楼上各位网友的解答,现在搞明白了,多谢!
electric
级别: 探索解密
精华主题: 0
发帖数量: 108 个
工控威望: 127 点
下载积分: 1815 分
在线时间: 32(小时)
注册时间: 2024-05-23
最后登录: 2024-09-18
查看electric的 主题 / 回贴
5楼  发表于: 2024-06-11 10:22
可以用中继来过度,置位复位中继就不会有双线圈的问题了
八非特
级别: 略有小成
精华主题: 0
发帖数量: 111 个
工控威望: 231 点
下载积分: 989 分
在线时间: 35(小时)
注册时间: 2024-04-24
最后登录: 2024-09-18
查看八非特的 主题 / 回贴
6楼  发表于: 2024-06-11 10:48
最好不要双线圈,问题多多
wingwf2000
级别: 探索解密
精华主题: 0
发帖数量: 41 个
工控威望: 139 点
下载积分: 612 分
在线时间: 13(小时)
注册时间: 2010-09-26
最后登录: 2024-09-05
查看wingwf2000的 主题 / 回贴
7楼  发表于: 2024-06-11 11:31
这个是可以的,关键是是否符合你的逻辑,只要你心里清楚实际的结果就行!