Pokeys 57e, Modbus, Shared Data

Hallo Mitstreiter,
ich habe am Pokeys eine Tastaturmatrix angeschlossen (6x9).

Diese Matrix lese ich in Poblocks mittels Poil zu je 8 bit aus.
So bekomme ich pro Taste ein Bit (ein oder aus).

Jeweils 8 bit kommen auf einen Baustein Bit->Byte
Den Ausgang eines solchen Bit->Byte verbinde ich dann an mit SharedData um die Werte in IPS zu bekommen.

Und nun kommts:
wie kann ich diese SharedData in IPS auslesen?

ModBus ist konfiguriert und funkioniert in Verbindung mit 1-Wire welche auch am Pokeys angeschlossen sind einwandfrei.

Nur wie kann ich definieren ob das SharedData 8,16 oder 32 bit sind.
Bei SharedData über Modbus bekomme ich falsche Werte.
Wenn ich die Adresse 1001 (mein erster SharedData) auslese bekomme ich den Wert 1048576 obwohl ich dort 16 erwarte.
Falls ich die Adresse auf 201 umstelle so erhalte ich Einträge im Fehlerprotokoll
ILLEGAL_RESPONSE_LENGTH
Error forwarding data to #12345: waiting for buffer usage timed out.

Hat da schon jemand Erfahrung damit?

Hans

Ich würde bei der 1000er Adresse bleiben und nur bei der Modbusinstanz mit Word, DWord (Lesehaken gesetzt?) usw spielen.

Ab welcher Adresse erwartest Du welche Werte und wie hast Du den in Poblock gesetzt?

Gruß Helmut

Hallo Helmut,
ich habe dazu gelernt

Nochmals zur Verdeutlichung - ich schicke Daten aus einem Bit-> Byte also 8Bit

Ich hatte Slot 0 des SharedData unbelegt und meine Daten auf Slot 1 gelegt.
Im SharedData Manager von Poblocks als auch der Pokeys Software kommt der Wert korrekt an.

Ich hatte versucht diesen Wert über die Modbus Adresse 1001 zu lesen.
Nun habe ich versuchsweise die Daten auf Slot 0 gelegt und bei Adresse 1000 gelesen - siehe da: es läuft.

Meine weiteren Versuche ergaben dass der Slot 1 mittels Adresse 1002 abgefragt werden kann.

Jetzt stellt sich für mich die Frage:
Nachdem ich ja nur 8Bit übermittle kann man das sparsamer machen? Ich hab nirgendwo gefunden wie man die Größe eines SharedData einstellen könnte.
Und wie frage ich das dann ab?

Liebe Grüße aus Österreich!

Mit ein wenig probieren findet man es dann :wink:
Was Du auch machen kannst, die ersten 8Bit, 8 mal mit 2 Multiplizieren und dann die nächsten 8Bit addieren.

In IPS kannst Du dann den empfangenen Wert so UND-Verknüpfen, dass Du die Werte wieder einzeln bekommst

Kannst ja mal im Windowsrechner ausprobieren, zB Dezimal 9 eingeben, auf Binär umschalten, dann siehst Du die Bitwerte, wieder zurück auf Dez schalten, mal die 9 2222, dann mal wieder umschalten auf Binär und schauen wie ich das meine.
Das war ein Beispiel mit 4 Bit verschieben, so kannst Du mit einem 32-Bit Sharedatawert Deine einzelnen Bitwerte auf eine 32 Bit Abfrage bringen.

Gruß Helmut