Getting better code - STL siemens step 7 s7-300

naturephoenix

Member
Join Date
Jan 2015
Location
Vienn
Posts
181
IS it possible to write this on a better way:


L #db_Num2
L 121
==I
JNB _02
CALL "CONT_C" , "DB_reg_igla1"
COM_RST :=M60.2
MAN_ON :=
PVPER_ON:=
P_SEL :=
I_SEL :=
INT_HOLD:=
I_ITL_ON:=
D_SEL :=
CYCLE :=
SP_INT :=
PV_IN :=
PV_PER :=
MAN :=
GAIN :=
TI :=
TD :=
TM_LAG :=
DEADB_W :=
LMN_HLM :=
LMN_LLM :=
PV_FAC :=
PV_OFF :=
LMN_FAC :=
LMN_OFF :=
I_ITLVAL:=
DISV :=
LMN :=
LMN_PER :=
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=
JU _007

_02: L #db_Num2
L 122
==I
JNB _03

CALL "CONT_C" , DB122
COM_RST :=M60.2
MAN_ON :=
PVPER_ON:=
P_SEL :=
I_SEL :=
INT_HOLD:=
I_ITL_ON:=
D_SEL :=
CYCLE :=
SP_INT :=
PV_IN :=
PV_PER :=
MAN :=
GAIN :=
TI :=
TD :=
TM_LAG :=
DEADB_W :=
LMN_HLM :=
LMN_LLM :=
PV_FAC :=
PV_OFF :=
LMN_FAC :=
LMN_OFF :=
I_ITLVAL:=
DISV :=
LMN :=
LMN_PER :=
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=
JU _007

_03: L #db_Num2
L 123
==I
JNB _04
CALL "CONT_C" , DB123
COM_RST :=M60.2
MAN_ON :=
PVPER_ON:=
P_SEL :=
I_SEL :=
INT_HOLD:=
I_ITL_ON:=
D_SEL :=
CYCLE :=
SP_INT :=
PV_IN :=
PV_PER :=
MAN :=
GAIN :=
TI :=
TD :=
TM_LAG :=
DEADB_W :=
LMN_HLM :=
LMN_LLM :=
PV_FAC :=
PV_OFF :=
LMN_FAC :=
LMN_OFF :=
I_ITLVAL:=
DISV :=
LMN :=
LMN_PER :=
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=
JU _007

_04: L #db_Num2
L 124
==I
JNB _05
CALL "CONT_C" , DB124
COM_RST :=M60.2
MAN_ON :=
PVPER_ON:=
P_SEL :=
I_SEL :=
INT_HOLD:=
I_ITL_ON:=
D_SEL :=
CYCLE :=
SP_INT :=
PV_IN :=
PV_PER :=
MAN :=
GAIN :=
TI :=
TD :=
TM_LAG :=
DEADB_W :=
LMN_HLM :=
LMN_LLM :=
PV_FAC :=
PV_OFF :=
LMN_FAC :=
LMN_OFF :=
I_ITLVAL:=
DISV :=
LMN :=
LMN_PER :=
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=
JU _007

_05: L #db_Num2
L 125
==I
JNB _06
CALL "CONT_C" , DB125
COM_RST :=M60.2
MAN_ON :=
PVPER_ON:=
P_SEL :=
I_SEL :=
INT_HOLD:=
I_ITL_ON:=
D_SEL :=
CYCLE :=
SP_INT :=
PV_IN :=
PV_PER :=
MAN :=
GAIN :=
TI :=
TD :=
TM_LAG :=
DEADB_W :=
LMN_HLM :=
LMN_LLM :=
PV_FAC :=
PV_OFF :=
LMN_FAC :=
LMN_OFF :=
I_ITLVAL:=
DISV :=
LMN :=
LMN_PER :=
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=
JU _007

_06: L #db_Num2
L 126
==I
JNB _007
CALL "CONT_C" , DB126
COM_RST :=M60.2
MAN_ON :=
PVPER_ON:=
P_SEL :=
I_SEL :=
INT_HOLD:=
I_ITL_ON:=
D_SEL :=
CYCLE :=
SP_INT :=
PV_IN :=
PV_PER :=
MAN :=
GAIN :=
TI :=
TD :=
TM_LAG :=
DEADB_W :=
LMN_HLM :=
LMN_LLM :=
PV_FAC :=
PV_OFF :=
LMN_FAC :=
LMN_OFF :=
I_ITLVAL:=
DISV :=
LMN :=
LMN_PER :=
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=

