L #LIST_DB
T #DBNR
OPN DB [#DBNR]
L DBW 436
+ 1
T DBW 436
//-------------------------------------
AN DBX 80.0
AN DBX 30.0
AN DBX 30.4
AN DBX 30.5
S DBX 30.0
// ------------------------
// Generate edge SEND_REQ
// ------------------------
A(
O DBX 30.4
O DBX 30.5
)
A DBX 30.0
R DBX 30.0
A DBX 30.0 //Flankenauswertung SENDEN
FP DBX 28.0 //Flankenmerker
= DBX 28.1 //Impulsmerker
AN DBX 28.1
JC MV
//-------------------------------------------------------------------------------
// Auftrag aus Liste 1 bearbeiten
// read order out of list 1
// *) Auftragsliste2 deaktiviert 17.09.03 B.Wagner
//-------------------------------------------------------------------------------
L #ALi1_DB //Auftragsliste 1 oeffnen -- open list1
T #DBNR
OPN DB [#DBNR]
LAR1 DBD 0 //Zeiger restaurieren -- restore pointer
L W [AR1,P#0.0]
L W#16#EEEE //ENDE-Kennung -- sign for "end of list"
<>I
JC Tra1 // *)
/// SPB Tran //Auftragsdaten kopieren -- copy order data *)
LAR1 P#DBX 16.0 //Listenende gefunden, Zeiger auf Listenanfang setzen
TAR1 DBD 0 //end of list reached, set pointer to start of list
JU Tra1
// Wenn die Liste 1 einmal vollstaendig abgearbeitet wurde, wird ein Auftrag
// ausder Liste 2 bearbeitet
// each time the end of list 1 is reached, one order from list 2 is handled
//-------------------------------------------------------------------------------
// Auftrag aus Liste 2 bearbeiten
// read order out of list 1
//-------------------------------------------------------------------------------
L #LIST_DB
T #DBNR
OPN DB [#DBNR]
L DBW 436 // Zeit f黵 einen Pufferdurchlauf Liste 1
L 6
*I
T DBW 438
L 0
T DBW 436
//-------------------------------------------------------------------------------
L #ALi2_DB //Auftragsliste 2 oeffnen -- open List 2
T #DBNR
OPN DB [#DBNR]
LAR1 DBD 0 //Zeiger restaurieren -- restore pointer
L W [AR1,P#0.0]
L W#16#EEEE //ENDE-Kennung -- sign for "end of list"
<>I
JC Tran
LAR1 P#DBX 16.0 //Listenende gefunden, Zeiger auf Listenanfang setzen
TAR1 DBD 0 //end of list reached, set pointer to start of list
Tran: TAR1 DBD 0 //Adressregister 1 sichern - save addressregister 1
Tra1: NOP 0 // *)
//------------------------------------------------------------------------------//
//Pointer auf Datenquelle setzen
//create source pointer
//------------------------------------------------------------------------------
LAR1 P##ANY_Pointer1 //Adresse ANY_Pointer in AR1 laden -- load address of pointer
L DBD 0 //Zeiger auf Datenwort -- pointer to dataword
T LD [AR1,P#6.0]
L #DBNR
T LW [AR1,P#4.0] //DB-Nummer -- db number
L W#16#6 //Anzahl Daten 4 Byte -- number of data
T LW [AR1,P#2.0]
L W#16#1002 //Byte 0 immer 10H, 2 fuer Datentyp Byte
T LW [AR1,P#0.0] //byte 0 always 10H, 2 for datatype byte
//------------------------------------------------------------------------------
// Pointer auf Datenziel setzen
// create destination pointer
//------------------------------------------------------------------------------
LAR1 P##ANY_Pointer2 //Adresse ANY_Pointer in AR1 laden -- load address of pointer
L 20 //Daten im LIST_DB ab DBB20 ablegen -- transfer data to DBB20
SLD 3
OD DW#16#84000000
T LD [AR1,P#6.0]
T LD [AR1,P#6.0]
L #LIST_DB
T LW [AR1,P#4.0]
L W#16#6
T LW [AR1,P#2.0]
L W#16#1002
T LW [AR1,P#0.0]
请高师指点P##ANY_Pointer1 和P##ANY_Pointer2 值是怎么来的!谢谢