M
Mathias W.
Guest
-> Hier kostenlos registrieren
Hallo Leute, brauche ein Schieberegister das folgende ersetzt und Flexibler zu Handhaben ist!
Netzwerk 1:
U M 0.0 // SPS-Taktmerker
FP M 10.0 // Pos-Flanke
= M 11.0 // Flankenimpulsmerker
Netzwerk 2:
U M 11.0
SPBN M001
AUF DB 10
L DBB 4
T DBB 5
L DBB 3
T DBB 4
L DBB 2
T DBB 3
L DBB 1
T DBB 2
L DBB 0
T DBB 1
L EB 1
T DBB 0
M001: NOP 0
Dieser Code funktioniert ja, aber da ich so circa 100 Impulse land die Daten im DB erhalten muß ist das verdammt viel Schreibarbeit und das ganze ist äußerst unflexsibel.
Ich habe dieses ausprobiert, aber es funktioniert nicht!!!!
FC irgendwas
Netzwerk 1:
AUF DB [#DB_Nummer] // Die DB-Nr wird beim Aufruf des FC's an die
// Lokalvariable übergeben (funktioniert noch)
L #Takte // hier wird die Länge Schieberegisters erstellt
SCHL: T #Sch_Zaehler
L DBB [#DB_Nr_Lesen] // z.B. Byte 9 einlesen
T DBB [#DB_Nr_Schreiben] // und in Byte 10 ablegen, danach
// Byte 8 einlesen und in Byte
L #DB_Nr_Lesen // 9 ablegen, usw.
+ -1 // "DB_Nr_Lesen"
L #DB_Nr_Schreiben // und "DN_Nr_Schreiben" sind Lokal-
+ -1 // Variablen vom Typ DWORD
L #Sch_Zaehler
LOOP SCHL
NOP 0
L #Ein_Byte // Nach jedem Schleifendurchlauf werden die neuen
T DBB 0 // Informationen im DB XX.DBB 0 gespeichert
Wenn ich den Code in die SPS (CPU 313C) dann geht die CPU in Stop und der Fehler liegt irgendwo bei der Zeile:
L DBB [#DB_Nr_Lesen] und
T DBB [#DB_Nr_Schreiben].
wenn ich dort direkte Adressen eingebe dann läufts! Was aber dann kein Schieberegister mehr ist!
Kann mir jemand helfen bei der indirekten Adressierung, aber bitte ganz langsam, zum mitmeißeln????
Gruß Mathias
Netzwerk 1:
U M 0.0 // SPS-Taktmerker
FP M 10.0 // Pos-Flanke
= M 11.0 // Flankenimpulsmerker
Netzwerk 2:
U M 11.0
SPBN M001
AUF DB 10
L DBB 4
T DBB 5
L DBB 3
T DBB 4
L DBB 2
T DBB 3
L DBB 1
T DBB 2
L DBB 0
T DBB 1
L EB 1
T DBB 0
M001: NOP 0
Dieser Code funktioniert ja, aber da ich so circa 100 Impulse land die Daten im DB erhalten muß ist das verdammt viel Schreibarbeit und das ganze ist äußerst unflexsibel.
Ich habe dieses ausprobiert, aber es funktioniert nicht!!!!
FC irgendwas
Netzwerk 1:
AUF DB [#DB_Nummer] // Die DB-Nr wird beim Aufruf des FC's an die
// Lokalvariable übergeben (funktioniert noch)
L #Takte // hier wird die Länge Schieberegisters erstellt
SCHL: T #Sch_Zaehler
L DBB [#DB_Nr_Lesen] // z.B. Byte 9 einlesen
T DBB [#DB_Nr_Schreiben] // und in Byte 10 ablegen, danach
// Byte 8 einlesen und in Byte
L #DB_Nr_Lesen // 9 ablegen, usw.
+ -1 // "DB_Nr_Lesen"
L #DB_Nr_Schreiben // und "DN_Nr_Schreiben" sind Lokal-
+ -1 // Variablen vom Typ DWORD
L #Sch_Zaehler
LOOP SCHL
NOP 0
L #Ein_Byte // Nach jedem Schleifendurchlauf werden die neuen
T DBB 0 // Informationen im DB XX.DBB 0 gespeichert
Wenn ich den Code in die SPS (CPU 313C) dann geht die CPU in Stop und der Fehler liegt irgendwo bei der Zeile:
L DBB [#DB_Nr_Lesen] und
T DBB [#DB_Nr_Schreiben].
wenn ich dort direkte Adressen eingebe dann läufts! Was aber dann kein Schieberegister mehr ist!
Kann mir jemand helfen bei der indirekten Adressierung, aber bitte ganz langsam, zum mitmeißeln????
Gruß Mathias