全国服务热线 15221406036

西门子6GK7243-1GX00-0XE0参数规格

更新时间:2024-05-08 07:10:00
价格:请来电询价
联系电话:
联系手机: 15221406036
联系人:聂航
让卖家联系我
详细介绍

西门子6GK7243-1GX00-0XE0参数规格

在S7-200编程中,子程序想必大家都用过,使用子程序可以更好地组织程序结构,便于阅读和调试,也可以缩短程序代码。但是使用子程序也有一些需要注意的地方,除了子程序在同一周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器之外,还有子程序中局部变量的特点,在编程多次调用带参数子程序时要特别注意。下面就是前些天热线上遇到的一个Case,非常有代表性,在这里跟大家分享。
E:您好,西门子技术支持。
C:您好,我想问下,200子程序是不是多次调用时会不好使?
E:不会啊,您是不是在子程序里使用了沿指令或者定时器?
C:没有啊,我就编了一句很简单的开关程序,开关闭合,线圈导通,然后主程序里调用了两次这个子程序,结果个I点闭合了,两个Q点都导通了。
E:(心里活动:看来是和子程序的局部变量有关了,估计客户程序逻辑有问题)那请您描述一下您的子程序吧,我帮您看看。
于是客户描述了一下自己的程序,大致了解了之后告知客户我这边测试下,稍后回复。
客户的程序是这样的:
子程序:是个常见的自保持逻辑,接口参数如红框所示。

图. 01
主程序:调用了两次上面的子程序,实现I0.0和I0.1控制Q0.0的闭合和断开,I0.2和I0.3控制Q0.1的闭合和断开。

图. 02
那么在线测试下程序执行情况,发现果然如客户所描述的,I0.0为1后,Q0.0和Q0.1都为1了。见下图.03所示。而如果闭合I0.2,则Q0.0和Q0.1都断开。

图. 03
为什么会这样呢?首先我们先明确子程序局部变量的特点。局部变量的变量类型分为四种:IN,IN_OUT,OUT和TEMP,局部变量存储区是在子程序调用时开辟的,子程序调用完成,局部变量占用的存储空间释放。
我们来分析下客户的子程序。
在主程序次调用子程序时,如果I0.0为1,I0.1为0,它们将自身值分别传给输入局部变量#AA和#BB,子程序中程序逻辑执行如下图.04所示。此时局部变量#CC值为1,子程序完成,#CC将值传送到输出参数Q0.0上,使其置1。根据局部变量的特点,子程序次调用完成后,局部变量存储区释放。

图.04

那么当主程序第二次调用该子程序时,开辟临时存储空间,但是此时的存储空间与次调用时开辟的不一定一致。可是,也有可能由于程序简单,仍然使用次调用时占用的存储空间。如果这种情况发生了,那么次调用时已经将#CC的L0.2置了1,而此值依旧存在,那么第二次调用时虽然输入参数I0.2和I0.3为0 ,但是#CC(L0.2)为1,由于客户的子程序逻辑有自保持部分,所以后L0.2的逻辑结果仍然是1。子程序完成后,#CC将值传送到输出参数Q0.1上,使其置1。所以就会出现客户反映的那种问题。
那么该如何避免这种情况呢?
大家是否还记得刚刚介绍局部变量参数类型时除了IN, OUT类型外,还有一种类型叫IN_OUT,这种类型的参数是先读入,然后再写出,这里我们就可以利用它的特点解决上面的问题。
下面对子程序的参数进行修改,将原先的#CC变量类型改为IN_OUT。如下图所示:

图.05
主程序结构不变,如下所示,可以看到由于#CC的类型是IN-OUT,它在子程序块的接口位置也转到了左侧输入侧。

图.06
下面再次将I0.0置1,其他输入都为0,监控程序状态,如图.07所示,可以看到只有Q0.0为1,Q0.1状态为0。而如果将I0.1置1, Q0.0被复位,Q0.1还是0,这样就符合客户的控制要求了。

