您现在所在的是:

PLC论坛

回帖:2个,阅读:1341 [上一页] [1] [下一页]
999
chinasg23
文章数:15
年度积分:50
历史总积分:999
注册时间:2006/8/13
发站内信
08年优秀博客奖
发表于:2008/9/6 21:38:00
#0楼
下面是用S7-300PLC编写的PID程序,使用FB43。该程序是德国人写的,看起来逻辑很抽象,哪位高手能帮着翻译一下不胜感激!

SET  
     SAVE  
     =     L     68.1
     A     #COM_RST
     JCN   A7d0
     L     #I_ITLVAL
     T     #sIanteilAlt
     L     0.000000e+000
     T     #LMN
     CLR  
     =     #QLMN_HLM
     =     #QLMN_LLM
     T     #LMN_P
     T     #LMN_I
     T     #LMN_D
     L     W#16#0
     T     #LMN_PER
     TAK  
     T     #PV
     T     #ER
     T     #sInvAlt
     T     #sRestInt
     T     #sRestDif
     T     #sRueck
     T     #sLmn
     =     #sbArwHLmOn
     =     #sbArwLLmOn
     JU    A7d1
A7d0: L     #CYCLE
     DTR  
     L     1.000000e+003
     /R    
     T     #rCycle
     L     #PV_PER
     ITD  
     DTR  
     L     3.616898e-003
     *R    
     T     #Istwert
     L     #PV_FAC
     *R    
     L     #PV_OFF
     +R    
     T     #Istwert
     CLR  
     A     #PVPER_ON
     NOT  
     JCN   A7d2
     L     #PV_IN
     T     #Istwert
A7d2: L     #Istwert
     T     #PV
     L     #SP_INT
     TAK  
     -R    
     T     #ErKp
     L     #DEADB_W
     NEGR  
     <R    
     JCN   A7d3
     L     #ErKp
     L     #DEADB_W
     +R    
     T     #ER
     JU    A7d4
A7d3: L     #ErKp
     L     #DEADB_W
     >R    
     JCN   A7d5
     L     #ErKp
     TAK  
     -R    
     T     #ER
     JU    A7d4
A7d5: L     0.000000e+000
     T     #ER
A7d4: L     #ER
     L     #GAIN
     *R    
     T     #ErKp
     L     #TI
     DTR  
     L     1.000000e+003
     /R    
     T     #rTi
     L     #TD
     DTR  
     L     1.000000e+003
     /R    
     T     #rTd
     L     #TM_LAG
     DTR  
     L     1.000000e+003
     /R    
     T     #rTmLag
     L     #rCycle
     L     5.000000e-001
     *R    
     L     #rTi
     TAK  
     <R    
     JCN   A7d7
     L     #rCycle
     L     5.000000e-001
     *R    
     T     #rTi
A7d7: L     #rTd
     L     #rCycle
     <R    
     JCN   A7d8
     T     #rTd
A7d8: L     #rCycle
     L     5.000000e-001
     *R    
     L     #rTmLag
     TAK  
     <R    
     JCN   A7d9
     L     #rCycle
     L     5.000000e-001
     *R    
     T     #rTmLag
A7d9: CLR  
     A     #P_SEL
     JCN   A7da
     L     #ErKp
     T     #Panteil
     JU    A7db
A7da: L     0.000000e+000
     T     #Panteil
A7db: CLR  
     A     #I_SEL
     JCN   A7dc
     A     #I_ITL_ON
     JCN   A7dd
     L     #I_ITLVAL
     T     #Ianteil
     L     0.000000e+000
     T     #sRestInt
     JU    A7e2
A7dd: CLR  
     A     #MAN_ON
     JCN   A7df
     L     #sLmn
     L     #Panteil
     -R    
     L     #DISV
     -R    
     T     #Ianteil
     L     0.000000e+000
     T     #sRestInt
     JU    A7e0
A7df: L     #rCycle
     L     #rTi
     /R    
     L     #ErKp
     TAK  
     T     LD    70
     TAK  
     L     #sInvAlt
     +R    
     L     LD    70
     *R    
     L     5.000000e-001
     *R    
     L     #sRestInt
     +R    
     T     #Diff
     L     0.000000e+000
     >R    
     A     #sbArwHLmOn
     O     #INT_HOLD
     L     #Diff
     L     0.000000e+000
     =     L     68.2
     <R    
     A     #sbArwLLmOn
     O     L     68.2
     JCN   A7e1
     T     #Diff
A7e1: L     #sIanteilAlt
     L     #Diff
     +R    
     T     #Ianteil
     L     #sIanteilAlt
     TAK  
     -R    
     L     #Diff
     +R    
     T     #sRestInt
A7e0: JU    A7e2
A7dc: L     0.000000e+000
     T     #Ianteil
     T     #sRestInt
