建材之家 JC68.COM®

西门子S7-200子程序出现问题的原因

   2024-09-12 建材之家930
核心提示:在OB1中两次调用上一个日志中的子程序SBR_0,在运行程序时发现,接通I0.0外接的小开关,Q0.0和Q0.1同时变为ON。这是因为分配给SBR_0的输出参数“电动机”的地址为L0.2,第一次调用SBR_0之后,L0.2的值为ON。第二次调用SBR_0时,虽然起动按钮I0.2为OFF,但是因为两次调用SBR_0时局部变量区是公用的,此时输出参数“电动机”(L0.2)仍然为ON,所以第二次调……
在OB1中两次调用上一个日志中的子程序SBR_0,在运行程序时发现,接通I0.0外接的小开关,Q0.0和Q0.1同时变为ON。这是因为分配给SBR_0的输出参数“电动机”的地址为L0.2,第一次调用SBR_0之后,L0.2的值为ON。第二次调用SBR_0时,虽然起动按钮I0.2为OFF,但是因为两次调用SBR_0时局部变量区是公用的,此时输出参数“电动机”(L0.2)仍然为ON,所以第二次调用SBR_0之后,由于执行图4-40中的程序,输出参数“电动机”使Q0.1为ON。子程序的局部变量一定要遵循“先赋值后使用”的原则。
S7-200的子程序使用临时变量来传递参数,OUT类型的参数不会把实参读入形参,所以这里使用OUT形参的触点就出现了临时变量未赋值先使用的情况。将输出参数“电动机”的变量类型改为IN_OUT就可以解决上述问题。这是因为两次调用子程序,参数“电动机”返回的运算结果分别用Q0.0和Q0.1保存,在第二次调用子程序SBR_0,执行“O  #电动机”指令时,因为“电动机”是IN_OUT参数,使用的是前一个扫描周期保存到Q0.1的值,与本扫描周期第一次调用子程序后参数“电动机”的值无关。
简单地说,对于有记忆功能的电路,需要用存储单元来保存要记忆的变量值。S7-300的FB可以用静态变量来保存,而S7-200的子程序没有静态变量,只有用IN_OUT变量的实参(本例中的Q0.1)来保存变量值。
 
【温馨提示】本文内容和观点为作者所有,本站只提供信息存储空间服务,如有涉嫌抄袭/侵权/违规内容请联系QQ:727533600 删除!
广告位出租
举报收藏 0打赏 0评论 0
 

上一篇:西门子PLC对于STL语句中上升沿实现的方式

比如I1.0上升沿的时候,Q1.0得电.可以写成如下的语句 A I1.0 FP M 40.0 S Q1.0但是我不明白的是为啥用M40.0或者其他中间位?不是检测I1.0的上升沿么,为啥不写成 FP I1.0?答:1、有关 FP指令:使用 RLO 上升沿检测指令(FP )可以在 RLO 从“0”变为“1”时检测到一个上

下一篇:程序扫描看门狗超时错误

小弟最近做个项目是有关步进电机的,电机运行的有效行程内有一个光电传感器,我以之为零点,找零的过程是电机快速运行到零点后,由于惯性,电机已经超出了零点的位置,这时候我让电机切换到慢速,以小行程来逼近零点,如一次运行20脉冲,判断是否到零点,如果没到就再运行20脉冲,我将这个功能做成一个子程序 FzeroFzero...
更多>文章标签:电工 电工知识 ;相关产品:
广告位出租
更多>同类水电电工
推荐图文
专精特新
点击排行
推荐水电电工更多>
专精特新
最新问答更多>
微商机更多>
专精特新
俱乐部更多>
广告位出租
建材之家  |  关于建材之家  |  联系我们  |  加入建材之家  |  隐私政策  |  使用协议  |  财务相关  |  城市分站  |  招商加盟  |  建材群站  |  网站地图 |  排名推广 |  广告服务 |  网站留言 |  违规举报  |  sitemap  |  粤ICP备14017808号
博一建材

博一建材

点击查看放大的二维码

微信服务号:jc68-1

建材之家小程序码

建材之家小程序码

云建会小程序码

云建会小程序码

建材商机小程序码

建材商机小程序码

博一建材小程序码

博一建材小程序码

工商网监
全国服务电话:0755-82034561/18923733323;客服QQ:727533600/876399953;新浪微博ID:jc68com; 微信服务号ID:jc68-1粤公网安备 44030402000745号
建材之家旨在传递更多商机信息!信息内容都是网络用户自发贡献,本站只提供信息存储空间服务,如有涉嫌抄袭/侵权/违规内容请告知QQ:275171283处理!
©2015-2020 ByBc.CN Powered by 建材之家 v4.5 策划运营:深圳市博一建材有限公司