S7200子程序相互干涉 点击:1208 | 回复:10



信仰的真相

    
  • 精华:0帖
  • 求助:90帖
  • 帖子:104帖 | 398回
  • 年度积分:0
  • 历史总积分:1934
  • 注册:2012年3月14日
发表于:2014-08-16 11:55:42
楼主
求助帖10分-已结帖

楼主在用S7200编程的时候,用到两个子程序,一个是水泵运行的子程序,一个是模拟量处理的子程序。

水泵运行子程序在主程序网络5,用到了L14.0-L14.3来输出水泵,

模拟量子程序在主程序网络6,用到了LD14来存放液位

然后发现有时会出现

这样污泥泵不该运行但还是有输出的情况,

楼主的问题:1,子程序里面的L存储器调用是公用的吗,第一个子程序里面的L数值还会保留到另一个子程序中,导致干涉

2,我这有在子程序前面加一个把L都复位,

是不是就不会发生干涉了




zhu860423060

  • 精华:5帖
  • 求助:27帖
  • 帖子:272帖 | 3543回
  • 年度积分:302
  • 历史总积分:21193
  • 注册:2011年3月06日
发表于:2014-08-16 11:58:24
1楼

L14.0-L14.3和LD14重复使用

秦君_1

  • 精华:8帖
  • 求助:22帖
  • 帖子:148帖 | 4867回
  • 年度积分:1651
  • 历史总积分:39896
  • 注册:2005年6月28日
发表于:2014-08-16 13:43:38
2楼

引用 zhu860423060 的回复内容: L14.0-L14.3和LD14重复使用



轨迹QR

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 66回
  • 年度积分:0
  • 历史总积分:577
  • 注册:2012年8月21日
发表于:2014-08-16 13:55:48
3楼

L是局部变量,两个子程序的L不会重复。程序中的每个程序组织单元(包括主程序、子程序和中断程序),均有自己的64字节局部变量表。仔细的检查下程序是不是其他地方出问题了。

银光人生—华

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 13597回
  • 年度积分:0
  • 历史总积分:52877
  • 注册:2007年11月23日
发表于:2014-08-16 14:17:36
4楼

建议:

1、换个地址试试,正如楼上说的,也许地址重叠了。
2、楼主初始化L应该用SM0.1

3、是否有别的地方地址重叠,建议你可以把程序截图上传上来,这样更全面一点。

aihua101

  • 精华:0帖
  • 求助:1帖
  • 帖子:30帖 | 547回
  • 年度积分:10
  • 历史总积分:1583
  • 注册:2005年7月01日
发表于:2014-08-16 16:07:15
5楼

回复内容:

对: 轨迹QR L是局部变量,两个子程序的L不会重复。程序中的每个程序... 内容的回复!


你的程序有问题!不是L数据重叠的原因!

建议你看看工控老鬼的一篇博文  http://blog.sina.com.cn/s/blog_669692a60101hdkl.html

信仰的真相

  • 精华:0帖
  • 求助:90帖
  • 帖子:104帖 | 398回
  • 年度积分:0
  • 历史总积分:1934
  • 注册:2012年3月14日
发表于:2014-08-16 16:35:38
6楼

我去西门子官网找资料,楼上说的都不对,子程序里面的L如果是OUT类型会调用前面的子程序数据


xdnn

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 12回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2003年6月25日
发表于:2014-08-17 10:05:37
7楼

谢谢提供的技术信息,好好学习l

autosoeasy

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 77回
  • 年度积分:0
  • 历史总积分:174
  • 注册:2011年5月16日
发表于:2014-08-18 09:43:35
8楼

在两个不同的子程序中相同的L(局部变量),是不会冲突的。有其他问题

fypy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 163回
  • 年度积分:0
  • 历史总积分:857
  • 注册:2009年6月29日
发表于:2014-09-13 22:43:41
9楼

   很多时候是忘记了先赋值再使用原则。

ntplc2017

  • 精华:0帖
  • 求助:0帖
  • 帖子:38帖 | 375回
  • 年度积分:0
  • 历史总积分:685
  • 注册:2018年5月11日
发表于:2018-09-18 11:09:18
10楼

L单元表示临时寄存器, 它只能从这个子程序的参数传给L,然后再用来控制, 不能够在本子程序里面还没给它传参数就直接使用。不同子程序之间的L单元是共用的。



热门招聘
相关主题

官方公众号

智造工程师