西门子范例里的FB100 PID模拟仿真块 STL语言可读性差,看不懂,求转换SCL语言,或者有源文件
主要这个传递函数求法和公式结合起来看不懂,,自我推断是TM_LAG1== Hvar/(1.0+Hvar)???这个相等表示什么,
哪位大神能帮忙解释或转换SCL可发邮件505568729@qq.com,万分感谢。
1阶
Hvar := rCycle /(2.0*rTmLag1)。 Hvar := ((INV+DISV)*GAIN - sRueck1) * Hvar/(1.0+Hvar)。
OutvNew := sRueck1 + Hvar。 sRueck1 := sRueck1 + 2.0*Hvar。
2阶 :Hvar := rCycle /(2.0*rTmLag2) (为啥要乘以2)
Hvar := (OutvNew – sRueck2) * Hvar/(1.0+Hvar)
OutvNew := sRueck2 + Hvar。
sRueck2 := sRueck2+ 2.0*Hvar。
附:FB100原块 在step7中,“文件”菜单下点击"打开",选择“样例程序”下的zEn01_13_STEP7__PID-Temp。打开后,拷贝FB100到自己的项目。在OB35中调用FB100,相当于是一个模拟系统,可以仿真您的PID
FB100:process for continious PID control
SET
SAVE
= L 24.1
A #COM_RST
JCN M001
L #INV //complete restart routine
T #OUTV //write output data
T #sRueck1 //write static data
T #sRueck2
T #sRueck3
JU M002
M001: L #CYCLE //cycle mode routine
DTR //transform data type
T #rCycle
L #TM_LAG1
DTR
T #rTmLag1
L #TM_LAG2
DTR
T #rTmLag2
L #TM_LAG3
DTR
T #rTmLag3
L #rCycle //limit TM_LAG1
L 5.000000e-001
*R
L #rTmLag1
TAK
<r JCN M003
L #rCycle //limit TM_LAG2
L 5.000000e-001
*R
T #rTmLag1
M003: L #rCycle
L 5.000000e-001
*R
L #rTmLag2
TAK
<r JCN M004
L #rCycle
L 5.000000e-001
*R
T #rTmLag2
M004: L #rCycle //limit TM_LAG3
L 5.000000e-001
*R
L #rTmLag3
TAK
<r JCN M005
L #rCycle
L 5.000000e-001
*R
T #rTmLag3
M005: L 2.000000e+000 //1. lag first order algorithm
L #rTmLag1 //Hvar := rCycle /(2.0*rTmLag1)
*R
L #rCycle
TAK
/R
T #Hvar
L #INV //Hvar := ((INV+DISV)*GAIN - sRueck1) *Hvar/(1.0+Hvar)
L #DISV
+R
L #GAIN
*R
L #sRueck1
-R
L #Hvar
*R
L 1.000000e+000
TAK
T LD 26
TAK
L #Hvar
+R
L LD 26
TAK
/R
T #Hvar
L #sRueck1 //OutvNew := sRueck1 + Hvar
+R
T #OutvNew
L 2.000000e+000 //sRueck1 := sRueck1 + 2.0*Hvar
L #Hvar
*R
L #sRueck1
+R
T #sRueck1
L 2.000000e+000 //2. first lag order algorithm
L #rTmLag2
*R
L #rCycle
TAK
/R
T #Hvar
L #OutvNew
L #sRueck2
-R
L #Hvar
*R
L 1.000000e+000
TAK
T LD 26
TAK
L #Hvar
+R
L LD 26
TAK
/R
T #Hvar
L #sRueck2
+R
T #OutvNew
L 2.000000e+000
L #Hvar
*R
L #sRueck2
+R
T #sRueck2
L 2.000000e+000 //3. lag first order algorithm
L #rTmLag3
*R
L #rCycle
TAK
/R
T #Hvar
L #OutvNew
L #sRueck3
-R
L #Hvar
*R
L 1.000000e+000
TAK
T LD 26
TAK
L #Hvar
+R
L LD 26
TAK
/R
T #Hvar
L #sRueck3
+R
T #OutvNew
L 2.000000e+000
L #Hvar
*R
L #sRueck3
+R
T #sRueck3
L #OutvNew //write output
T #OUTV
M002: CLR
A L 24.1
SAVE
BE