S7-200PLC出现干扰时因为这样的原因!

2017-04-25 11:06 更新 卢思敏 浏览:1044人次 微信二维码

学工控技术,拿10万年薪

点下面注册
马上注册,免费学习plc视频教程
马上注册,免费学习超过100课时视频教程,免费下载海量学习资料


前几天看到技成论坛中有学员发了个这样的问题:

 

他在学习带参数子程序的编写,编写了一个简单的带参数的子程序,但是发现在调用时,第一个子程序执行后,第二个子程序也会有输出,他不知道是为什么?程序很简单,是我们编程程序经常会用到的一个起保停电路。程序运行结果如下图所示程序中,I0.0接通后,Q0.0输出为1Q0.1不应该为1的却也为1了。(左侧为主程序,右侧为子程序)。

 

下面是我个人之见解,若有分享不当之处,望大家指正,谢谢!

为什么会出现这个情况呢?

这主要是对于子程序中变量的类型应用不正确造成的这种错误。子程序中有四种变量类型,分别为:

1)输入变量(IN):用于传递实际参数进入子程序运算

2)输入/输出变量(IN/OUT):用于把实际参数的初始值传递到子程序中进行运算,运算完后把结果放回到该实际参数中,因此这个变量的实际参数不能使用常数。

3)输出变量(OUT):该变量分配的实参用于存储子程序中运算完后的结果

4) 临时变量(TEMP):用于存储子程序中运算的中间结果。


 在这四种变量中,对子程序输出会有影响的主要是后面两个变量,我们主要了解后面两个变量的时候,就可以避免带参数子程序在重复调用时会出现相互干扰的问题。

首先,我们看输出变量(OUT)的使用,在上面这个朋友所发表的问题中,就是因为输出变量的问题,所以才造成了这种情况的。

我们可以来分析这个程序,在这个程序中,“启动”、“停止”这两个明显建立的是输入变量(IN)的变量类型,而“输出”这个建立的是输出变量(OUT)类型。我们要分析他为什么会出现干扰,得从PLC的扫描过程,及实操与形参的对应如下图所示,箭头方向表示数据传递方向。

众所周知PLC的扫描是从上往下周期型扫描的,所以PLC在执行程序的时候,会先执行网络1,然后在执行网络2的程序,所以当执行网络1的程序的时候,会把实参的状态传递到子程序的形参中,所以对于网络1的程序来讲,形式参数:“#启动:L0.0=I0.0,“#停止:L0.1=I0.1 而实参Q0.0=#输出:L0.2

 

所以在执行这个子程序时,I0.0=1I0.1=0的时候,即按下启动按钮I0.0时,形参“#启动:L0.0=1”, “#停止:L0.1=0”,执行程序后 “#输出:L0.2=1”因Q0.0= #输出:L0.2”,所以Q0.0=1.

 

当执行网络2时,形式参数:#启动:L0.0=I0.2,“#停止:L0.1=I0.3 而实参Q0.1=#输出:L0.2”所以在执行网络2的程序时,当I0.0=0I0.1=1时,则:“#启动:L0.0=0”,“#停止:L0.1=0”因“#输出:L0.2”在上一个网络的运行结果为1,所以当“#启动:L0.0”与“#输出:L0.2”进行逻辑或运算后,得到的结果为1,然后与“#停止:L0.1”的非做逻辑与运算,所以“#输出:L0.2”还是保持为1的结果。所以输出Q0.1=#输出:L0.2=1.

 

通过这样的分析,前面调用子程序的输出状态或在下个子程序调用中会用到,因此大家就可以理解为什么按下I0.0这个启动按钮后,Q0.0 Q0.1都会有输出了。

 

若需要处理这个问题应该如何处理呢?需要处理这个问题,很简单,我们只需要把这个输出的变量改成输入/输出的变量就可以了,因为输入/输出变量,相对于输出变量来讲,他是需要把初始值给到我们的子程序对应的形参去运算,运算完后在给出,还是以刚才的方法去分析,就算前一个网络中,他的输出结果“#输出:L0.2=1”执行到下一个网络后,因为改成输入/输出,会把Q0.1的初始状态0,给到“#输出:L0.2”,所以开始运算时是以“#启动:L0.0”与“#输出:L0.2”进行逻辑或运算,因两个状态都为0,所以运算结果为0,然后跟“#停止:L0.1的非”做逻辑与运算,输出结果“#输出:L0.2=0”因此Q0.1=#输出:L0.2=0.所以当你把这个变量改成输入/输出变量的时候就不会产生干扰了。

 

我们再来看另外的一个带形式参数的子程序,程序如下图所示:

1)变量表:

2)子程序

 3)主程序

大家可以分析下,这个程序,在运行的过程中会不会出现干扰呢?

 

很明显,你只需要掌握了前面我们所说的分析方法去分析,你会发现这个程序也是会相互干扰的,如下图所示:

这个程序其实跟我们前面所提到的是一样的意思,如何去改,大家应该也知道。

若程序改成这样后,大家觉得是否还是会出现干扰呢?

 1)变量表


2)子程序


3)主程序


在程序中,我们把原来开始计算的那个条件给去掉了,换成了SM0.0作为条件,大家可以自己分析下,这个程序会不会出现相互干扰的情况。


作者:技成培训网(曾鑫)

本文版权为技成所有,未经同意,盗取必究!

推荐学习相关课程:

西门子S7-200 SMART PLC编程应用入门

西门子S7-200从入门到精通

西门子S7-300中高级应用技术

西门子S7-300使用指南


叨叨直播课
19年06月16日

好书推荐
< >

  • 三菱 PLC 技术功能指令应用详解

    为三菱FX2N系列PLC顺控程序设计和功能指令讲解,重点是功能指令讲解。为了使读者能够在较短的时间内正确理解、 掌握和应用功能指令,书中除了对指令本身作了详细的说明外...

  • 三菱FX系列PLC定位控制应用技术

    以三菱电动机的三菱FX系列PLC为目标机型,以广大自动化技术的初学者为对象而编写的一本专门讲解定位控制技术的入门书

  • PLC模拟量与通信控制应用实践

    以三菱fx2n plc为目标机型,介绍了plc在模拟量控制和通信控制中的应用。在模拟量控制中, 重点介绍了三菱fx2n plc模拟量特殊模块和pid控制应用...

  • 工控技术应用数学

    本书是针对工作在生产第一线的电工编写的。他们或因数学知识没有学好,或因时间长了有所遗忘等种种原因, 在学习和应用电工电子技术...

  1. 1
  2. 2