您现在所在的是:

西门子SIEMENS

回帖:13个,阅读:4091 [上一页] [1] [2] [下一页]
* 帖子主题:

200smart子程序问题

2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2020/9/7 14:49:02
#0楼
附件 1.jpg

附件 2.jpg


各位高手,为什么子程序内有输出,调用子程序之后,输出为0呢?调用子程序的程序本身也是子程序,被Main调用。
感觉西门子的子程序使用起来约束很多,总是出现奇怪的逻辑现象,谁有关于子程序使用的注意事项的文件,或者视频学习资料。
这个程序的Main就是调用各种子程序,基本结构是:Main 调用  自动子程序,自动子程序  调用  动作程序  ,其余的以此类推(手动和报警功能块都是一样)。有啥要注意的吗?
266
康养科
文章数:80
年度积分:266
历史总积分:266
注册时间:2019/6/19
发站内信
发表于:2020/9/7 14:54:21
#1楼
调用以后才能条件执行,既然执行了,输出为零有问题吗?为何肯定输出一定是1?
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2020/9/7 15:27:53
#2楼
回复 #1楼 康养科
当然有问题了,第二张图片显示电机已经有输出了,为何调用的子程序块中的输出却为0,还有子程序内的自加1一直在清零,根本加不上去,搞不清楚咋回事啊
[此贴子已经被作者于2020/9/7 15:29:35编辑过]
20901
bnnyygy
文章数:5988
年度积分:1567
历史总积分:20901
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2020/9/7 15:55:36
#3楼
子程序多次调用不要用定时器,上升沿。

建议都用IN_OUT变量,把变量换成IN_OUT试试,估计就OK了。

http://bbs.gkong.com/archive.aspx?id=480716

我之前遇到的问题,子程序也没有多次调用,逻辑异常,换成IN_OUT就好了。


200 SMART的子程序感觉就是各种限制太多,上升沿+定时器都不能用,很蛋疼。

用欧姆龙的多,CJ CP 做的功能块感觉各种没限制还好。
[此贴子已经被作者于2020/9/7 15:59:27编辑过]
266
康养科
文章数:80
年度积分:266
历史总积分:266
注册时间:2019/6/19
发站内信
发表于:2020/9/7 17:42:17
#4楼
我原以为仅仅是一般程序,只不过放在子程序中而已,因为这就是西门子程序的特色,没什么。其实,你的问题是带参数的子程序编程和调用,这个肯定要注意变量的设置了,正如楼上所言,许多变量要改为IN_OUT才能运行正常。确实如此!
22922
gk_0 版主
文章数:7735
年度积分:703
历史总积分:22922
注册时间:2013/9/9
发站内信
2018论坛贡献奖
2017论坛贡献奖
2017国庆活动(二)
2016论坛贡献奖
2016国庆活动(三)
英威腾变频器(一)
S7-200 SMART(一)
寻找英威腾(三)
英威腾PLC体验(一)
2015春节活动
2013辞旧迎新
2013辞旧迎新
2013国庆活动
发表于:2020/9/7 19:52:02
#5楼
你确定不是双线圈输出了?
附件 1.jpg
[此贴子已经被作者于2020/9/7 19:55:02编辑过]
不被人嘲笑的梦想,就不值得去追求!
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2020/9/8 8:34:40
#6楼
回复 #5楼 gk_0
这乃是正解呀!确实是因为重复输出造成的。不过还有个问题,在不同的子程序中,我在IN\IN/OUT\OUT\TEMP中定义的局部变量名称如果一样,会出现混乱吗?还有在子程序中写自加1的指令,然后通过外部的脉冲触发其计数,为啥脉冲一过来,自加1指令数据一下子能涨好多。
7968
蜀中之首
文章数:5230
年度积分:50
历史总积分:7968
注册时间:2018/5/27
发站内信
发表于:2020/9/8 8:49:39
#7楼
如果这输出在不同的地方被使用,那就要看执行它的时机,你在这个子程序置1,离开子程序,其他地方又置0,最后就以0体现。

后来的问题,自加一?没有条件吗?后来的脉冲触发就是条件,脉冲快计的就快很正常的。
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2020/9/8 10:17:14
#8楼
回复 #7楼 蜀中之首
自加1前面有条件的,而且自加1脉冲是1S时间脉冲的上升沿。这个自加1指令感觉很奇怪,有时候会强制性的清零,可我子程序里没有指令将其清零。有时候又快速的往上加,真是搞不懂子程序里面要怎么做才能正常。
22922
gk_0 版主
文章数:7735
年度积分:703
历史总积分:22922
注册时间:2013/9/9
发站内信
2018论坛贡献奖
2017论坛贡献奖
2017国庆活动(二)
2016论坛贡献奖
2016国庆活动(三)
英威腾变频器(一)
S7-200 SMART(一)
寻找英威腾(三)
英威腾PLC体验(一)
2015春节活动
2013辞旧迎新
2013辞旧迎新
2013国庆活动
发表于:2020/9/8 11:27:54
#9楼
回复 #6楼 刘国辉
脉冲需写在子程序里
不被人嘲笑的梦想,就不值得去追求!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004