Hi!
I am working on a project were we will be replacing an 300 CPU with a 1500 CPU and we are working on migrating / converting code. There is a integral block used to handle analog signals, write/read to Cont_C regulator as well as read/write to WinCC with Static variables and OS messages.
I have removed segments of the code that was related to OS messages, we will be instead using Program Alarms. It would be GREATLY appreciated if we could get some help with converting the STL code to something easily understandable (not used to STL I guess, always worked in SCL + FDB).
The code is the following:
SET
SAVE
= L 40.1
A #AUT_EXT_PULSM_P
NOT
A #AUT_EXT
= #AUT_EXT_PULS_P
A #AUT_EXT
= #AUT_EXT_PULSM_P
A #AUT_EXT_PULS_P
JCN A7d0
SET
= #MAN_AUTO
A7d0: L #DB_CONT_C
T LW 42
CLR
A #MAN_AUTO
NOT
O #TRK_ON
OPN DB [LW 42]
= DBX 0.1
A #MAN_AUTO
= #QAUTO
NOT
= #QMAN
A #TRK_ON
A #MAN_AUTO
= #QTRK
A #TRK_ON
A #MAN_AUTO
JCN A7d1
T LW 42
L #TRK_VAL
OPN DB [LW 42]
T DBD 16
JU A7d2
A7d1: L #DB_CONT_C
T LW 42
L #MAN_VAL
OPN DB [LW 42]
T DBD 16
A7d2: CLR
A #SP_INT_EXT
JCN A7d3
L #SP_EXT
T #SP_TEMP
JU A7d4
A7d3: L #SP_INT
T #SP_TEMP
A7d4: L #SP_TEMP
L #SP_HLM
>R
JCN A7d5
T #SP_TEMP
T #SP_INT
JU A7d7
A7d5: L #SP_TEMP
L #SP_LLM
<R
JCN A7d7
T #SP_TEMP
T #SP_INT
A7d7: CLR
A #SP_INT_EXT
JCN A7d8
L #SP_TEMP
T #SP_INT
A7d8: L #DB_CONT_C
T LW 42
L #SP_TEMP
OPN DB [LW 42]
T DBD 6
TAK
T LW 42
OPN DB [LW 42]
L DBD 6
T #SP_AKT
L #SP_EXT
T #SP_EXT_OP
L #SP_HLM
T #SP_HLM_OP
L #SP_LLM
T #SP_LLM_OP
L #DB_CONT_C
T LW 42
OPN DB [LW 42]
L DBD 92
T #PV
L #PV_HLM
T #PV_HLM_OP
L #PV_LLM
T #PV_LLM_OP
L #DB_CONT_C
T LW 42
OPN DB [LW 42]
L DBD 72
T #LMN
TAK
T LW 42
L #LMN_HLM
OPN DB [LW 42]
T DBD 40
TAK
T LW 42
L #LMN_LLM
OPN DB [LW 42]
T DBD 44
L #LMN_HLM
T #LMN_HLM_OP
TAK
T #LMN_LLM_OP
L #PVH_ALM
L #PVH_ALM_TEMP
<>R
JCN A7d9
L #PVH_ALM
T #PVH_ALM_TEMP
T #PVH_ALM_OP
A7d9: L #PVH_ALM_OP
L #PVH_ALM_TEMP
<>R
JCN A7da
L #PVH_ALM_OP
T #PVH_ALM_TEMP
T #PVH_ALM
A7da: L #PVL_ALM
L #PVL_ALM_TEMP
<>R
JCN A7db
L #PVL_ALM
T #PVL_ALM_TEMP
T #PVL_ALM_OP
A7db: L #PVL_ALM_OP
L #PVL_ALM_TEMP
<>R
JCN A7dc
L #PVL_ALM_OP
T #PVL_ALM_TEMP
T #PVL_ALM
A7dc: L #PVH_WRN
L #PVH_WRN_TEMP
<>R
JCN A7dd
L #PVH_WRN
T #PVH_WRN_TEMP
T #PVH_WRN_OP
A7dd: L #PVH_WRN_OP
L #PVH_WRN_TEMP
<>R
JCN A7de
L #PVH_WRN_OP
T #PVH_WRN_TEMP
T #PVH_WRN
A7de: L #PVL_WRN
L #PVL_WRN_TEMP
<>R
JCN A7df
L #PVL_WRN
T #PVL_WRN_TEMP
T #PVL_WRN_OP
A7df: L #PVL_WRN_OP
L #PVL_WRN_TEMP
<>R
JCN A7e0
L #PVL_WRN_OP
T #PVL_WRN_TEMP
T #PVL_WRN
A7e0: L #HYSTERES
L #HYST_TEMP
<>R
JCN A7e1
L #HYSTERES
T #HYST_TEMP
T #HYST_OP
A7e1: L #HYST_OP
L #HYST_TEMP
<>R
JCN A7e2
L #HYST_OP
T #HYST_TEMP
T #HYSTERES
A7e2: L #GAIN
L #GAIN_TEMP
<>R
JCN A7e3
L #GAIN
T #GAIN_TEMP
T #GAIN_OP
A7e3: L #GAIN_OP
L #GAIN_TEMP
<>R
JCN A7e4
L #GAIN_OP
T #GAIN_TEMP
T #GAIN
A7e4: L #DB_CONT_C
T LW 42
L #GAIN
OPN DB [LW 42]
T DBD 20
L #I_TID
L #I_TID_TEMP
<>D
JCN A7e5
L #I_TID
T #I_TID_TEMP
L L#1000
/D
T #I_TID_OP
A7e5: L #I_TID_OP
L L#1000
*D
T #I_TID_1000
L #I_TID_TEMP
<>D
JCN A7e6
L #I_TID_1000
T #I_TID_TEMP
T #I_TID
A7e6: L #DB_CONT_C
T LW 42
L #I_TID
OPN DB [LW 42]
T DBD 24
L #D_TID
L #D_TID_TEMP
<>D
JCN A7e7
L #D_TID
T #D_TID_TEMP
L L#1000
/D
T #D_TID_OP
A7e7: L #D_TID_OP
L L#1000
*D
T #D_TID_1000
L #D_TID_TEMP
<>D
JCN A7e8
L #D_TID_1000
T #D_TID_TEMP
T #D_TID
A7e8: L #DB_CONT_C
T LW 42
L #D_TID
OPN DB [LW 42]
T DBD 28
L #TM_LAG
L #TM_LAG_TEMP
<>D
JCN A7e9
L #TM_LAG
T #TM_LAG_TEMP
L L#1000
/D
T #TM_LAG_OP
A7e9: L #TM_LAG_OP
L L#1000
*D
T #TM_LAG_1000
L #TM_LAG_TEMP
<>D
JCN A7ea
L #TM_LAG_1000
T #TM_LAG_TEMP
T #TM_LAG
A7ea: L #DB_CONT_C
T LW 42
L #TM_LAG
OPN DB [LW 42]
T DBD 32
L #DEADB_W
L #DEADB_W_TEMP
<>R
JCN A7eb
L #DEADB_W
T #DEADB_W_TEMP
T #DEADB_W_OP
A7eb: L #DEADB_W_OP
L #DEADB_W_TEMP
<>R
JCN A7ec
L #DEADB_W_OP
T #DEADB_W_TEMP
T #DEADB_W
A7ec: L #DB_CONT_C
T LW 42
L #DEADB_W
OPN DB [LW 42]
T DBD 36
TAK
T LW 42
OPN DB [LW 42]
CLR
A DBX 0.3
= #Q_P_SEL
T LW 42
OPN DB [LW 42]
A DBX 0.4
= #Q_I_SEL
T LW 42
OPN DB [LW 42]
A DBX 0.7
= #Q_D_SEL
SAVE
BE
A rather large amount of code so do not expect someone to have the time/effort to help us but thought it would be worth a shot
Kind regards,
Olle Z
I am working on a project were we will be replacing an 300 CPU with a 1500 CPU and we are working on migrating / converting code. There is a integral block used to handle analog signals, write/read to Cont_C regulator as well as read/write to WinCC with Static variables and OS messages.
I have removed segments of the code that was related to OS messages, we will be instead using Program Alarms. It would be GREATLY appreciated if we could get some help with converting the STL code to something easily understandable (not used to STL I guess, always worked in SCL + FDB).
The code is the following:
SET
SAVE
= L 40.1
A #AUT_EXT_PULSM_P
NOT
A #AUT_EXT
= #AUT_EXT_PULS_P
A #AUT_EXT
= #AUT_EXT_PULSM_P
A #AUT_EXT_PULS_P
JCN A7d0
SET
= #MAN_AUTO
A7d0: L #DB_CONT_C
T LW 42
CLR
A #MAN_AUTO
NOT
O #TRK_ON
OPN DB [LW 42]
= DBX 0.1
A #MAN_AUTO
= #QAUTO
NOT
= #QMAN
A #TRK_ON
A #MAN_AUTO
= #QTRK
A #TRK_ON
A #MAN_AUTO
JCN A7d1
T LW 42
L #TRK_VAL
OPN DB [LW 42]
T DBD 16
JU A7d2
A7d1: L #DB_CONT_C
T LW 42
L #MAN_VAL
OPN DB [LW 42]
T DBD 16
A7d2: CLR
A #SP_INT_EXT
JCN A7d3
L #SP_EXT
T #SP_TEMP
JU A7d4
A7d3: L #SP_INT
T #SP_TEMP
A7d4: L #SP_TEMP
L #SP_HLM
>R
JCN A7d5
T #SP_TEMP
T #SP_INT
JU A7d7
A7d5: L #SP_TEMP
L #SP_LLM
<R
JCN A7d7
T #SP_TEMP
T #SP_INT
A7d7: CLR
A #SP_INT_EXT
JCN A7d8
L #SP_TEMP
T #SP_INT
A7d8: L #DB_CONT_C
T LW 42
L #SP_TEMP
OPN DB [LW 42]
T DBD 6
TAK
T LW 42
OPN DB [LW 42]
L DBD 6
T #SP_AKT
L #SP_EXT
T #SP_EXT_OP
L #SP_HLM
T #SP_HLM_OP
L #SP_LLM
T #SP_LLM_OP
L #DB_CONT_C
T LW 42
OPN DB [LW 42]
L DBD 92
T #PV
L #PV_HLM
T #PV_HLM_OP
L #PV_LLM
T #PV_LLM_OP
L #DB_CONT_C
T LW 42
OPN DB [LW 42]
L DBD 72
T #LMN
TAK
T LW 42
L #LMN_HLM
OPN DB [LW 42]
T DBD 40
TAK
T LW 42
L #LMN_LLM
OPN DB [LW 42]
T DBD 44
L #LMN_HLM
T #LMN_HLM_OP
TAK
T #LMN_LLM_OP
L #PVH_ALM
L #PVH_ALM_TEMP
<>R
JCN A7d9
L #PVH_ALM
T #PVH_ALM_TEMP
T #PVH_ALM_OP
A7d9: L #PVH_ALM_OP
L #PVH_ALM_TEMP
<>R
JCN A7da
L #PVH_ALM_OP
T #PVH_ALM_TEMP
T #PVH_ALM
A7da: L #PVL_ALM
L #PVL_ALM_TEMP
<>R
JCN A7db
L #PVL_ALM
T #PVL_ALM_TEMP
T #PVL_ALM_OP
A7db: L #PVL_ALM_OP
L #PVL_ALM_TEMP
<>R
JCN A7dc
L #PVL_ALM_OP
T #PVL_ALM_TEMP
T #PVL_ALM
A7dc: L #PVH_WRN
L #PVH_WRN_TEMP
<>R
JCN A7dd
L #PVH_WRN
T #PVH_WRN_TEMP
T #PVH_WRN_OP
A7dd: L #PVH_WRN_OP
L #PVH_WRN_TEMP
<>R
JCN A7de
L #PVH_WRN_OP
T #PVH_WRN_TEMP
T #PVH_WRN
A7de: L #PVL_WRN
L #PVL_WRN_TEMP
<>R
JCN A7df
L #PVL_WRN
T #PVL_WRN_TEMP
T #PVL_WRN_OP
A7df: L #PVL_WRN_OP
L #PVL_WRN_TEMP
<>R
JCN A7e0
L #PVL_WRN_OP
T #PVL_WRN_TEMP
T #PVL_WRN
A7e0: L #HYSTERES
L #HYST_TEMP
<>R
JCN A7e1
L #HYSTERES
T #HYST_TEMP
T #HYST_OP
A7e1: L #HYST_OP
L #HYST_TEMP
<>R
JCN A7e2
L #HYST_OP
T #HYST_TEMP
T #HYSTERES
A7e2: L #GAIN
L #GAIN_TEMP
<>R
JCN A7e3
L #GAIN
T #GAIN_TEMP
T #GAIN_OP
A7e3: L #GAIN_OP
L #GAIN_TEMP
<>R
JCN A7e4
L #GAIN_OP
T #GAIN_TEMP
T #GAIN
A7e4: L #DB_CONT_C
T LW 42
L #GAIN
OPN DB [LW 42]
T DBD 20
L #I_TID
L #I_TID_TEMP
<>D
JCN A7e5
L #I_TID
T #I_TID_TEMP
L L#1000
/D
T #I_TID_OP
A7e5: L #I_TID_OP
L L#1000
*D
T #I_TID_1000
L #I_TID_TEMP
<>D
JCN A7e6
L #I_TID_1000
T #I_TID_TEMP
T #I_TID
A7e6: L #DB_CONT_C
T LW 42
L #I_TID
OPN DB [LW 42]
T DBD 24
L #D_TID
L #D_TID_TEMP
<>D
JCN A7e7
L #D_TID
T #D_TID_TEMP
L L#1000
/D
T #D_TID_OP
A7e7: L #D_TID_OP
L L#1000
*D
T #D_TID_1000
L #D_TID_TEMP
<>D
JCN A7e8
L #D_TID_1000
T #D_TID_TEMP
T #D_TID
A7e8: L #DB_CONT_C
T LW 42
L #D_TID
OPN DB [LW 42]
T DBD 28
L #TM_LAG
L #TM_LAG_TEMP
<>D
JCN A7e9
L #TM_LAG
T #TM_LAG_TEMP
L L#1000
/D
T #TM_LAG_OP
A7e9: L #TM_LAG_OP
L L#1000
*D
T #TM_LAG_1000
L #TM_LAG_TEMP
<>D
JCN A7ea
L #TM_LAG_1000
T #TM_LAG_TEMP
T #TM_LAG
A7ea: L #DB_CONT_C
T LW 42
L #TM_LAG
OPN DB [LW 42]
T DBD 32
L #DEADB_W
L #DEADB_W_TEMP
<>R
JCN A7eb
L #DEADB_W
T #DEADB_W_TEMP
T #DEADB_W_OP
A7eb: L #DEADB_W_OP
L #DEADB_W_TEMP
<>R
JCN A7ec
L #DEADB_W_OP
T #DEADB_W_TEMP
T #DEADB_W
A7ec: L #DB_CONT_C
T LW 42
L #DEADB_W
OPN DB [LW 42]
T DBD 36
TAK
T LW 42
OPN DB [LW 42]
CLR
A DBX 0.3
= #Q_P_SEL
T LW 42
OPN DB [LW 42]
A DBX 0.4
= #Q_I_SEL
T LW 42
OPN DB [LW 42]
A DBX 0.7
= #Q_D_SEL
SAVE
BE
A rather large amount of code so do not expect someone to have the time/effort to help us but thought it would be worth a shot
Kind regards,
Olle Z