Sebastian_97
Level-1
- Beiträge
- 4
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo zusammen,
ich habe folgendes Problem:
Über GEO2LOG lese ich die Hardware ID's von DI und DO Modulen ein. Das geschieht über einen Array [0..255]
Die Nummer dabei entspricht immer der zugehörigen Stationsnummer (Gerätenummer). Im Anschluss lese ich die Ein- und Ausgabeadressen mit RD_ADDR ein.
Das klappt egal, welche Stationsnummern ich vergebe, egal in welcher Reihenfolge.
Nun zum Problem:
In einem Funktionsbaustein spreche ich mit der Funktion Poke über eine for-Schleife die Byteadressen an. Allerdings werden die Byteadressen nur beschrieben, wenn die Stationsnummern in aufsteigender Reihenfolge von der CPU aus nummeriert sind. D.h. sollte die erste Station die Nummer 5 haben und die nachfolgende die 1, so wird bei der ersten Station kein Wert geschrieben. Siehe Bild.
Mir fällt zudem auf dass der Byteoffset zum einen immer um ein Bit niedriger sein muss als die ausgelesene Adresse. Ebenso kann ich Poke nur mit einer rückwärtslaufenden for Schleife anwenden. Bei Peek ist das nicht so.
Gibt es einen Parameter, der die Teilnehmernummer wie im Bild beschrieben im Anwenderprogramm auslesen kann, sodass die Stationsnummern dementsprechend sortiert werden können? Bzw. gäbe es eine alternative zu Poke außer set_io?
Im Bild handelt es sich um eine Ringtopologie, allerdings hab ich das auch schon mit einer Linientopologie probiert und bin auf das gleiche Ergebnis gekommen.
Im Bild würde zwar bei Station 5 die Byteadresse von DI und DO eingelesen werden, allerdings könnten keine Werte über Poke geschrieben werden.
Danke für eure Antworten.
ich habe folgendes Problem:
Über GEO2LOG lese ich die Hardware ID's von DI und DO Modulen ein. Das geschieht über einen Array [0..255]
Die Nummer dabei entspricht immer der zugehörigen Stationsnummer (Gerätenummer). Im Anschluss lese ich die Ein- und Ausgabeadressen mit RD_ADDR ein.
Das klappt egal, welche Stationsnummern ich vergebe, egal in welcher Reihenfolge.
Nun zum Problem:
In einem Funktionsbaustein spreche ich mit der Funktion Poke über eine for-Schleife die Byteadressen an. Allerdings werden die Byteadressen nur beschrieben, wenn die Stationsnummern in aufsteigender Reihenfolge von der CPU aus nummeriert sind. D.h. sollte die erste Station die Nummer 5 haben und die nachfolgende die 1, so wird bei der ersten Station kein Wert geschrieben. Siehe Bild.
Mir fällt zudem auf dass der Byteoffset zum einen immer um ein Bit niedriger sein muss als die ausgelesene Adresse. Ebenso kann ich Poke nur mit einer rückwärtslaufenden for Schleife anwenden. Bei Peek ist das nicht so.
Gibt es einen Parameter, der die Teilnehmernummer wie im Bild beschrieben im Anwenderprogramm auslesen kann, sodass die Stationsnummern dementsprechend sortiert werden können? Bzw. gäbe es eine alternative zu Poke außer set_io?
Im Bild handelt es sich um eine Ringtopologie, allerdings hab ich das auch schon mit einer Linientopologie probiert und bin auf das gleiche Ergebnis gekommen.
Im Bild würde zwar bei Station 5 die Byteadresse von DI und DO eingelesen werden, allerdings könnten keine Werte über Poke geschrieben werden.
Danke für eure Antworten.