/*******************Kommentar only Anfang
Begin OB1
Beispiel S7300C
ASCII Send Recv
Komponenten:
OB 1 Zyklus OB
OB 100 Anlauf OB
FC 21 FC fuer SEND
FC 22 FC fuer RECV
DB 40 Arbeits-DB fuer SEND
DB 41 Arbeits-DB fuer RECV
DB 42 Quell-DB for SEND
DB 43 Ziel -DB for RECV
DB 21 Instanz-DB fuer SEND
DB 22 Instanz-DB fuer RECV
****************** Kommentar Ende *********/
// Spielt von hier keine Rolle
// UN M 30.7
// SPB ERNA
//L DB43.DBD 0
// L DW#16#53494D41
// ==D
// = A 124.0
// Spielt bis hier keine Rolle weis jezz auch nich was das war
// UC "SEND" //Aufruf des FC zum Bearbeiten des Sende-Auftrags
U M 30.7
= A 124.7
U A 124.7
CC "RECV" //Aufruf des FC zum Bearbeiten des Empfangs-Auftrags
===========================================================
Begin FC22
// -------------------------------
// Pruefen "Empfang mit Fehler"
// -------------------------------
CHER: UN "RECV WORK DB".RCV_ERROR //pruefen RECV_ERROR
BEB //falls kein Fehler aufgetreten, Baustein beenden
// -------------------------------
// "Empfang mit Fehler"
// -------------------------------
L "RECV WORK DB".RCV_WORK_COUNTER_ERR // "Durchlauf mit Fehler"
+ 1 //inkrementieren des Zaehlers
T "RECV WORK DB".RCV_WORK_COUNTER_ERR
L 1023 //LADDR
T "RECV WORK DB".RCV_WORK_LADDR
L W#16#1002 //Typ BYTE
T LW 0
L 43 //DB_NO
T "RECV WORK DB".RCV_WORK_DB_NO
T LW 4
L 0 //DBB_NO
T "RECV WORK DB".RCV_WORK_DBB_NO
SLD 3
OD DW#16#84000000
T LD 6
// ------------------------
// Freigabe des Empfangs
// ------------------------
SET
= "RECV WORK DB".RCV_EN_R //RECV mit RECV_EN_R=TRUE
// ------------------------
// RECV mit Instanz-DB
// -------------------------
CALL "RCV_PTP" , "RECV IDB"
EN_R :="RECV WORK DB".RCV_EN_R
R :=
LADDR :="RECV WORK DB".RCV_WORK_LADDR
NDR :="RECV WORK DB".RCV_NDR
ERROR :="RECV WORK DB".RCV_ERROR
STATUS:="RECV WORK DB".RCV_WORK_STATUS
RD_1 :=#ZIEL_ZEIGER
LEN :="RECV WORK DB".RCV_WORK_LEN
// -------------------------------
// Pruefen von RECV_NDR ("Empfang ohne Fehler")
// -------------------------------------------
UN "RECV WORK DB".RCV_NDR //pruefen von RECV_NDR
SPB CHER //falls RECV_NDR gleich FALSE, springe nach CHER
//und pruefen von RECV_ERROR
// -------------------------------
// RECV_NDR = 1 ("Empfang ohne Fehler")
// ------------------------------------------
L "RECV WORK DB".RCV_WORK_COUNTER_OK //"Empfang ohne Fehler"
+ 1 //inkrementieren des Zaehlers
T "RECV WORK DB".RCV_WORK_COUNTER_OK
L "RECV WORK DB".RCV_WORK_LEN //sichern der Empfangs-Laenge
T "RECV WORK DB".RCV_WORK_SAVE_LEN
//ichb (von hier setzte ichs ins Beispiel ein
L DB43.DBD 0
L 'SIMA'
==D
= A 124.0
U A 124.0
S A 125.0
L DB43.DBD 0
L 'OTTO'
==D
R A 125.0
//iche bis hier ins Beispiel eingesetzt )
// ----------------------------
// Sichern "RECV_STATUS"
// ----------------------------
L "RECV WORK DB".RCV_WORK_STATUS
T "RECV WORK DB".RCV_WORK_STATUS_SAV //sichern des STATUS
BE