图.07
同样,如果只给I0.2置1,那么也只有Q0.1会亮,不会再影响Q0.0。
了解了IN_OUT类型变量的特点,就不难分析以上的结果。因为每次调用子程序时,局部变量#CC都会先去读取输入参数Q0.0或Q0.1的状态,所以即使两次调用子程序时,#CC变量使用的同一区域,该区域的值也会在开始被Q点的状态所修改,就不存在两次调用相互影响的情况了。
另外,如果在子程序一开始就添加一条指令,对局部变量#CC进行赋初值(如图.08),也可以避免临时变量区数值不定的问题,您可以尝试测试下。

图.08
所以,在编写200子程序时要特别注意局部变量的特点,一旦出现多次调用不正常的情况,就可以从局部变量的特点出发分析,看看是不是存在隐患。善加利用IN_OUT变量也许可以解决许多问题。


问题1.  SFC chart有哪些状态,各种状态之间如何转换?

SFC chart是顺序功能图(Sequential Function Chart)的简写,SFC chart有16种状态,如下图1所示:

图1 SFC chart状态结构图
·         稳定状态:需要通过事件触发才会退出该状态,包括:Ready、Run、Completed、Aborted、stopped、Held、Held(error)
·         非稳定状态:不需要事件触发,顺控程序执行完之后会自动退出该状态,包括:Starting、Completing、error(Completing)、Holding、Error、Resuming、Resuming(Error)、Aborting、Stopping
注:

  • Ready状态也称为Idle,Abort命令也称为Cancel

·         图中黑色细线表示顺控程序会在处理完毕之后会自动转入下一个状态,例如StartingàRun,holdingàheld等
·         图中黑色粗线表示事件触发,即状态改变需要事件触发,例如ReadyàRun需要Start命令。事件可以是命令、条件、外部信号、内部信号。SFC chart的命令窗口如下图2所示:

图2 SFC chart的命令窗口
SFC chart简单的状态变化如下:
1)      SFC chart初始状态为Idle,Start命令将SFC chart从“Idle”转换到“Starting”状态。
2)      “Starting”状态下的顺控程序执行完成后,SFC chart会自动进入”Run”状态。
3)      “Run”状态的改变受SELFCOMP参数影响。SELFCOMP=1时,”Run”状态的顺控程序执行完成后SFC chart会自动进入“Completing”状态;SELFCOMP=0时,需要Complete命令才能使SFC chart由“Run”状态转换到“Completing”状态。
4)      “Completing”状态的顺控程序执行完成后,SFC chart会自动进入“Completed”状态,
5)      SFC chart会稳定在“Completed”状态,直到受到新的事件触发,例如“Reset”命令会使SFC chart回到“Idle”状态;Start命令会使SFC chart回到“Starting“状态。

问题2.  SFC chart 与顺控程序有何差异?

顺控程序中包含步和转移,在步中编辑程序实现对工艺设备的控制;SFC chart允许用户通过图形化的方式组态和调试顺控程序,单个SFC chart中可以创建8个顺控程序。
SFC chart 有16种状态,如图1所示;而顺控程序仅有五种状态,如下图3所示。
SFC chart的命令窗口的控制命令改变的是SFC chart的状态,而不是顺控程序的状态。SFC chart的状态改变会触发顺控程序状态改变,通过在SFC chart不同的状态来触发不同的顺控程序执行。
 

图3顺控程序的状态结构图
SFC chart状态和顺控程序的状态相互独立,同时又相互影响。如下图4所示的SFC chart中包含三个顺控程序RUN_KM,HOLD_KM,ABORT_KM。

图4 SFC chart和顺控程序的状态结构

  • 顺控程序和SFC chart都有自己的状态。SFC chart处于“Holding”状态,但是顺控程序RUN_KM处于“Held“状态,而顺控HOLD_KM处于”Running”状态。

  • 顺控的状态可以影响SFC chart的状态。顺控程序HOLD_KM未执行完成之前,SFC chart会一直处于“Holding”状态,当HOLD_KM执行完之后SFC chart会自动转入“Held”状态。

  • 如果在顺控程序的启动条件中加入SFC chart的状态,SFC chart的状态可以控制顺控程序的运行。RUN_KM的启动条件为SFC chart处于“Run”状态,HOLD_KM的启动条件为SFC chart处于“Holding”状态。hold命令使SFC chart从“Run”状态转入“Holding”状态,导致RUN_KM顺控的暂停和HOLD_KM顺控的执行。

问题3. 顺控程序的每一步是如何执行的?

在顺控程序的步中,都可以设置“Initialization“、”Processing“、”Termination“三种执行程序,如下图5所示。除START步和END步之外,步和转移交替布置。

图5顺控程序的步属性
顺控程序在处理“Processing“的程序过程中会判断转移条件是否满足(转移逻辑和步的少执行时间)。如下图6所示:在未满足转移条件T4时,顺控程序会一直执行S4步的“Processing“程序,如图绿色部分Execution阶段。T4满足后的下一个处理周期,开始执行S5步。S4的”Termination“和S5的”Initialization“在同一个处理周期执行,而且仅执行一个处理周期,如图红色部分。

图6顺控程序步和转移的执行

问题4. 为什么顺控程序的不能启动?

顺控程序只有在满足启动条件后才能启动。需要为每个顺控程序定义启动条件,如下图7所示。选中顺控程序后右击在弹出的菜单中选择“Sequence Properties”,在顺控程序属性窗口的“Start condition”选项卡中设置启动条件。下图所示的顺控程序在SFC chart的状态为“Run”时才会启动执行。

图7顺控程序的启动条件
在顺控程序的“General”选项卡中可以设置顺控程序的优先级,如下图8所示。因为在几个顺控程序同时满足启动条件时,优先级高的会先执行。如果有相同优先级的几个顺控程序同时满足启动条件,则左面的顺控程序会执行。

图8顺控程序的优先级
除了满足顺控程序的启动条件,还需要判断SFC chart的是否允许启动:
·         要求SFC chart允许启动,即ENSTART=1,和LI_ERR=0
·         要求比启动优先级高的信号,如 INTERROR 、 LOCKERROR 、 LOCKCOMPLETE 、 LOCKHOLD 、LOCKABORT  或  LOCKSTOP  没有置1
·         在手动模式下没有操作员错误,即OP_ERR=0

问题5. 顺控程序中如何编辑链接CFC的结构变量?

在顺控程序的步中编辑CFC 功能块的结构变量时,会提示如下图9的错误信息,显示类型不匹配。

图9顺控程序步中使用结构变量提示信息
转移条件不支持结构变量,会提示如下图10错误。

图10转移中使用结构变量错误信息
 
需要在结构变量上右击,通过“Open Structure”命令来打开结构变量,然后选择其中的value数值,如下图11所示。注意:转移条件不支持结构变量。

图11如何在步中配置结构变量

问题6. 如何通过程序控制SFC chart切换到自动模式?

SFC chart能以外部视图的方式显示为功能块,可以像CFC一样通过IO互联控制SFC chart的执行。在工厂层级下选中SFC chart右击,通过“Open External View”打开外部视图;或者在SFC chart编辑界面通过菜单ViewàExternal View打开外部视图。如下图12所示:

图12如何调用SFC chart的外部视图
SFC chart与控制模式相关的外部视图IO如下图13所示,表格显示了手动模式和自动模式输入/输出IO的对应关系。从手动模式切换到自动模式要求ENAUT=1和AUT=1,且MAN=0。注意:AUT和MAN不能都=1,否则会提示LI_ERR错误,无法实现模式切换。

图13手动模式和自动模式切换

问题7. 如何让CPU启动后SFC chart就运行?CPU重启后SFC chart能否继续执行?

在SFC chart的属性中可以设置启动选项和CPU重启后SFC chart的运行方式。如下图14所示:

图14 SFC chart 属性
·         Autostart:CPU启动后SFC chart是否自动启动。不勾选时CPU启动后SFC chart处于“Idle”状态,勾选后CPU启动以后SFC chart自动进入“Starting”状态。



没有

联系方式

  • 地址:上海松江 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 邮编:201600
  • 联系电话:未提供
  • 经理:聂航
  • 手机:15221406036
  • 微信:15221406036
  • QQ:3064686604
  • Email:3064686604@qq.com