jys159
级别: 正式会员
精华主题: 0
发帖数量: 5 个
工控威望: 94 点
下载积分: 632 分
在线时间: 3(小时)
注册时间: 2015-10-27
最后登录: 2015-11-18
查看jys159的 主题 / 回贴
楼主  发表于: 2015-10-27 23:06
程序图片不好看,我弄在PDF了,h  t t p://pan.baidu.com/s/1qWtIVwS
求大师解答!!主程序调用子程序的一个问题,由于是新手,困扰了好几天了。我的思路是这样的,子程序里用定时器不太好用,我是用了一个字递增指令,加一个SM0.5来定时,用来给LW9递增。因为是几个阀门的状态切换,三次一个循环,间隔时间是一样的,所以LW0是输入的是一个表示时间周期的整数,LW11是LW0乘2得来的,LW13是LW0乘3得来的。
阀门第一次状态,当LW9小于等于预定周期LW0时,一个状态。
阀门第二次状态:当LW9小于LW11,大于LW0,第二个状态;
阀门第三次状态:当LW9小于LW13,大于LW11,第三个状态;
当LW9等于LW13时,给LW9赋值0,让其回到第一个状态。
......依次循环,三个状态。
问题1困扰:我现在是想每次执行这个子程序时,从第一个状态执行,按说我子程序的第一个网络通过SM0.1给LW9赋值了0,根据条件它就会执行第一个状态,可是实际情况不是,当执行到第二个状态,我断开主程序的M0.2(就是子程序‘逆洗切换’使能端断电),在合上M0.2后,还是继续从第二个状态执行,这是为什么呢???百思不得其解!!
还有就是B,I,D,W,用的可能不对,大家看看还有什么不妥吗?我用PLC调试,子程序监控不到局部变量的变化过程,所以不知道哪出问题了。
问题2还有就是子程序中SM0.1的使用,本意:扫描第一个周期执行一次。子程序中是每次调用子程序时执行一次?
问题3同时调用两个子程序,例如第一个我要实时显示一堆温度啊压力的值,通过参数转换子程序的计算,这个子程序一直是调用的状态。就像刚才调用这个的同时,我又调用了‘逆洗切换’这个子程序,这样可以吗?实际运行中是,第一个调用的子程序没问题,各参数正常显示。逆洗切换这个程序的那几个阀门状态就不变,我怀疑是局部变量的值冲突,求大师解答?或者就我这个状况有什么更好的解决方法?比如把参数转换的子程序直接输入子程序还是?
jys159
级别: 正式会员
精华主题: 0
发帖数量: 5 个
工控威望: 94 点
下载积分: 632 分
在线时间: 3(小时)
注册时间: 2015-10-27
最后登录: 2015-11-18
查看jys159的 主题 / 回贴
1楼  发表于: 2015-10-27 23:07
求解,新人不能传附件和发网址,H T T P要重新输入,我加了空格
jys159
级别: 正式会员
精华主题: 0
发帖数量: 5 个
工控威望: 94 点
下载积分: 632 分
在线时间: 3(小时)
注册时间: 2015-10-27
最后登录: 2015-11-18
查看jys159的 主题 / 回贴
2楼  发表于: 2015-10-28 09:53
没有人来看看吗????大师在哪里??
wwcwwc
级别: VIP会员

精华主题: 0
发帖数量: 3393 个
工控威望: 3189 点
下载积分: 70387 分
在线时间: 1603(小时)
注册时间: 2008-04-20
最后登录: 2024-10-31
查看wwcwwc的 主题 / 回贴
3楼  发表于: 2015-10-28 15:48
你看看帮助中的SM0.1含义。
jys159
级别: 正式会员
精华主题: 0
发帖数量: 5 个
工控威望: 94 点
下载积分: 632 分
在线时间: 3(小时)
注册时间: 2015-10-27
最后登录: 2015-11-18
查看jys159的 主题 / 回贴
4楼  发表于: 2015-10-29 15:14
sM0.1怎么用
taotao266
级别: 正式会员
精华主题: 0
发帖数量: 18 个
工控威望: 76 点
下载积分: 1310 分
在线时间: 32(小时)
注册时间: 2015-05-21
最后登录: 2021-06-13
查看taotao266的 主题 / 回贴
5楼  发表于: 2015-11-17 17:51
注意子程序变量参数数据类型<IN_OUT >还有一个OUT。问题在这里面