签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
大家好:
小弟在调试过程中发现问题,所做的子程序 单个调用时候没有问题可以正常运行,但是多个同时调用就会出现问题,不能正常输出。
后来发现问题主要出现在 计时器这一段,但不知道是何原因:
考虑到 程序需要重复调用,特地将计时改用 优化的计时器的方式(BGN-ITIME、CAL-ITIME指令)
PLC程序-计时器ms.zip
子程序如下图,开始计时达到设定的时间后,输出 计时完成的状态
(以下为了方便查看 特地省略了其他动作流程)
---------
只调用一个的时候 ,可以正常运行
两个同时调用时,V100.1&V100.4不得电.程序无法正常运行了,程序2中V100.5始终不会得电
只有两个子程序的输入条件V100.1、V100.4(开始)都有信号时候,两个子程序的输出 V100.2、V100.5会同时输出
---
程序有何问题以及如何改进 还请大家指正[抱拳][抱拳][抱拳]
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1722655&b_id=64&s_id=0&num=7
沿触发不能用,要拿出来
LD10可以这么用。这就叫做先赋值了。但是LD6就不可以这么用了。它没有先赋值。你能理解其中的区别吗?LD6就要用in/out。BT不执行是没有值给到LD6的。LD6会有别的子程序使用,值会被改变的。这个LD6极大机会就是那个LD6。
不信你可以试试。在主程序里调用两个子程序。一个子程序向LD56mov进去一个12345。另一个子程序把LD56的值mov出来到MD0。你看看会怎样?两个子程序什么参数都不带。
你的程序中P触点没有接通LD6自然没有写进去有用的值。后面的比较触点不接通,线圈就会off。这个off是必然的。而前面的LD6是不确定的。两个情况都是触点不通,但是一个是确定的,一个是不确定的 。
你把ld6改成in/out,把边缘指令用触点逻辑写。
LD I0.0
LPS
AN M0.0
= M0.1
LPP
= M0.0
上面的m0.1就是I0.0的上升缘。(下降缘自己想)你把M0.0也做成IN/out就可以了。
是自制定时器子程序吗?如果是,直接搞个给你,几年前我记得我写过一个。10ms或者1ms时基的子程序
多次调用同一个子程序时!把第一个子程序名字_1 第二个子程序名字_2
那就不叫多次调用了。这改个名字没用的。那里面的地址是不是全部都改一遍?
引用4楼详细内容:
复制子程序 黏贴子程序_1 黏贴子程序_2 这样不容易出现BUG
楼上。按钮启停接触器自锁这个程序。你试试复制两个然后控制两个电机启停,看看能行不?只改一个子程序的名称,别改两个程序的地址啊。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录