登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:200smart子程序问题

点击:4244 回复:13

附件 1.jpg
附件 2.jpg
各位高手,为什么子程序内有输出,调用子程序之后,输出为0呢?调用子程序的程序本身也是子程序,被Main调用。
感觉西门子的子程序使用起来约束很多,总是出现奇怪的逻辑现象,谁有关于子程序使用的注意事项的文件,或者视频学习资料。
这个程序的Main就是调用各种子程序,基本结构是:Main 调用  自动子程序,自动子程序  调用  动作程序  ,其余的以此类推(手动和报警功能块都是一样)。有啥要注意的吗?
20-09-07 14:49
调用以后才能条件执行,既然执行了,输出为零有问题吗?为何肯定输出一定是1?
20-09-07 14:54
当然有问题了,第二张图片显示电机已经有输出了,为何调用的子程序块中的输出却为0,还有子程序内的自加1一直在清零,根本加不上去,搞不清楚咋回事啊
最后修改:2020/9/7 15:29:35
20-09-07 15:27
子程序多次调用不要用定时器,上升沿。
建议都用IN_OUT变量,把变量换成IN_OUT试试,估计就OK了。
http://m.gkong.com/bbs/480716.ashx
我之前遇到的问题,子程序也没有多次调用,逻辑异常,换成IN_OUT就好了。
200 SMART的子程序感觉就是各种限制太多,上升沿+定时器都不能用,很蛋疼。
用欧姆龙的多,CJ CP 做的功能块感觉各种没限制还好。
最后修改:2020/9/7 15:59:27
20-09-07 15:55
我原以为仅仅是一般程序,只不过放在子程序中而已,因为这就是西门子程序的特色,没什么。其实,你的问题是带参数的子程序编程和调用,这个肯定要注意变量的设置了,正如楼上所言,许多变量要改为IN_OUT才能运行正常。确实如此!
20-09-07 17:42
你确定不是双线圈输出了?
附件 1.jpg
最后修改:2020/9/7 19:55:02
20-09-07 19:52
这乃是正解呀!确实是因为重复输出造成的。不过还有个问题,在不同的子程序中,我在IN\IN/OUT\OUT\TEMP中定义的局部变量名称如果一样,会出现混乱吗?还有在子程序中写自加1的指令,然后通过外部的脉冲触发其计数,为啥脉冲一过来,自加1指令数据一下子能涨好多。
20-09-08 08:34
如果这输出在不同的地方被使用,那就要看执行它的时机,你在这个子程序置1,离开子程序,其他地方又置0,最后就以0体现。
后来的问题,自加一?没有条件吗?后来的脉冲触发就是条件,脉冲快计的就快很正常的。
20-09-08 08:49
自加1前面有条件的,而且自加1脉冲是1S时间脉冲的上升沿。这个自加1指令感觉很奇怪,有时候会强制性的清零,可我子程序里没有指令将其清零。有时候又快速的往上加,真是搞不懂子程序里面要怎么做才能正常。
20-09-08 10:17
脉冲需写在子程序里
20-09-08 11:27

上一页下一页

工控新闻

更多新闻资讯