-> Hier kostenlos registrieren
Hi,
ich bräuchte Hilfe beim Nachfolziehen eines Beispielprojekts.
Mein Problem ist, dass nicht bei jedem aufrufen des Bausteins "SEND" etwas gesendet wird.
Meist gehts beim ersten Mal immer und danach erst jeweils beim 4ten bis 5ten mal drücken des Schalters.
Woran könnte das liegen .. was übersehe ich relevantes in dem Code.
Den Anfangsteil mit dem Aufruf den Datenbank verstehe ich noch. Der Code danach ist mir leider nichtmehr klar.
Konkret gehts um die Teile:
und der darunterliegenden Programmteile.
Was davon könnte der Grund sein, das nicht immer beim Aufrufen von "SEND" etwas gesendet wird?
Eigendlich doch nur der Teil:
oder?
Falls irgendwelche weiteren Daten des Programms benötigt werden einfach fragen
Der Code des Projekts lautet:
OB100
__________________________________________________________________________________________________________
FC21 bzw. "SEND"
__________________________________________________________________________________________________________
Danke
ich bräuchte Hilfe beim Nachfolziehen eines Beispielprojekts.
Mein Problem ist, dass nicht bei jedem aufrufen des Bausteins "SEND" etwas gesendet wird.
Meist gehts beim ersten Mal immer und danach erst jeweils beim 4ten bis 5ten mal drücken des Schalters.
Woran könnte das liegen .. was übersehe ich relevantes in dem Code.
Den Anfangsteil mit dem Aufruf den Datenbank verstehe ich noch. Der Code danach ist mir leider nichtmehr klar.
Konkret gehts um die Teile:
Code:
// Generate edge P_SND_RK_REQ
Was davon könnte der Grund sein, das nicht immer beim Aufrufen von "SEND" etwas gesendet wird?
Eigendlich doch nur der Teil:
Code:
// Generate edge P_SND_RK_REQ
Falls irgendwelche weiteren Daten des Programms benötigt werden einfach fragen
Der Code des Projekts lautet:
OB100
__________________________________________________________________________________________________________
Code:
L B#16#0
T DB40.DBB 0 //P_SND_RK- Work-DB
T DB41.DBB 0 //P_RCV_RK- Work-DB
// ---------------------------
// Reset counters/STATUS
// ---------------------------
T "SEND WORK DB".P_SND_RK_WORK_LADDR //P_SND_RK- Work -DB
T "SEND WORK DB".P_SND_RK_WORK_DB_NO
T "SEND WORK DB".P_SND_RK_WORK_DBB_NO
T "SEND WORK DB".P_SND_RK_WORK_LEN
T "SEND WORK DB".P_SND_RK_WORK_RES_1
T "SEND WORK DB".P_SND_RK_WORK_STATUS
T "SEND WORK DB".P_SND_RK_WORK_STATUS_SAV
T DB40.DBW 16
T "SEND SRC DB".P_SND_RK_COUNTER_OK //Reset Counters
T "SEND SRC DB".P_SND_RK_COUNTER_ERR
T "RCV WORK DB".P_RCV_RK_WORK_LADDR //P_RCV_RK- Work-DB
T "RCV WORK DB".P_RCV_RK_WORK_DB_NO
T "RCV WORK DB".P_RCV_RK_WORK_DBB_NO
T "RCV WORK DB".P_RCV_RK_WORK_LEN
T "RCV WORK DB".P_RCV_RK_WORK_SAVE_LEN
T "RCV WORK DB".P_RCV_RK_WORK_STATUS
T "RCV WORK DB".P_RCV_RK_WORK_STATUS_SAV
T "RCV WORK DB".P_RCV_RK_WORK_RES_2
T "RCV WORK DB".P_RCV_RK_WORK_CNT_OK
T "RCV WORK DB".P_RCV_RK_WORK_CNT_ERR
FC21 bzw. "SEND"
__________________________________________________________________________________________________________
Code:
L 256 //LADDR
T "SEND WORK DB".P_SND_RK_WORK_LADDR
L 42 //DB_NO
T "SEND WORK DB".P_SND_RK_WORK_DB_NO
T "SEND SRC DB".P_SND_RK_DB_NO
L 86 //DBB_NO 0
T "SEND WORK DB".P_SND_RK_WORK_DBB_NO
T "SEND SRC DB".P_SND_RK_DBB_NO
L 10 //114
T "SEND WORK DB".P_SND_RK_WORK_LEN //LEN
T "SEND SRC DB".P_SND_RK_LEN //LEN
// ------------------------
// SEND with Instance-DB
// ------------------------
CALL "P_SND_RK" , "SEND IDB"
SF :='S'
REQ :="SEND WORK DB".P_SND_RK_REQ
R :="SEND WORK DB".P_SND_RK_R
LADDR :="SEND WORK DB".P_SND_RK_WORK_LADDR
DB_NO :="SEND WORK DB".P_SND_RK_WORK_DB_NO
DBB_NO :="SEND WORK DB".P_SND_RK_WORK_DBB_NO
LEN :="SEND WORK DB".P_SND_RK_WORK_LEN
R_CPU_NO:=
R_TYP :=
R_NO :=
R_OFFSET:=
R_CF_BYT:=
R_CF_BIT:=
DONE :="SEND WORK DB".P_SND_RK_DONE
ERROR :="SEND WORK DB".P_SND_RK_ERROR
STATUS :="SEND WORK DB".P_SND_RK_WORK_STATUS
// ------------------------
// Generate edge P_SND_RK_REQ
// ------------------------
UN "SEND WORK DB".P_SND_RK_REQ //P_SND_RK_REQ
S "SEND WORK DB".P_SND_RK_REQ //set P_SND_RK_REQ
O "SEND WORK DB".P_SND_RK_DONE //P_SND_RK_DONE
O "SEND WORK DB".P_SND_RK_ERROR //P_SND_RK_ERROR
R "SEND WORK DB".P_SND_RK_REQ //P_SND_RK_REQ
// -------------------------------
// Check "Complete without error"
// -------------------------------
UN "SEND WORK DB".P_SND_RK_DONE //check P_SND_RK_DONE
SPB CHER //if P_SND_RK_DONE equals 0, jump to CHER
//and check P_SND_RK_ERROR
// -------------------------------
// "Complete without error"
// P_SND_RK_DONE = 1
// -------------------------------
L "SEND SRC DB".P_SND_RK_COUNTER_OK //"Complete without Error"
+ 1 //increment counter
T "SEND SRC DB".P_SND_RK_COUNTER_OK
NOP 0
NOP 0 //further user functions
NOP 0
BE
// -------------------------------
// Check "Complete with error"
// P_SND_RK_ERROR = 1
// -------------------------------
CHER: UN "SEND WORK DB".P_SND_RK_ERROR //check P_SND_RK_ERROR
BEB //if no error occured, jump to end
// -------------------------------
// "Complete with error"
// -------------------------------
L "SEND SRC DB".P_SND_RK_COUNTER_ERR //"Complete with error"
+ 1 //increment counter
T "SEND SRC DB".P_SND_RK_COUNTER_ERR
L "SEND WORK DB".P_SND_RK_WORK_STATUS
T "SEND WORK DB".P_SND_RK_WORK_STATUS_SAV //save STATUS
NOP 0
NOP 0 //Error-Handling
NOP 0
BE
Danke
Anhänge
Zuletzt bearbeitet: