新人请教这段程序 能详细讲一下过程吗 谢谢

CLR   
      =     #SMQ_1
      =     #SMQ_2
      L     #Istwert
      L     #GW_1
      >=R   
      S     #SMQ_1
      JC    M001
      L     #Hysterese
      -R    
      L     #Istwert
      <R    
      A     #Q_1
      S     #SMQ_1
M001: L     #Istwert
      L     #GW_2
      >=R   
      S     #SMQ_2
      JC    M002
      L     #Hysterese
      -R    
      L     #Istwert
      <R    
      A     #Q_2
      S     #SMQ_2
M002: A     #SMQ_1
      =     #Q_1
      A     #SMQ_2
      =     #Q_2
    其中  Istwert  GW_1  GW_2   Hysterese 这个4个参数是输入,Q_1 Q_2是输出参数 那么当Q_1和 Q_2分别是多少?
 Istwert  :=40 GW_1     :=25 GW_2     :=40 Hysterese:=2.000000e+000
  Q_1和 Q_2分别是多少?     
Q_1      :=""
       Q_2      :=""

最佳答案

CLR   
      =     #SMQ_1
      =     #SMQ_2 ------这三段是对临时变量的状态复位,即程序开始时状态为0
      L     #Istwert
      L     #GW_1
      >=R               ------当#Istwert的数值大于等于#GW_1的数值时,置位#SMQ_1
      S     #SMQ_1
      JC    M001     ------当#Istwert的数值大于等于#GW_1的数值时,程序跳转至M001处执行,下面的程序将被跳过,不执行;当#Istwert的数值小于#GW_1的数值时,继续执行下面程序
      L     #Hysterese
      -R                 -------- #GW_1的数值减去#Hysterese的数值
      L     #Istwert
      <R                -------#GW_1减#Hysterese的差与#Istwert比较,小于且#Q_1为1时,置位#SMQ_1
      A     #Q_1
      S     #SMQ_1
M001: L     #Istwert-----以下分析同上
      L     #GW_2
      >=R   
      S     #SMQ_2
      JC    M002
      L     #Hysterese
      -R    
      L     #Istwert
      <R    
      A     #Q_2
      S     #SMQ_2
M002: A     #SMQ_1
      =     #Q_1
      A     #SMQ_2
      =     #Q_2
 Istwert、GW_1、GW_2     的数值也应是实数类型的。按照上面的分析并带入你所给的数值,那#Q_1和#Q_2的结果都是1。
但你的程序有些问题,就是当#Q_1或#Q_2的结果有一次为1后,不论输入值怎样改变,其输出结果仍然为1。因为程序中A  #Q_x      S  #SMQ_x 相当于自保电路了。
你可以在OB1调用这个块并赋值,在仿真器中测试看看结果。

提问者对于答案的评价:
谢谢

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc234527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