-> Hier kostenlos registrieren
Hallo,
wer kann mir nen Tipp geben.
Möchte aus einem DB eines FiFo Schieberegister mit 200 Plätzen einzelne Speichereinträge über eine Stationsindex nummer auslesen und wieder zurückschreiben. Bereich ist mit einem UDT erzeugt und 6 Byte lang.
Hab schon mit nem ANY Zeiger angefangen komm aber nicht klar.
L "DB_TPKomm".Transport_Pos_Mass_21; <--- z.B. Platz 21
T #TEMP_REG_POS; //<--- Hier steht die Startadresse des Speicherplatz als INT Zahl wo unten ausgelesen werden soll.
LAR1 P##REG_POS_HOLEN; <--- ANY Zeiger für Quell DB erzeugen
L B#16#10; //10 HEX für S7
T LB [AR1,P#0.0];
L B#16#4; //Datentyp WORD
T LB [AR1,P#1.0];
L 6; //Wiederholfaktor Bereichslänge
T LW [AR1,P#2.0];
L 10; //Quell Datenbaustein
T LW [AR1,P#4.0];
L P#DBX 11.0; //Daten aus DBB <----- HIER KOMM NOCH NICHT KLAR WIE ICH DA den INDEX AUF DAS RICHTIGE BYTE BEKOMME (#TEMP_REG_POS)
T LD [AR1,P#6.0];
//HIer sollen die Daten über den ANY Zeiger aus dem Register geholt werden und dann in die Station schreiben über BlockMove Befehl.
CALL "BLKMOV"
SRCBLK := #REG_POS_HOLEN, <-- ANY Zeiger von oben!
RET_VAL := #RET_VALUE,
DSTBLK := "DB_St.3_FiFoRahmenregister".Pos21.InfoBit0 <--- Adressbereich einer der Stationen.
oder gibt es was einfacheres!?
Gruß P
wer kann mir nen Tipp geben.
Möchte aus einem DB eines FiFo Schieberegister mit 200 Plätzen einzelne Speichereinträge über eine Stationsindex nummer auslesen und wieder zurückschreiben. Bereich ist mit einem UDT erzeugt und 6 Byte lang.
Hab schon mit nem ANY Zeiger angefangen komm aber nicht klar.
L "DB_TPKomm".Transport_Pos_Mass_21; <--- z.B. Platz 21
T #TEMP_REG_POS; //<--- Hier steht die Startadresse des Speicherplatz als INT Zahl wo unten ausgelesen werden soll.
LAR1 P##REG_POS_HOLEN; <--- ANY Zeiger für Quell DB erzeugen
L B#16#10; //10 HEX für S7
T LB [AR1,P#0.0];
L B#16#4; //Datentyp WORD
T LB [AR1,P#1.0];
L 6; //Wiederholfaktor Bereichslänge
T LW [AR1,P#2.0];
L 10; //Quell Datenbaustein
T LW [AR1,P#4.0];
L P#DBX 11.0; //Daten aus DBB <----- HIER KOMM NOCH NICHT KLAR WIE ICH DA den INDEX AUF DAS RICHTIGE BYTE BEKOMME (#TEMP_REG_POS)
T LD [AR1,P#6.0];
//HIer sollen die Daten über den ANY Zeiger aus dem Register geholt werden und dann in die Station schreiben über BlockMove Befehl.
CALL "BLKMOV"
SRCBLK := #REG_POS_HOLEN, <-- ANY Zeiger von oben!
RET_VAL := #RET_VALUE,
DSTBLK := "DB_St.3_FiFoRahmenregister".Pos21.InfoBit0 <--- Adressbereich einer der Stationen.
oder gibt es was einfacheres!?
Gruß P