Jackjackson
Level-1
- Beiträge
- 156
- Reaktionspunkte
- 6
Auf DB 1 // Ringspeicher
U E0.0
ZV Z1
L Z1 // Adresse in Ringspeicher bilden
SLD3
LAR1
L #Zahl // irgendeine Zahl die Du speichern willst
T DBW[AR1,P#0.0]
L Z1
L 10 // Anzahl der zu speichernden Zahlen
==I
R Z1
ich will in STEP7 ein Programm schreiben, das über ein Signal einen Zähler hochzählt und jedesmal, wenn der hochzählt, den Wert als Integer-Wert speichert.... Frage ist, wo soll ich die Werte reinspeichern bzw. wie kann ich auf diese dann zugreifen?
Es sind 10 Eingangssignale gekommen, der Zähler ist auf 10...
ich will dass die Werte 10, 9, 8, 7, 6, 5 irgendwo gespeichert werden, so dass ich auf die zugreifen kann... bei 11 wärn dann eben 11, 10, 9, 8, 7, 6...
RGANIZATION_BLOCK "OB_HAUPTPROGRAMM"
TITLE = Hauptprogramm
//16
AUTHOR : KAI
FAMILY : SPSFORUM
NAME : FIFO
VERSION : 1.0
VAR_TEMP
OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
OB1_PRIORITY : BYTE ; //Priority of OB Execution
OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
OB1_RESERVED_1 : BYTE ; //Reserved for system
OB1_RESERVED_2 : BYTE ; //Reserved for system
OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
END_VAR
BEGIN
NETWORK
TITLE =Zaehler
U "SIGNAL";
ZV "ZAEHLER";
BLD 101;
NOP 0;
NOP 0;
U "ZAEHLER_RUECKSETZEN";
R "ZAEHLER";
NOP 0;
LC "ZAEHLER";
T "ZAEHLER_ZAEHLWERT_BCD";
NOP 0;
NETWORK
TITLE =Zaehler
L "ZAEHLER_ZAEHLWERT_BCD";
BTI ;
T "ZAEHLER_ZAEHLWERT_INT";
NOP 0;
NETWORK
TITLE =FIFO Zaehler
U "SIGNAL";
FP "SIGNAL_FLANKE";
SPBNB _001;
CALL "FC_FIFO_ZAEHLER" (
DB_ZAEHLER := "DB_ZAEHLER",
ANZAHL_ZAEHLWERTE := 10,
ZAEHLWERT := "ZAEHLER_ZAEHLWERT_INT");
_001: NOP 0;
END_ORGANIZATION_BLOCK
TITLE =FIFO Zaehler
AUTHOR : KAI
FAMILY : SPSFORUM
NAME : FIFO
VERSION : 1.0
VAR_INPUT
DB_ZAEHLER : BLOCK_DB ;
ANZAHL_ZAEHLWERTE : INT ;
ZAEHLWERT : INT ;
END_VAR
VAR_TEMP
DB_REGISTER : WORD ;
AR1_REGISTER : DWORD ;
SCHLEIFE : INT ;
ZWISCHENWERT : INT ;
END_VAR
BEGIN
NETWORK
TITLE =Register sichern
L DBNO; // DB-Register
T #DB_REGISTER;
TAR1 #AR1_REGISTER; // AR1-Register
NETWORK
TITLE =FIFO Zaehler
AUF #DB_ZAEHLER; // DB Zaehler
L P#0.0;
LAR1 ;
L #ZAEHLWERT; // Zaehlwert
T #ZWISCHENWERT; // Zwischenwert
L #ANZAHL_ZAEHLWERTE; // Anzahl Zaehlwerte
M01: T #SCHLEIFE;
L DBW [AR1,P#0.0]; // Zaehlwert
L #ZWISCHENWERT; // Zwischenwert
T DBW [AR1,P#0.0]; // Zwischenwert => Zaehlwert
TAK ;
T #ZWISCHENWERT; // Zaehlwert => Zwischenwert
L P#2.0;
+AR1 ;
L #SCHLEIFE;
LOOP M01;
NETWORK
TITLE =Register wiederherstellen
AUF DB [#DB_REGISTER]; // DB-Register
LAR1 #AR1_REGISTER; // AR1-Register
END_FUNCTION
L LW 18
SRW 4
T MW xy
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?