回复:SMART200 不同子程序L区发生关联

已锁定

李岩

西门子1847工业学习平台

  • 帖子

    3183
  • 精华

    34
  • 被关注

    112

论坛等级:至圣

注册时间:2004-03-31

钻石 钻石 如何晋级?

发布于 2022-06-09 18:18:37

13楼

展开查看
以下是引用一世芳华在2022-06-09 10:23:00的发言 >10楼

我这里有一个案例,就是子程序用了边沿,触发是sm0.5,运行结果是,网络1的就是前一个被调用的会执行,第二个就不会执行了。




以下是引用李岩在2022-06-09 09:36:29的发言 >8楼:边沿机制的关键词是...

引用8楼详细内容:

边沿机制的关键词是:上一次状态和本次状态。所以这个边沿位是需要静态存储的,就是不能共享。200、smart的边沿位是系统自动分配的,西门子其他更高端的CPU是需要人工指定的(功能更强)。

理论上,只要子程序支持静态变量(接口中),就可以实现可靠的边沿(可能需要自己编程),如果再允许自己定义边沿的位,就可以直接使用(无需编程)了。

在STEP7 V5.X、TIA的STEP7中,FB只要需要边沿,本胖是不管三七二十一,先在静态变量中定义16个边沿位再说,反正即使你用一个边沿,系统也会扣除16位的内存。FC中没有静态变量(接口),所以不能这么用。

以下是引用李岩在2022-06-08 20:13:13的发言 >7楼: 本胖脚的关联就对...

引用7楼详细内容:

本胖脚的关联就对了!L区是共用的,必须先赋值再使用,否则肯定和其他的某个子程序关联。要不然L都是独立的,得多用多少内存啊!smart根本就没有独立的子程序接口内存,否则就支持STAT型的静态存储器了,也就没有边沿在子程序中难用的问题了。

这么用是不行的,你随机数子程序中的|P|是全局变量、却没有放到管脚(接口),不管哪个上位程序调用都用同一个|P|边沿位,所以肯定乱套。

我记得我的那个子程序是把|P|的边沿位放在了管教上,每个调用的上位程序都需要分配不同的位变量。

国人当自强 共同努力 抵制日货
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8941条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。