回复:STL高高手都难以回答的问题。

天枰

  • 帖子

    315
  • 精华

    10
  • 被关注

    15

论坛等级:侠士

注册时间:2007-08-09

普通 普通 如何晋级?

发布于 2008-01-09 16:30:08

0楼

局部变量在没有赋值以前是一个随机值,如果你的主程中只调用了一个功能(块),那么在模拟时可能这个局部变量的值一直为零或者为一,程式会输出一个稳定的值,但如果有多个功能(块)同时调用,局部变量的值就会发生变化而成为一个随机值;至于FN它是根据逻辑运算结果及FN线圈的当前值来判断本个扫描周期是否允许电流通过(或者说是否接通),如果逻辑运算结果为1,而FN线圈的当前值为0,它就允许电流流过,同时将FN线圈的值置为1;下个周期继续检查,如果线圈当前值为1,它就禁止电流流过,并且保持线圈当前值不变.现在的问题是,你使用了一个临时的局部变量来保存FN的线圈值,而在程式退出后这个值将无法保存,并且在下次调用这个功能时系统并不初始化局部寄存器,因此,当罗辑结果为1时,你的程输出就有可能出现变化的情况.
一定要注意,PLC并不初始化局部存储器的值,如果你自己也没有初始化(或者说赋值),就不要去使用,除非你想得到一个随机数
请试一下下面的程
set
= L0.0
clr
= L0.1

a m0.0
fn l0.0
= m0.1

a m0.0
fn L0.1
= m0.2

set
= l1.0
= l1.1
not
= l1.2

a l1.0
fn l 1.1
= m0.3

a l1.0
fn l1.2
= m0.4




评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54645条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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