西门子S7-200PLC带参数调用的子程序运行为什么异常?

   更新日期:2024-09-15     来源:建材之家    浏览:25    评论:0    
核心提示:西门子S7-200PLC两个子程序的局部变量和程序完全相同(见下面的右图),运行时发现I0.0为1时Q0.0和Q1.0同时变为1。将置位指令改为对L0.1的赋值(线圈)指令后运行正常,将OUT参数“输出”改为IN_OUT参数运行也正常。为什么?1.出错的原因S线圈(置位指令)断开时,L0.1的值保持不变。从子程序的局部变量表可以看出,输入参数IN和输出参数OUT均用L区的局部变量保存。这两个

使用摇表测量绝缘的安全注意事项

推荐简介:1.所用摇表测量高压设备绝缘,应由两人担任。2.测量用的导线,应使用绝缘导线,其端部应有绝缘套。3.测量绝缘时,必须将被测设备从各方面断开,验明无电压,确实证明设备无人工作后,方可进行。在测量时禁止他人接近设备。 在测量绝缘前后,必须将被试设备对地放电。 测量线路绝缘,应取得对方允许后方可进行。4.在有感应电压的线路上(同杆架设的双回路或单回路与另一线路有平行段)测量绝缘......
西门子S7-200PLC两个子程序的局部变量和程序完全相同(见下面的右图),运行时发现I0.0为1时Q0.0和Q1.0同时变为1。将置位指令改为对L0.1的赋值(线圈)指令后运行正常,将OUT参数“输出”改为IN_OUT参数运行也正常。为什么?
1.出错的原因
S线圈(置位指令)断开时,L0.1的值保持不变。
从子程序的局部变量表可以看出,输入参数IN和输出参数OUT均用L区的局部变量保存。这两个子程序属于同一级,它们的局部变量使用同一片物理存储区。换句话说,两个子程序的L0.1先后使用同一个物理存储器位。
OB1中的I0.0为1时, 子程序SBR_0中的L0.1和它的实参Q0.0被置位。在执行SBR_1时,因为两个子程序的L0.1先后使用同一个物理存储器位,SBR_1的L0.1仍然为1,使它的实参Q1.0也变为1。Q1.0变为1不是因为程序的作用,而是两个子程序的L0.1共用同一个物理存储器位引起的。
2.将OUT参数改为IN_OUT参数未出错的原因
在Q1.0为0,I0.0为1时,L0.1因为是IN_OUT参数,刚开始执行SBR_1时,L0.1的输入值为0,与SBR_0执行后L0.1的值无关。因为I1.0为0,SBR_1执行完后,L0.1的值不变,仍然为0。所以Q1.0的值为0,不会变为1。
3.置位指令改为赋值指令(线圈)未出错的原因
假设I0.0为1时,I1.0为0,执行SBR_1的程序时,L0.0的触点断开,使L0.1的线圈断电,所以Q1.0为0。
4.同样的程序为什么S7-300不会出错
S7-300的功能(FC)和S7-200的子程序差不多,S7-300的FC1和FC2中同样的置位程序运行时不会出错。这是因为S7-300和S7-200保存IN、OUT参数的方法不一样。S7-300同一级的FC的临时局部变量(TEMP)使用同一片物理存储区,它们的IN、OUT参数没有标出L区的地址,与临时变量的保存方法不同。因此同样的程序S7-300不会出错。
小程序码
 
打赏
 
更多>文章标签:电工 电工知识
更多>同类水电电工资讯
0相关评论

推荐图文更多...
点击排行更多...
水电商机信息更多...
水电电工圈更多...
最新视频更多...
推荐产品更多...
天花之家 | 木门之家 | 灯具之家 | 铁艺之家 | 幕墙之家 | 五金头条 | 楼梯头条 | 墙纸头条 | 壁纸头条 | 玻璃头条 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 陶瓷之家 | 照明之家 | 防水之家 | 防盗之家 | 博一建材 | 卫浴之家 | 区快洞察 | 潜江建材 | 仙桃建材 | 恩施建材 | 随州建材 | 咸宁建材 | 黄冈建材 | 荆州建材 | 孝感建材 | 荆门建材 | 鄂州建材 | 襄樊建材 | 宜昌建材 | 十堰建材 | 黄石建材 | 长沙建材 | 湘西建材 | 娄底建材 | 怀化建材 | 永州建材 | 郴州建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号-1
(c)2015-2017 BO-YI.COM SYSTEM All Rights Reserved
Powered by 电工之家