_007: NOP 0


Basically what i am doing is I am calling always
FB41, but with different Instance DB(DB121,DB122,DB123,DB124,DB125,DB126)

Appropriate DB number(121-126) is stored in variable #db_Num2
 
IS it possible to write this on a better way:


L #db_Num2
L 121
==I
JNB _02
CALL "CONT_C" , "DB_reg_igla1"
COM_RST :=M60.2
MAN_ON :=
PVPER_ON:=
P_SEL :=
I_SEL :=
INT_HOLD:=
I_ITL_ON:=
D_SEL :=
CYCLE :=
SP_INT :=
PV_IN :=
PV_PER :=
MAN :=
GAIN :=
TI :=
TD :=
TM_LAG :=
DEADB_W :=
LMN_HLM :=
LMN_LLM :=
PV_FAC :=
PV_OFF :=
LMN_FAC :=
LMN_OFF :=
I_ITLVAL:=
DISV :=
LMN :=
LMN_PER :=
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=
JU _007

_02: L #db_Num2
L 122
==I
JNB _03



Appropriate DB number(121-126) is stored in variable #db_Num2

"DB_reg_igla1" = DB121
 
I can see from a purely academic perpective why you might want to multiplex the Instance DB but why not have 6 calls to FB41? Presumably you have 6 PID loops.

Nick
 
I solved that by using input parameter DB_Number.

IS it possible to here something like this:
CALL "CONT_C" , #DB_reg_igle
COM_RST := [AR1,P#0.0]???? this does not work, but it has to be dynamic
MAN_ON :="Param_reg_igle1".man_on
PVPER_ON:="Param_reg_igle1".pvper_on
P_SEL :="Param_reg_igle1".p_sel
I_SEL :="Param_reg_igle1".i_sel
INT_HOLD:="Param_reg_igle1".int_hold
I_ITL_ON:="Param_reg_igle1".i_itl_on
D_SEL :="Param_reg_igle1".d_sel
CYCLE :="Param_reg_igle1".cycle
SP_INT :="Param_reg_igle1".referenca
PV_IN :="Param_reg_igle1".polozaj
PV_PER :="Param_reg_igle1".pv_per
MAN :="Param_reg_igle1".man
GAIN :="Param_reg_igle1".gain
TI :=#Ti
TD :="Param_reg_igle1".td
TM_LAG :="Param_reg_igle1".tm_lag
DEADB_W :="Param_reg_igle1".deadb_w
LMN_HLM :="Param_reg_igle1".lmn_hlm
LMN_LLM :="Param_reg_igle1".lmn_llm
PV_FAC :="Param_reg_igle1".pv_fac
PV_OFF :="Param_reg_igle1".pv_off
LMN_FAC :="Param_reg_igle1".lmn_fac
LMN_OFF :="Param_reg_igle1".lmn_off
I_ITLVAL:="Param_reg_igle1".i_itlval
DISV :="Param_reg_igle1".disv
LMN :="Param_reg_igle1".izlaz
LMN_PER :=
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=#temp_er
 

Similar Topics

iFix 5.8 Windows 7 Pro CLX PLC Customer, for some reason does not want to use a database. Wants instead tags on display will be direct OPC links...
Replies
3
Views
1,886
The application was working in Twincat 4022.16 Used VM for offline. recently changed the laptop and the getting the error with Message as below...
Replies
0
Views
58
We are using wincc scada WinCC system software V7.5 SP2 , connected to few plc . Past 3 weeks we getting this alarm continously when we checked...
Replies
0
Views
87
I am very, very new to PLCs. I only have experience with Picos, but I knew enough to save this from the dumpster. Apparently, everything on it is...
Replies
13
Views
618
Hi, I tried today to get RD3A and WR3A instructions to work on the PLC and it didn't work, but it worked in simulation. I followed the clone...
Replies
18
Views
1,425
Back
Top Bottom