A7e2: L     #ErKp
     T     #Diff
     CLR  
     A     #MAN_ON
     NOT  
     A     #D_SEL
     JCN   A7e3
     L     #rCycle
     L     5.000000e-001
     *R    
     L     #rTmLag
     +R    
     L     #rTd
     TAK  
     /R    
     T     #Verstaerk
     L     #Diff
     L     #sRueck
     -R    
     L     #Verstaerk
     *R    
     T     #Danteil
     L     #sRueck
     T     #RueckAlt
     L     #rCycle
     L     #rTd
     /R    
     L     #Danteil
     *R    
     L     #sRestDif
     +R    
     T     #RueckDiff
     L     #RueckAlt
     +R    
     T     #sRueck
     L     #RueckAlt
     TAK  
     -R    
     L     #RueckDiff
     +R    
     T     #sRestDif
     JU    A7e4
A7e3: L     0.000000e+000
     T     #Danteil
     T     #sRestDif
     L     #Diff
     T     #sRueck
A7e4: L     #Panteil
     L     #Ianteil
     +R    
     L     #Danteil
     +R    
     L     #DISV
     +R    
     T     #dLmn
     CLR  
     A     #MAN_ON
     JCN   A7e5
     L     #MAN
     T     #dLmn
     JU    A7e7
A7e5: CLR  
     A     #I_ITL_ON
     NOT  
     A     #I_SEL
     JCN   A7e7
     L     #LMN_HLM
     L     #DISV
     -R    
     L     #Ianteil
     TAK  
     >R    
     L     #dLmn
     L     #LMN_HLM
     =     L     68.2
     >R    
     A     L     68.2
     L     #dLmn
     L     #LMN_D
     -R    
     L     #LMN_HLM
     =     L     68.2
     >R    
     A     L     68.2
     JCN   A7e8
     L     #DISV
     -R    
     T     #rVal
     L     #dLmn
     L     #LMN_HLM
     -R    
     T     #gf
     L     #Ianteil
     L     #rVal
     -R    
     T     #rVal
     L     #gf
     >R    
     JCN   A7e9
     T     #rVal
A7e9: L     #Ianteil
     L     #rVal
     -R    
     T     #Ianteil
     JU    A7e7
A7e8: L     #LMN_LLM
     L     #DISV
     -R    
     L     #Ianteil
     TAK  
     <R    
     L     #dLmn
     L     #LMN_LLM
     =     L     68.2
     <R    
     A     L     68.2
     L     #dLmn
     L     #LMN_D
     -R    
     L     #LMN_LLM
     =     L     68.2
     <R    
     A     L     68.2
     JCN   A7e7
     L     #DISV
     -R    
     T     #rVal
     L     #dLmn
     L     #LMN_LLM
     -R    
     T     #gf
     L     #Ianteil
     L     #rVal
     -R    
     T     #rVal
     L     #gf
     <R    
     JCN   A7ec
     T     #rVal
A7ec: L     #Ianteil
     L     #rVal
     -R    
     T     #Ianteil
A7e7: L     #Panteil
     T     #LMN_P
     L     #Ianteil
     T     #LMN_I
     L     #Danteil
     T     #LMN_D
     L     #ErKp
     T     #sInvAlt
     L     #Ianteil
     T     #sIanteilAlt
     CLR  
     =     #sbArwHLmOn
     =     #sbArwLLmOn
     L     #dLmn
     L     #LMN_HLM
     >=R  
     JCN   A7ed
     SET  
     =     #QLMN_HLM
     CLR  
     =     #QLMN_LLM
     T     #dLmn
     SET  
     =     #sbArwHLmOn
     JU    A7ee
A7ed: CLR  
     =     #QLMN_HLM
     L     #dLmn
     L     #LMN_LLM
     <=R  
     JCN   A7ef
     SET  
     =     #QLMN_LLM
     T     #dLmn
     =     #sbArwLLmOn
     JU    A7ee
A7ef: CLR  
     =     #QLMN_LLM
A7ee: L     #dLmn
     T     #sLmn
     L     #LMN_FAC
     *R    
     L     #LMN_OFF
     +R    
     T     #dLmn
     T     #LMN
     L     2.764800e+002
     *R    
     T     #dLmn
     L     3.251100e+004
     >=R  
     JCN   A7f1
     T     #dLmn
     JU    A7f2
A7f1: L     #dLmn
     L     -3.251200e+004
     <=R  
     JCN   A7f2
     T     #dLmn
A7f2: L     #dLmn
     RND  
     T     #LMN_PER
A7d1: CLR  
     A     L     68.1
     SAVE  
     BE

38152
cvlsam 版主
文章数:12494
年度积分:763
历史总积分:38152
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2008/9/6 21:48:00
#1楼
樓主,並不是程式看起來抽象,而是因爲您使用了工具將FB43的小鎖頭破解了,因此看起來是STL,且沒有符號表哦。

原程式是由SCL指令編寫的,非常的清晰易懂哦,其核心還是我們自控書籍中的增量式PID經典公式。

如果樓主有心學習西門子,不如去學習如何使用FB43,而不是去閲讀破解的程式。

以上~~~
999
chinasg23
文章数:15
年度积分:50
历史总积分:999
注册时间:2006/8/13
发站内信
08年优秀博客奖
发表于:2008/9/7 22:01:00
#2楼
多谢,经我一天的努力,终于明白了FB41的原理,多谢兄弟!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004