...
Nachfolgende Abbildung, entnommen von Seite 102 der CifX-API Dokumentationaus dem CIFX API Manual (cifX API), zeigt die Standard-Sequenz zum Starten der Bus-Kommunikation, einschließlich vorausgehender Konfiguration des Protokoll-Stacks.
Die Konfiguration selbst ist abhängig vom eingesetzten Protokoll-Stack und wird hier daher nicht genauer präzisiert.
Handles & Channels
Die oben gezeigte Abbildung zeigt stellt die Standard-Sequenz zum Starten der Bus-Kommunikation dar. Im ersten Schritt muss der Treiber über xDriverOpen() (0) geladen und der Channel mittels xChannelOpen() (1) geöffnet werden.
Beide Funktionen generieren Handles die im weiteren Verlauf der Applikation benötigt werden.
Die Handles müssen also zur Laufzeit der Anwendung erhalten bleiben, allerdings auch vor dem Beenden der Applikation über die jeweiligen Close-Funktionen (4 & 5) beendet werden.
...
Der Channel-Handle der durch xChannelOpen() erzeugt wird, verweist auf die Start-Adresse von Channel[n] auf dem so genannten Dual-Port-Memorys (DPM).
Ein Channel dient als Zugangspunkt für die Kommunikation über den Protokoll-Stack. Eine genaue Beschreibung über die verschiedenen Abschnitte des DPM befindet sich auf Seite 11 des DPM-Manualsim Dual-port memory interface Manual.
Cyclic Data-Transfer
Ist der Bus online kann auf ON geschaltet, können über die verschiedenen Mechanismen die Prozess-Daten Prozessdaten abgerufen bzw. gesendet werden, siehe Abschnitt (A). Die einfachste und empfohlene Methode ist die Verwendung der xChannelIORead()- und xChannelIOWrite-Funktionen.
Sie übernehmen die korrekte Adressierung am DPM und die Einhaltung der Handshakes. Jeder Channel des DPM verfügt dafür über je eine ProzessProzessdaten-Daten-Area für Eingangs- und Ausgangs-Daten.
Die Prozess-Daten Prozessdaten werden stets als Byte-Array organisiert und als solche in den Funktions-Parametern übergeben. Mittels des Offset- und Length-Parameter kann das Prozess-Image frei adressiert werden.
Die Interpretation des Byte-Streams liegt in der Verantwortung der Applikation. Eine Funktion zum übergeben zur Übergabe anderer Datentypen gibt es nicht.
...
Auf dem DPM im so genannten Common Status Block sowie Common Control Block sind verschiedene Zustands-Automaten definiert die über den aktuellen Status des Geräts sowie des Bus-Stacks abbilden.
Die so genannten „Change of State“- sowie das „Communication State" Register informieren über aktuelle Zustände des Device bzw. ermöglichen die Einflussnahme durch die Applikation.
Genauere Informationen können auf den Seiten 100 und 102 des DPM-Manuals dem Dual-port memory interface Manual entnommen werden. Der einfachste Weg die nötigen Flags zu triggern bzw. abzufragen ist die Verwendung der Funktionen xChannelHostState() (2) sowie der xChannelBusState() (3).
...
Das aktivieren des Buses über die xChannelBusState()-Funktion unterliegt einer gewissen zeitlichen Verzögerung. Für den Aufruf der Funktion sollte also ein ausreichend großer Timeout anberaumt werden. Sollte die Funktionen den Fehler 0x800C0021 „COM-flag not set“ zurückgeben, bedeutet dies jedoch nicht zwangsläufig einen Fehlschlag.
Da der Prozess im Hintergrund weiterläuft, kann der Bus zu einem späteren Zeitpunkt noch aktiviert werden.
...
Hinweis: Wird während dieses Vorgangs eine xChannelIO-Funktion oder erneut xChannelBusState() aufgerufen wird diese sich mit dem oben genannten Fehler zurückmelden.
Bei wiederholten Aufrufen wird die Funktion den Status „OK“ und korrekte Nutzdaten zurückliefern sobald der Bus online ist.
...
Sycon.NET - "Start of bus communication"
Grundsätzlich erlaubt die CifX-Karte auch Die meisten COMSOL Produkte (z.B: CIFX oder netrHOST) erlauben einen automatischen Start der Kommunikation sobald die Karte startet. , sobald das Gerät dazu bereit ist.
Dies hängt jedoch von der Konfiguration des Start of bus communication Flags ab.
Applikativ wird dieses Flag über die Konfigurations-Pakete der Protokoll-API festgelegt. Alternativ kann die Einstellung auch über ein DTM (SyconSYCON.NETnet) durchgeführt werden.
References
cifX-API: cifX API (Revision 6)
netX Dual-Port-Memoy Interface DPM: Dual-port memory manual (Revision 15)