Beispiel 3: Eventblock und EventTable (Teil 3)
Auslesen einer EventTable
EventBlock10.ens
Ich habe zunächst eine Clienttabelle erzeugt, da man ja in der Regel die EventTable dezentral lesen möchte. Natürlich kann man das Konstrukt auch auf dieselbe EventTable anwenden. Zu beachten sind die Verknüpfungen der drei Module.
Beispiel 3-8.jpg
Was haben wir? Fünf Daten, die in einer EventTable abgespeichert sind. Sie werden über den Leseindex Rx und den Lesetrigger R abgerufen.
Was wollen wir? Einen Eventblock, der einen Identifier
id, die Anzahl # der folgenden Daten, einen port_flag
or und die eigentlichen fünf Daten, also insgesamt acht Daten besitzt.
Wir erzeugen durch den Trigger
Lies eine Schleife mit dem Datenbereich [-3,4]. Die negativen Parameter erzeugen den Kopf (header {h}) des Eventblocks, also (id,#,or), die anderen rufen über einen Indexbus {i} die Daten aus der Tabelle ab. Da alles sequentiell abläuft, werden die Daten als Eventblock gesendet.
Beispiel 3-9.jpg
Wie viele Daten letztlich abgerufen werden sollen, wird über den Parameter DX der EventTable ermittelt. D.h. das Beispiel ist für beliebig große EventTables gedacht. Denkbar wäre hier auch der Abruf von Teilbereichen, wenn man bei der Ausgabe der Indices eine Rechenoperation anwendet.
Gelb umrandet ist der Bereich des headers. Es passiert dort nicht viel, interessant ist vielleicht die Berechnung des
port_flags or. Das erkläre ich mal nicht, sondern gebe das als Mathematikaufgabe zur Binärrechnung.
Die Parameterwerte 0 bis 4 werden nach außen der EventTable zugeführt, wo sie den Lesevorgang auslösen.
Beispiel 3-10.jpg
Kleine Bemerkung zur EventTable: damit beim Duplizieren der Table auch wirklich eine ClientTable entsteht, muss man die erste Table zunächst abspeichern (irgendeinen Namen). Dadurch ist sie quasi im Ensemble angemeldet und damit verknüpft. Die gerade abgespeicherte Tabelle kann man auf seinem Compi übrigens wieder löschen. Wenn man die Tabelle nun dupliziert, laufen diese synchron. D.h. jede Änderung in der ersten Tabelle bewirkt auch eine im client und umgekehrt. In diesem Ensemble ist nur die erste Tabelle sichtbar.
Ich habe beim Abspeichern des Ensembles die Tabelle in den Draw-Modus gestellt. D.h. man kann auch von Hand die Werte ändern und über
Lies auslesen.
Der
Sende-Knopf überschreibt wieder.
ciao herw
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.