回复:我编的这一节程序做个库 调用一次就正常 调用两次就不正常

已锁定

甫哥

  • 帖子

    1448
  • 精华

    72
  • 被关注

    84

论坛等级:至圣

注册时间:2009-01-04

白金 白金 如何晋级?

发布于 2023-12-06 08:51:33

7楼

    KT1(LW4)是当前降压启动时间的计数值,调用执行子程序时必须先将上周期的数据读入子程序的LW4中,执行结束后,必须再传送出子程序,以保存结果。即:保存历史数据。

   您用的变量类型是TEMP,子程序执行结束后,该类型数据不能被保存。这里说的【不能被保存】指的是:极有可能被其它程序修改其保存的数据。重复调用时,或其它子程序使用了(含地址重叠)该地址(LW4)后,其保存的数据会被修改,不可控。即:不能正确保存历史数据。使用已被修改的错误历史数据,怎能获得正确的累加结果。

  因此,KT1(LW4)的变量类型必须使用IN_OUT,不能用TEMP。

  KT1(LW4)使用IN_OUT变量时:该子程序被调用执行时,先将上次调用执行后保存的数据,写入子程序中(LW4中),子程序执行结束后,再将新数据值传出子程序保存,以备下次调用时使用。

  L区的使用,必须遵循 先写(先赋值)、后读(后使用)的原则。

书山有路勤为径,学海无涯苦作舟;三人行,必有我师;森林之外的树木也能成才
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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