interbus-s - Onlinecomponents.com
Transcription
interbus-s - Onlinecomponents.com
INTERBUS-S m Anwenderhandbuch po ne nt s. co Treibersoftware zu Anschaltbaugruppen für IBM-kompatible PCs IBS PC CB SWD UM Revision: A in ec 27 53 94 4 on l Artikel-Nr.: om Typ: Dieses Handbuch ist gültig für die Treibersoftware-Version 0.9 zu den Anschaltbaugruppen: IBS PC CB/I-T IBS PC CB/COP/I-T IBS PC CB/RTX486/I-T Artikel-Nr. 27 80 84 9 Artikel-Nr. 27 54 51 6 Artikel-Nr. 27 61 47 0 Copyright by Phoenix Contact 05/1995 5086A 5086A s. nt ne po om in ec on l co m InterBus-S Bitte beachten Sie folgende Hinweise: Um Ihnen einen möglichst unproblematischen Gebrauch dieses Handbuchs und einen sicheren Geräteeinsatz in den Phasen der Installation, des Betriebs und der Wartung zu gewährleisten, sollen Sie folgende Hinweise aufmerksam lesen und beachten: Erklärungen zu den verwendeten Symbolen m Das Symbol Achtung bezieht sich auf fehlerhafte Handlungen, die einen Schaden der Hard- oder Software oder, in indirektem Zusammenhang mit gefährlicher Prozeßperipherie (z.B. ungeschützt laufende Wellen von Motoren mit Aktorfunktion), leichten bis schweren Personenschaden zur Folge haben können. Das Symbol steht immer links vom zu kennzeichnenden Text. nt s. co Die Symbol Hand gibt Ihnen Tips und Ratschläge für den effizienten Geräteeinsatz und die Softwareoptimierung, um Ihnen zum Beispiel eine mögliche Mehrarbeit zu ersparen. Außerdem vermittelt Ihnen der so gekennzeichnete Text systembedingte Randbedingungen, die unbedingt beachtet werden müssen, um einen fehlerfreien Betrieb zu ermöglichen. Die Hand steht aber auch für begriffliche Klarstellungen. po ne Das Symbol Text verweist Sie auf weiterführende Informationsquellen (Handbücher, Datenblätter, Literatur, etc.) zu dem angesprochenen Thema, Produkt, o.ä. Ebenso gibt dieser Text hilfreiche Hinweise zur Orientierung, Lesereihenfolge etc. im Handbuch. om Ihre Meinung interessiert uns in ec Wir sind ständig bemüht, die Qualität unserer Handbücher zu verbessern. Sollten Sie Anregungen und Verbesserungsvorschläge zu Inhalt und Gestaltung dieses Handbuchs haben, würden wir uns freuen, wenn Sie uns Ihre Vorschläge zusenden. Verwenden Sie dazu bitte den universellen Telefax-Vordruck am Ende des Handbuchs. on l Erklärungen zu den rechtlichen Grundlagen Dieses Handbuch, einschließlich aller darin enthaltenen Abbildungen, ist urheberrechtlich geschützt. Jede Drittverwendung dieses Handbuchs, die von den urheberrechtlichten Bestimmungen abweicht, ist verboten. Die Reproduktion, Übersetzung sowie die elektronische und photographische Archivierung und Veränderung bedarf der schriftlichen Genehmigung der Firma Phoenix Contact. Zuwiderhandlungen verpflichten zu Schadensersatz. Phoenix Contact behält sich jegliche Änderungen, die dem technischen Fortschritt dienen, vor. Alle Rechte für den Fall der Patenterteilung oder Gebrauchsmustereintragung sind Phoenix Contact vorbehalten. Fremdprodukte werden stets ohne Vermerk auf Patentrechte genannt. Die Existenz solcher Rechte ist daher nicht auszuschließen. Der in diesem Handbuch beschriebene Produktgebrauch richtet sich ausschließlich an qualifizierte Anwendungsprogrammierer und Software-Ingenieu- InterBus-S on l in ec om po ne nt s. co m re, die mit den Sicherheitskonzepten der Automatisierungstechnik und den geltenden nationalen Normen vertraut sind. Für Fehlhandlungen und Schäden, die durch Mißachtung der Informationen dieses Handbuchs an Produkten von Phoenix Contact oder Produkten anderer Hersteller entstehen, übernimmt Phoenix Contact keine Haftung. InterBus-S Inhaltsverzeichnis 1 Überblick über die Treibersoftware . . . . . . . . . . . . . . . . . . . . 1-3 2 Treibersoftware für C unter DOS . . . . . . . . . . . . . . . . . . . . . 2-3 m co nt po ne Struktur der Treibersoftware auf dem Host (PC) Struktur der Treibersoftware auf dem COP . . Units . . . . . . . . . . . . . . . . . Funktionen für DOS . . . . . . . . . . . Funktionen des Device-Driver-Interfaces . . . Funktionen zur Verwaltung von Datenkanälen . Funktionen des Mailbox-Interfaces. . . . . . Funktionen des Data-Interfaces . . . . . . . Funktionen zur Kontrolle der Hardware . . . . Abfrage der DIP-Schalter . . . . . . . . . Überwachung des SysFail-Registers . . . . . Funktionen zur Ansprache des SRAMs . . . . Funktionen zur Kontrolle der Watchdogs . . . IBS-Diagnosefunktion. . . . . . . . . . . on l in ec 3.1 3.2 3.3 3.4 3.4.1 3.4.1.1 3.4.1.2 3.4.1.3 3.4.2 3.4.2.1 3.4.2.2 3.4.2.3 3.4.2.4 3.4.3 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 2-3 2-4 2-5 2-6 2-6 2-8 2-10 2-13 2-13 2-14 2-14 2-16 2-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 3-3 3-4 3-5 3-6 3-6 3-8 3-10 3-13 3-13 3-14 3-14 3-16 3-18 Ergänzungen zur Treibersoftware für Windows . . . . . . . . . . . . . . . 4-3 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.7.1 4.7.2 4.7.3 4.8 5086A . . . . . . . . . . . . . . Treibersoftware für Pascal unter DOS. . . . . . . . . . . . . . . . . . . 3-3 om 3 Struktur der Treibersoftware auf dem Host (PC) Struktur der Treibersoftware auf dem COP . . Libraries und Include-Dateien. . . . . . . . Funktionen für DOS . . . . . . . . . . . Funktionen des Device-Driver-Interfaces . . . Funktionen zur Verwaltung von Datenkanälen . Funktionen des Mailbox-Interfaces. . . . . . Funktionen des Data-Interfaces . . . . . . . Funktionen zur Kontrolle der Hardware . . . . Abfrage der DIP-Schalter . . . . . . . . . Überwachung des SysFail-Registers . . . . . Funktionen zur Ansprache des SRAMs . . . . Funktionen zur Kontrolle der Watchdogs . . . IBS-Diagnosefunktion. . . . . . . . . . . s. 2.1 2.2 2.3 2.4 2.4.1 2.4.1.1 2.4.1.2 2.4.1.3 2.4.2 2.4.2.1 2.4.2.2 2.4.2.3 2.4.2.4 2.4.3 Struktur der Treibersoftware auf dem Host (PC) . Notification-Mode . . . . . . . . . . . . . Library unter Windows . . . . . . . . . . . Include-Dateien für „C“ . . . . . . . . . . . Units für Pascal . . . . . . . . . . . . . . Initialisierungs-Datei unter Windows . . . . . . Funktionen für Windows . . . . . . . . . . . Funktionen des Device-Driver-Interfaces . . . . Funktionen zur Verwaltung des Notification-Modes Funktionen zur Kontrolle der Hardware . . . . . Nutzung der Treibersoftware mit C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3 4-3 4-5 4-5 4-6 4-6 4-7 4-8 4-9 4-13 4-14 i InterBus-S Inhaltsverzeichnis Ergänzungen zur Treibersoftware für OS/2 5.1 5.2 5.3 5.4 5.5 5.6 5.6.1 5.6.2 5.6.3 5.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3 5-3 5-5 5-6 5-7 5-8 5-8 5-10 5-13 5-14 m Makros zur Programmierunterstützung . . . . . . . . . . . . . . . . . . 6-3 s. co Makros zur Datenkonvertierung . . . . . . . . . . . . . Makros zur Konvertierung des Datenblocks eines Kommandos Makros zur Konvertierung des Datenblocks einer Meldung . . Makros zur Konvertierung von Eingangsdaten . . . . . . . Makros zur Konvertierung von Ausgabedaten . . . . . . . 6-3 6-5 6-7 6-8 6-10 nt 6.1 6.1.1 6.1.2 6.1.3 6.1.4 Diagnose zur Treibersoftware . . . . . . . . . . . . . . . . . . . . . . 7-3 Meldungen des DDI . . . . . . . . . . . . . . . . . 7-4 Fehlermeldungen des DDI . . . . . . . . . . . . . . . 7-4 Fehlermeldungen zur Initialisierung der Anschaltbaugruppe . . 7-4 Allgemeine Fehlermeldungen. . . . . . . . . . . . . . 7-6 Fehlermeldungen beim Öffnen eines Datenkanals . . . . . 7-7 Fehlermeldungen zur Übertragung von Meldungen/Kommandos7-8 Fehlermeldungen zur Übertragung von Prozessdaten . . . . 7-10 Fehlermeldungen unter DOS . . . . . . . . . . . . . . 7-10 Fehlermeldungen unter Microsoft Windows . . . . . . . . 7-11 Fehlermeldungen unter OS/2 . . . . . . . . . . . . . . 7-12 A on l in ec 7.1 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.2.8 ne 7 Struktur der Treibersoftware auf dem Host (PC) Notification-Mode unter OS/2 . . . . . . . . Library und Include-Dateien für OS/2 . . . . . CONFIG.SYS unter OS/2 . . . . . . . . . Compileroptionen . . . . . . . . . . . . Funktionen für OS/2 . . . . . . . . . . . Funktionen des Device-Driver-Interfaces . . . Funktionen zur Verwaltung des Blocked-Modes Funktionen zur Kontrolle der Hardware . . . . Nutzung der Treibersoftware mit C++ . . . . po 6 . . . . . . . . . . . . . . . . 5-3 om 5 Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3 A.1 A.2 A.3 ii Abbildungsverzeichnis . . . . . . . . . . . . . . . . A-3 Tabellenverzeichnis . . . . . . . . . . . . . . . . . A-4 Stichwortverzeichnnis. . . . . . . . . . . . . . . . . A-5 5086A Kapitel 1 Überblick über die Treibersoftware Dieses Kapitel informiert Sie über die zur Verfügung stehende Treibersoftware für verschiedene Überblick über die Treibersoftware . . . . . . . . . . . . . . . . . . . . 1-3 on l in ec om po ne nt s. co 1 m - Betriebssysteme - Programmiersprachen - Compiler 5086A 1-1 1-2 5086A s. nt ne po om in ec on l co m InterBus-S Überblick über die Treibersoftware 1 Überblick über die Treibersoftware Für die Anschaltbaugruppen steht Ihnen Treibersoftware für verschiedene Betriebssysteme zur Verfügung. Sie können außerdem unter mehreren Compilern für die Programmiersprachen C und Pascal auswählen. Dieses Kapitel zeigt Ihnen die möglichen Kombinationen von Betriebssystemen und Compilern auf dem PC und den Coprozessorboards der IBS PC CB/COP/I-T und IBS PC CB/RTX486/I-T. Tabelle 1-1: Betriebssysteme Version Rechner Microsoft® DOS 5.0, 6.2 PC (Host) m Betriebssystem Technosoft RTXDOS-16® COP386 6.1 COP486 3.1 Host 2.1 Host s. Microsoft Windows® 3.5a co SMA TDOS® Compiler Compiler po Tabelle 1-2: ne nt IBM OS/2® Version 3.0 / 3.1 Microsoft C/C++® 7.0 Microsoft Visual C++® 1.0 IBM C Set/2® 2.0 Borland Turbo Pascal® 6.0 / 7.0 Microsoft Visual Basic® 3.0 on l in ec om Borland C/Turbo C® Eine detaillierte Beschreibung entnehmen Sie bitte den in Tabellen 1-3 und 1-4 angegebenen Kapiteln. 5086A 1-3 InterBus-S Überblick über die Treibersoftware Tabelle 1-3: Kombinationen von Compiler und Betriebssystem auf dem Host Betriebssysteme Microsoft DOS® Microsoft Windows® IBM OS/2® Kapitel 2 Kapitel 2 und 4 — — — Kapitel 2 und 5 Kapitel 3 Kapitel 3 und 4 — Borland C/Turbo C® Compiler Microsoft C/C++® Microsoft Visual C++® IBM C Set/2® Borland Turbo Pascal® Microsoft Visual Basic® Kombinationen von Compiler und Betriebssystem auf dem COP s. Tabelle 1-4: co m in Vorbereitung ne Borland C/Turbo C® po Microsoft C/C++® Borland Turbo Pascal® RTXDOS-16® Kapitel 2 Kapitel 3 om Compiler TDOS® nt Betriebssysteme on l in ec Die Programmierung des Coprozessorboards unterscheidet sich nicht von der Programmierung auf dem Host unter DOS. Ein auf dem Host unter DOS erstelltes Programm kann somit auch auf dem Coprozessorboard ablaufen. 1-4 5086A Kapitel 2 Treibersoftware für C unter DOS Dieses Kapitel informiert Sie über po ne nt s. Struktur der Treibersoftware auf dem Host (PC) Struktur der Treibersoftware auf dem COP . . Libraries und Include-Dateien. . . . . . . . Funktionen für DOS . . . . . . . . . . . Funktionen des Device-Driver-Interfaces . . . Funktionen zur Verwaltung von Datenkanälen . Funktionen des Mailbox-Interfaces. . . . . . Funktionen des Data-Interfaces . . . . . . . Funktionen zur Kontrolle der Hardware . . . . Abfrage der DIP-Schalter . . . . . . . . . Überwachung des SysFail-Registers . . . . . Funktionen zur Ansprache des SRAMs . . . . Funktionen zur Kontrolle der Watchdogs . . . IBS-Diagnosefunktion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 2-3 2-4 2-5 2-6 2-6 2-8 2-10 2-13 2-13 2-14 2-14 2-16 2-18 on l in ec 2.1 2.2 2.3 2.4 2.4.1 2.4.1.1 2.4.1.2 2.4.1.3 2.4.2 2.4.2.1 2.4.2.2 2.4.2.3 2.4.2.4 2.4.3 co Treibersoftware für C unter DOS . . . . . . . . . . . . . . . . . . . . . 2-3 om 2 m - Die Realisierung und die Funktionen des Device-Driver-Interfaces. - Die benötigten Include-Dateien und Libraries. - Device-Driver für DOS. 5086A 2-1 2-2 5086A s. nt ne po om in ec on l co m InterBus-S Treibersoftware für C unter DOS 2 Treibersoftware für C unter DOS 2.1 Struktur der Treibersoftware auf dem Host (PC) Das Device-Driver-Interface linken Sie in Form einer Library zu Ihrem Anwenderprogramm hinzu. Die Device-Driver für DOS sind als TSR-Programme realisiert (ähnlich wie die Treiber von Netzwerkkarten). PC m Anwenderprogramm TSR-Programm TSR-Programm MPM MPM MPM TSR-Programm COP MA ne MA COP MA MPM COP MA 5086A201 po COP nt s. TSR-Programm co Library Realisierung der Treibersoftware unter Microsoft-DOS für C om Bild 2-1: in ec Für jedes Anschaltbaugruppe muß ein Device-Driver, also ein TSR-Programm, installiert werden! Die Installation der Device-Driver ist im Kapitel 4 Inbetriebnahme des Handbuchs IBS PC CB UM beschrieben. on l 2.2 Struktur der Treibersoftware auf dem COP Anwenderprogramm COP Library TSR-Programm MPM IBS Host Masterboard 5086A202 Bild 2-2: 5086A Realisierung der Treibersoftware für C auf dem COP 2-3 InterBus-S Treibersoftware für C unter DOS Die Programmierung des Coprozessorboards (COP) unterscheidet sich nicht von der Programmierung auf dem Host unter DOS. Ab Treibersoftware Version 0.9 ist auch das Linken mit speziellen Libraries für das Coprozessorboard nicht mehr erforderlich, weil zum Betrieb auf dem Host und dem COP die gleichen Libraries verwendet werden. Ein auf dem Host unter DOS erstelltes Programm kann somit auch auf dem Coprozessorboard ablaufen. Nutzen Sie zum Betrieb auf dem COP anstelle von IBSPCCB.EXE das TSRProgamm IBSCOP.EXE als Device-Driver. 2.3 Libraries und Include-Dateien Libraries nt s. co m Um dem Anwender die Arbeit mit dem Treibersoftware zu erleichtern, sind ab Version 0.9 alle benötigten DDI- und Hilfsfunktionen in einer Library zusammengefaßt, die sowohl auf dem Host (PC) als auch dem Coprozessorboard Verwendung findet. Es ist damit möglich, ein Anwenderprogramm wahlweise auf dem Host (PC) oder Coprozessorboard zu betreiben, ohne daß ein erneutes Übersetzen oder Linken notwendig ist. Voraussetzung hierfür ist, daß auf beiden Systemen die entsprechenden Treiber (TSR-Programme) geladen sind. Um auch die Handhabung der Include-Dateien zu vereinfachen, ist es ab Treibersoftware-Version 0.9 nur noch notwendig, die Include-Datei IBS_DOS.H einzubinden. Aus dieser Include-Datei werden alle weiteren benötigten Include-Dateien aufgerufen. Sie können aber auch weiterhin die benötigten IncludeDateien einzeln aufrufen. in ec om Include-Dateien po ne Lediglich die Funktionen zum Lesen und Schreiben des SRAM des Coprozessorboards sind auf dem Host (PC) nicht verfügbar und werden dort mit der Fehlermeldung ERR_INVLD_CMD (008Chex) quittiert. Die Library steht wie zuvor im Large- und Medium-Model (Microsoft C ab Version 7.0 und Borland C++ ab Version 3.0) zur Verfügung. on l Bei Verwendung der Include-Datei IBS_DOS.H ist es außerdem nicht mehr notwendig, von Hand Compiler-Switches im Programm bzw. in der Kommandozeile des Compilers einzutragen. Die notwendige Konstanten-Deklaration (IBS_DOS_DRV) erfolgt dann innerhalb von IBS_DOS.H. Tabelle 2-1: Libraries und Include-Dateien Speichermodell: Library: Include-Datei medium MDDI_TSR.LIB large LDDI_TSR.LIB IBS_DOS.H (ruft STDTYPES.H, COMPILER.H, IBS_CM.H, DDI_USR.H, DDI_ERR.H, DDI_LIB.H, PC_UTIL.H und DDI_MACR.H auf) Die Include-Datei DDI_MACR.H ermöglicht die Nutzung der im Kapitel 4.2.4 beschriebenen Makrofunktionen. Die Makros sind in dieser Datei definiert. Falls Sie IBS_DOS.H nicht verwenden möchten und die benötigten Include-Dateien einzeln im Programm aufrufen, müssen Sie vor dem Einbinden der Include Dateien die Anweisung #define IBS_DOS_DRV einfügen. Dies kann entweder im Programmtext oder als Compileroption erfolgen. 2-4 5086A InterBus-S Funktionen für DOS #define IBS_DOS_DRV #include "stdtypes.h" #include "ddi_usr.h" ... Beispiele: oder cl /C+ /O /DIBS_DOS_DRV ... 2.4 Funktionen für DOS m Übersicht über die DDI-Funktionen für DOS Aufgabe DDI_DevOpenNode Öffnet einen Datenkanal zu einem Node DDI_DevCloseNode Schließt einen Datenkanal zu einem Node 2-7 DDI_MXI_SndMessage Schreibt eine Meldung in das MPM 2-8 DDI_MXI_RcvMessage Liest eine Meldung aus dem MPM 2-9 DDI_DTI_ReadData Liest Daten aus dem MPM 2-10 DDI_DTI_WriteData Schreibt Daten in das MPM 2-11 Seite 2-6 om po ne nt co Funktion s. Tabelle 2-2: Tabelle 2-3: Aufgabe in ec Funktion Übersicht über die Funktionen zur Kontrolle der Hardware Seite Schreibt eine Anzahl von Bytes in das SRAM des COPs 2-14 COP_ReadStaticRAM Liest eine Anzahl von Bytes aus dem SRAM des COPs 2-15 GetDIPSwitch Liest die Stellungen des DIP-Schalters zum Einstellen der Boot-Konfiguration aus 2-13 GetSysFailRegister Liest den Inhalt des SysFail-Registers aus 2-14 EnableWatchDog Schaltet einen Watchdog ein 2-16 TriggerWatchDog Triggert einen Watchdog 2-16 GetWatchDogState Liest den Status eines Watchdogs aus 2-17 ClearWatchDog Setzt den Status eines Watchdogs zurück 2-17 GetIBSDiagnostic Wertet den Betriebszustand des IBS-Masterboards aus 2-18 on l COP_WriteStaticRAM 5086A 2-5 InterBus-S Treibersoftware für C unter DOS 2.4.1 Funktionen des Device-Driver-Interfaces 2.4.1.1 Funktionen zur Verwaltung von Datenkanälen DDI_DevOpenNode Aufgabe: Mit dieser Funktion wird ein Datenkanal zu einem Node geöffnet. Synopsis: INT16 DDI_DevOpenNode(CHAR *devName,INT16 perm,INT16 *nodeHd); Parameter: *devName m Der Device-Name ist der Name des anzusprechenden Gerätes. Er legt die Anschaltbaugruppe (Boardnumber) und den dortigen MPM-Teilnehmer fest (siehe Kapitel 5.2.3.1 Verwaltung von Datenkanälen im Handbuch IBS PC CB UM). Die Access-Permission gibt an, mit welchen Zugriffsrechten auf den Datenkanal zugegriffen werden darf. Es kann zwischen lesend, schreibend und lesend/ schreibend unterschieden werden. Der Node-Handle ist ein vom DDI vergebener Wert, über den in allen weiteren Funktionen eine Zuordnung zum geöffneten Node gefunden wird. s. co perm Node-Handle in ec Ursache om negative Quittung: DDI-Error-Code po positive Quittung: ne nt *nodeHd on l Aufrufsyntax: INT16 DDI_DevOpenNode( CHAR *devName, INT16 perm, INT16 *nodeHd); Konstanten für die Zugriffsrechte: DDI_READ DDI_WRITE DDI_RW Spezifiziert den beim Öffnen des Datenkanals zu einem Node gefundenen Fehler näher (siehe Kapitel 7 Fehlermeldungen des DDI). - unbekannter Device-Name - Node nicht vorhanden /* IN: device name */ /* IN: access permission */ /* OUT: address of node-handle */ nur lesender Zugriff nur schreibender Zugriff lesender und schreibender Zugriff In der aktuellen Version (V 0.9) der Treibersoftware darf zwischen zwei MPMTeilnehmern (z.B. Host und COP) der gleiche Datenkanal (gleicher DeviceName) nur einmal geöffnet sein. Wenn zwischen zwei MPM-Teilnehmern der gleiche Datenkanal gleichzeitig mehrmals geöffnet ist, überschreiben die Daten eines Datenkanals die Daten eines anderen, da sie denselben MPM-Speicherbereich verwenden. Es erfolgt in diesem Fall keine Fehlermeldung. 2-6 5086A InterBus-S Funktionen zur Verwaltung von Datenkanälen Beispiele: Falsch: DDI_DevOpenNode("IBB1N1_D“, ... , nodeHandle1) DDI_DevOpenNode("IBB1N1_D“, ... , nodeHandle2) Richtig: DDI_DevOpenNode("IBB1N1_D“, ... , nodeHandle1) DDI_DevOpenNode("IBB1N2_D“, ... , nodeHandle2) (siehe Kapitel 5.2.3.1 Verwaltung von Datenkanälen im Handbuch IBS PC CB UM) DDI_DevCloseNode Diese Funktion schließt einen zuvor mit DDI_DevOpenNode() geöffneten Datenkanal zu einem Node. Nach dem erfolgreichem Aufruf dieser Funktion ist das Gerät nicht mehr mit dem aufrufenden Programm "verbunden", und der NodeHandle ist nicht mehr gültig. Synopsis: INT16 DDI_DevCloseNode(INT16 nodeHd); Parameter: nodeHd positive Quittung: ERR_OK (0000hex) Bedeutung s. co m Aufgabe: ne po Spezifiziert den beim Aufruf der Funktion aufgetretenen Fehler näher (siehe Kapitel 7 Fehlermeldungen des DDI). - unbekannter Device-Name - ungültiger Node-Handle - Node nicht vorhanden on l in ec Ursache Die Funktion wurde erfolgreich ausgeführt. om negative Quittung: DDI-Error-Code nt Der Node-Handle spezifiziert den zu schließenden Node. 5086A 2-7 InterBus-S Treibersoftware für C unter DOS 2.4.1.2 Funktionen des Mailbox-Interfaces DDI_MXI_SndMessage Aufgabe: Diese Funktion stellt eine Meldung oder ein Kommando in eine Mailbox. Synopsis: INT16 DDI_MXI_SndMessage (INT16 nodeHd,T_DDI_MXI_ACCESS *ddi_mxi_acc); Parameter: nodeHd Der Node-Handle ist die logische Nummer (Handle) eines zuvor an der DDI-Schnittstelle geöffneten Kanals. Zeiger auf eine Datenstruktur vom Typ T_DDI_MXI_ACCESS (siehe unten). *ddi_mxi_acc msgType s. msgLength om ERR_OK (0000hex) Bedeutung po DDIUserID ne nt *msgBlk positive Quittung: in ec negative Quittung: DDI-Error-Code on l Ursache Die Firmware 3.x unterstützt das Strukturelement Message-Type noch nicht. Setzen Sie es auf 0. Das Strukturelement Message-Length enthält die Gesamtlänge der zu sendenden Meldung in Bytes. Die maximal zulässige Gesamtlänge (siehe unten) ist 1024. Das Strukturelement *msgBlk ist ein Zeiger auf einen Message-Block, der die zu sendende Meldung in Mailbox-Syntax enthält. Das Handbuch IBS PC CB UM beschreibt den Aufbau der Mailbox-Syntax. Das Strukturelement DDIUserID wird von der Firmware 3.x noch nicht unterstützt. Setzen Sie DDIUserID auf 0. co Strukturelemente: m T_DDI_MXI_ACCESS: Datenstruktur mit den zum Senden eines Kommandos notwendigen Elementen. Die Funktion wurde erfolgreich ausgeführt. Gibt an, warum die Funktion nicht ausgeführt werden konnte (siehe Kapitel 7 Fehlermeldungen des DDI) ungültiger Node-Handle; keine passende Mailbox gefunden; Die Meldung überschreitet die maximal nutzbare Mailbox-Länge (1020 Bytes = 1024 Bytes minus 2 Bytes Kommando-Code minus 2 Bytes Parameter-Zähler). Aufrufsyntax: INT16 DDI_MXI_SndMessage( INT16 nodeHd, /* IN : node-handle */ T_DDI_MXI_ACCESS * ddi_mxi_acc);/* IN : pointer to mailbox-accessstructure */ Aufbau der Struktur T_DDI_MXI_ACCESS: typedef struct { INT16 msgType USIGN16 msgLength; USIGN16 DDIUserID; USIGN8 *msgBlk; } T_DDI_MXI_ACCESS; 2-8 /* /* /* /* Message-Type Message-Length DDI_User_ID Pointer to array for the Message */ */ */ */ 5086A InterBus-S Funktionen des Mailbox-Interfaces DDI_MXI_RcvMessage Diese Funktion holt eine Meldung aus einer Mailbox. Sie wird z.B. verwendet, um die auf ein IBS-Kommando erfolgende Rückmeldung abzuholen. Es wird nicht auf die Rückmeldung gewartet! Ist keine Rückmeldung vorhanden, erfolgt eine entsprechende Meldung im Parameter DDI-Error-Code. Voraussetzung: In die Komponente msgLength der Struktur T_DDI_MXI_ACCESS muß die Länge des zur Verfügung gestellten Empfangspuffers eingetragen werden. Der Treiber prüft die Größe des Empfangspuffers vor dem Einlesen und generiert die Fehlermeldung ERR_MSG_TO_Long (009Ahex), falls die empfangene Nachricht größer ist als der zur Verfügung stehende Speicherplatz. Synopsis: USIGN16 DDI_MXI_RcvMessage (USIGN16 nodeHd,T_DDI_MXI_ACCESS *ddi_ mxi_acc); Parameter: nodeHd m Aufgabe: co Der Node-Handle ist die logische Nummer eines zuvor an der DDI-Schnittstelle geöffneten Kanals. Zeiger auf eine Datenstruktur vom Typ T_DDI_MXI_ACCESS (siehe unten). s. *ddi_mxi_acc in ec om msgLength on l *msgBlk DDIUserID positive Quittung: ERR_OK (0000hex) Bedeutung negative Quittung: DDI-Error-Code Ursache 5086A Die Firmware 3.x unterstützt das Strukturelement Message-Type noch nicht. Setzen Sie es auf 0. Geben Sie vor dem Aufruf der Funktion DDI_MXI_RcvMessage mit dem Strukturelement Message-Length die Größe des zur Verfügung stehen den Eingangspuffers in Bytes an. Nach dem erfolgreichen Empfang einer Meldung enthält das Strukturelement Message-Length die tatsächliche Länge der Meldung in Bytes. Das Strukturelement *msgBlk ist ein Zeiger auf einen Message-Block, der die empfangene Meldung in Mailbox-Syntax enthält. Das Handbuch IBS PC CB UM beschreibt den Aufbau der Mailbox-Syntax. Das Strukturelement DDIUserID wird von der Firmware 3.x noch nicht unterstützt. Setzen Sie DDIUserID auf 0. ne msgType po Strukturelemente: nt T_DDI_MXI_ACCESS: Datenstruktur mit den zum Empfangen einer Meldung notwendigen Elementen. Die Funktion wurde erfolgreich ausgeführt. Gibt an, warum die Funktion nicht ausgeführt werden konnte (siehe Kapitel 7 Fehlermeldungen des DDI). - ungültiger Node-Handle; - zu kleiner Empfangspuffer; - keine Meldung vorhanden 2-9 InterBus-S Treibersoftware für C unter DOS Aufrufsyntax: USIGN16 DDI_MXI_RcvMessage( USIGN16 nodeHd, /* IN : node-handle */ T_DDI_MXI_ACCESS *ddi_ mxi_acc);/* OUT: pointer to mailboxaccess-structure*/ /* /* /* /* Message-Type */ Message-Length */ DDI_User_ID */ Pointer to array for the Message*/ m Aufbau der Struktur T_DDI_MXI_ACCESS: typedef struct { INT16 msgType; USIGN16 msgLength; USIGN16 DDIUserID; USIGN8 *msgBlk; } T_DDI_MXI_ACCESS; co 2.4.1.3 Funktionen des Data-Interfaces DDI_DTI_ReadData Diese Funktion liest Daten über das Data-Interface aus dem MPM. Sie stellt diese Daten im Motorola-Format in den angegebenen Buffer. Bemerkung: Verwenden Sie vor der weiteren Verarbeitung der Daten die Makros zur Konvertierung von Eingangsdaten. Diese Makros konvertieren die Eingangsdaten vom Motorola- in das Intel-Format (siehe Kapitel 6). Synopsis: INT16 DDI_DTI_ReadData (INT16 node_Hd,T_DDI_DTI_ACCESS *ddi_dti_acc); Parameter: nodeHd *ddi_dti_acc in ec om po ne nt s. Aufgabe: Der Node-Handle spezifiziert den Node. Zeiger auf eine Datenstruktur vom Typ T_DDI_DTI_ACCESS (siehe unten). T_DDI_DTI_ACCESS: Datenstruktur mit den zum Lesen von Prozeßdaten notwendigen Elementen. length on l Strukturelemente: address dataCons *data Das Strukturelement Length enthält die Anzahl der zu lesenden Daten in Bytes. Die maximale Anzahl ist 1024 Bytes. Das Strukturelement Address gibt die DTI-Adresse eines Prozeßdatenwortes im MPM in Byte an (siehe Kapitel Aufteilung des MPMs im Handbuch IBS PC CB UM). Das Strukturelement Data-Consistency gibt an, welche Datenkonsistenz beim Zugriff verwendet werden soll. Dieses Strukturelement ist ein Zeiger auf den Buffer, in dem die gelesenen Daten abgelegt werden sollen. Konstanten für die möglichen Datenkonsistenzbereiche: DTI_DATA_BYTE : Byte-Datenkonsistenz (1 Byte) DTI_DATA_WORD : Word-Datenkonsistenz (2 Byte) DTI_DATA_LWORD : Longword-Datenkonsistenz (4 Byte) DTI_DATA_48BIT : 48 Bit-Datenkonsistenz (6 Byte) Die Datenkonsistenzbereiche DTI_DATA_LWORD und DTI_DATA_48BIT sind für Zugriffe auf das IBS-Masterboard erst ab Verwendung von Firmware 3.72 möglich. 2-10 5086A InterBus-S Funktionen des Data-Interfaces positive Quittung: ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. negative Quittung: DDI-Error-Code Spezifiziert den beim Lesen der Prozessdaten aufgetretenen Fehler näher (siehe Kapitel 7 Fehlermeldungen des DDI). - ungültiger Node-Handle - ungültige Parameter - Grenzen des Datenbereichs werden überschritten Ursache co s. number of bytes to read/write */ address to read/write process data*/ data consistency of the access */ pointer to data to read/write */ nt /* /* /* /* po DDI_DTI_WriteData */ ne Aufbau der Struktur T_DDI_DTI_ACCESS: typedef struct { USIGN16 length; USIGN16 address; INT16 dataCons; USIGN8 *data; } T_DDI_DTI_ACCESS; */ m Aufrufsyntax: INT16 DDI_DTI_ReadData( INT16 node_Hd, /* IN : node-handle T_DDI_DTI_ACCESS *ddi_dti_acc); /* IN : dti access structure Diese Funktion schreibt Daten über das Data-Interface in das MPM. Die Funktion benötigt hierzu Daten im Motorola-Format. Bemerkung: Verwenden Sie vor dem Schreiben von Daten in das MPM die Makros zur Konvertierung von Ausgabedaten. Diese Makros konvertieren die Ausgabedaten vom Intel- in das Motorola-Format (siehe Kapitel 6). in ec om Aufgabe: INT16 DDI_DTI_WriteData (INT16 nodeHd,T_DDI_DTI_ACCESS *ddi_dti_acc); on l Synopsis: Parameter: nodeHd *ddi_dti_acc Der Node-Handle spezifiziert den Node. Zeiger auf eine Datenstruktur vom Typ T_DDI_DTI_ACCESS (siehe unten). T_DDI_DTI_ACCESS: Datenstruktur mit den zum Schreiben von Prozeßdaten notwendigen Elementen. Strukturelemente: length address dataCons *data 5086A Das Strukturelement Length enthält die Anzahl der zu schreibenden Daten in Bytes. Die maximale Anzahl ist 1024 Bytes (1 KByte). Das Strukturelement Address gibt die DTI-Adresse eines Prozeßdatenwortes im MPM in Byte an (siehe Kapitel Aufteilung des MPMs im Handbuch IBS PC CB UM). Das Strukturelement Data-Consistency gibt an, welche Datenkonsistenz beim Zugriff verwendet werden soll. Dieses Strukturelement ist ein Zeiger auf den Buffer, aus dem die zu schreibenden Daten entnommen werden sollen. 2-11 InterBus-S Treibersoftware für C unter DOS Konstanten für die möglichen Datenkonsistenzbereiche: DTI_DATA_BYTE : Byte-Datenkonsistenz (1 Byte) DTI_DATA_WORD : Word-Datenkonsistenz (2 Byte) DTI_DATA_LWORD : Longword-Datenkonsistenz (4 Byte) DTI_DATA_48BIT : 48 Bit-Datenkonsistenz (6 Byte) Die Datenkonsistenzbereiche DTI_DATA_LWORD und DTI_DATA_48BIT sind für Zugriffe auf das IBS-Masterboard erst ab Verwendung von Firmware 3.72 möglich. positive Quittung: ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. Spezifiziert einen beim Schreiben von Prozeßdaten aufgetretenen Fehler näher (siehe Kapitel 7 Fehlermeldungen des DDI). - ungültiger Node-Handle - ungültige Parameter - Grenzen des Datenbereichs werden überschritten m negative Quittung: DDI-Error-Code s. co Ursache po ne nt Aufrufsyntax: INT16 DDI_DTI_WriteData( INT16 nodeHd, /* IN : node-handle */ T_DDI_DTI_ACCESS *ddi_dti_acc); /* IN : dti access structure*/ /* /* /* /* number of bytes to read/write */ address to read/write process data*/ data consistency of the access */ pointer to data to read/write */ on l in ec om Aufbau der Struktur T_DDI_DTI_ACCESS: typedef struct { USIGN16 length; USIGN16 address; INT16 dataCons; USIGN8 *data; } T_DDI_DTI_ACCESS; 2-12 5086A InterBus-S Funktionen zur Kontrolle der Hardware 2.4.2 Funktionen zur Kontrolle der Hardware 2.4.2.1 Abfrage der DIP-Schalter GetDIPSwitch Die Funktion GetDIPSwitch schreibt in die durch dataPtr referenzierte Variable die Schalterstellungen des DIP-Schalters zum Einstellen der Boot-Konfiguration. Der Anwender kann somit zur Programmlaufzeit die Boot-Konfiguration ermitteln, um z.B. festzustellen, welches Board (PC oder COP) den InterBus-S steuert. Die acht Schalter werden auf die Bits 0 bis 7 des Worts abgebildet, d.h. der DIP-Schalter 1 ist dem Bit 0, der DIP-Schalter 2 dem Bit 1, usw. des Wortes zugeordnet. Befindet sich ein Schalter in der Schaltstellung ON, ist das jeweilige Bit gleich Null. Die nicht verwendeten Bits 8 bis 15 des Worts sind in jedem Fall auf Eins gesetzt. Synopsis: INT16 FAR GetDIPSwitch(USIGN16 boardNumber, USIGN16 FAR *dataPtr) Parameter: boardNumber *dataPtr positive Quittung: ERR_OK (0000hex) Bedeutung co m Aufgabe: ne nt s. Boardnummer (PC: 1 bis 4, COP: 1) Zeiger auf die Variable, in welche die ermittelten Schalterstellungen eingetragen werden. po Die Funktion wurde erfolgreich ausgeführt. on l in ec om negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. ERR_TSR_NOT_LOADED (008Bhex) Bedeutung Das angegebene Board ist nicht vorhanden, bzw. der Treiber hierfür ist nicht geladen. 5086A 2-13 InterBus-S Treibersoftware für C unter DOS 2.4.2.2 Überwachung des SysFail-Registers GetSysFailRegister Die Funktion GetSysFailRegister schreibt in die durch sysFailRegPtr referenzierte Variable den Inhalt des SysFail-Registers. Die Bits 0, 4, 8, und 12 des Registers zeigen an, ob das SysFail-Signal des entsprechenden Boards (PC, IBSMaster und COP) aktiviert ist oder nicht. Tritt bei einem MPM-Teilnehmer eine Funktionsstörung auf (z.B. Watchdog hat ausgelöst), wird das zugehörige Bit im SysFail-Register aktiviert, d.h auf Eins gesetzt. Dieses Bit bleibt dann bis zur Beendigung der Störung gesetzt. Die einzelnen Bits des Register sind folgendermaßen den MPM-Teilnehmern zugeordnet: Bit 0: Host (PC) Bit 4: IBS-Masterboard (MA) Bit 8: Coprozessorboard (COP) Bit 12: wird nicht verwendet, da nur drei MPM-Teilnehmer vorhanden sind. Synopsis: INT16 FAR GetSysFailRegister (USIGN16 boardNumber,USIGN16 FAR *sysFailRegPtr) Parameter: boardNumber *sysFailRegPtr positive Quittung: ERR_OK (0000hex) Bedeutung s. co m Aufgabe: ne nt Boardnummer (PC: 1 bis 4, COP: 1) Zeiger auf eine Variable, in welche der Inhalt des SysFail-Registers eingetragen wird. po Die Funktion wurde erfolgreich ausgeführt. in ec om negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. ERR_TSR_NOT_LOADED (008Bhex) Bedeutung Das angegebene Board ist nicht vorhanden, bzw. der Treiber hierfür ist nicht geladen. on l 2.4.2.3 Funktionen zur Ansprache des SRAMs (nur für IBS PC CB/COP/I-T und IBS PC CB/486RTX/I-T) COP_WriteStaticRAM Aufgabe: Schreibt die angegebene Anzahl von Bytes ab der vorgegebenen Adresse in das statische RAM (SRAM) des COPs. Die niedrigste mögliche Adresse ist 0. Synopsis: INT16 FAR COP_WriteStaticRAM (USIGN32 address, USIGN16 length, USIGN8 FAR *data) Parameter: address length *data positive Quittung: ERR_OK (0000hex) Bedeutung 2-14 Startadresse im statischen RAM Datensatzlänge (Anzahl der zu schreibenden Bytes) Zeiger auf den Buffer, aus dem die Funktion die zu schreibenden Daten entnehmen soll. Die Funktion wurde erfolgreich ausgeführt. 5086A InterBus-S Funktionen zur Ansprache des SRAMs negative Quittung: ERR_AREA_EXCDED (0096hex) Bedeutung Der zu lesenden Datensatz ist zu groß. Die Funktion kann maximal 64 KByte in einem Aufruf lesen. Abhilfe Rufen Sie die Funktion zweimal auf, um größere Datenmengen blockweise zu übertragen. Erhöhen Sie beim zweiten Aufruf die Startadresse um 64 KByte. Bedeutung Die obere Bereichsgrenze ist überschritten. Das statische RAM ist 128 KByte groß. Abhilfe Beachten Sie, daß die Summe aus Startadresse und Datensatzlänge die Bereichsgrenze nicht überschreitet. COP_ReadStaticRAM Liest die angegebene Anzahl von Bytes ab der vorgegebenen Adresse aus dem statischen RAM des COP. Synopsis: INT16 FAR COP_ReadStaticRAM(USIGN32 address, USIGN16 length, USIGN8 FAR *data) Parameter: address length *data positive Quittung: ERR_OK (0000hex) Bedeutung co m Aufgabe: ne nt s. Startadresse im statischen RAM Datensatzlänge (Anzahl der zu lesenden Bytes) Zeiger auf den Buffer, in den die Funktion die zu lesenden Daten ablegen soll. po Die Funktion wurde erfolgreich ausgeführt. on l in ec om negative Quittung: ERR_AREA_EXCDED (0096hex) Bedeutung Der zu schreibende Datensatz ist zu groß. Die Funktion kann maximal 64 KByte in einem Aufruf lesen. Abhilfe Rufen Sie die Funktion zweimal auf, um größere Datenmengen blockweise zu übertragen. Erhöhen Sie beim zweiten Aufruf die Startadresse um 64 KByte. Bedeutung Die obere Bereichsgrenze ist überschritten. Das statische RAM ist 128 KByte groß. Abhilfe Beachten Sie, daß die Summe aus Startadresse und Datensatzlänge die Bereichsgrenze nicht überschreitet. 5086A 2-15 InterBus-S Treibersoftware für C unter DOS 2.4.2.4 Funktionen zur Kontrolle der Watchdogs EnableWatchDog() Aufgabe: Die Funktion schaltet den Watchdog ein. Synopsis: INT16 FAR EnableWatchDog(USIGN16 boardNumber) Parameter: boardNumber Boardnummer (PC: 1 bis 4, COP: 1) positive Quittung: ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. Nach dem Aufruf der Funktion muß der Watchdog in regelmäßigen Abständen getriggert werden. PC: Triggerabstand kleiner 146 ms, sonst wird im SysFail-Register ein Bit gesetzt. COP: Triggerabstand kleiner 125 ms, sonst wird im SysFail-Register ein Bit gesetzt, das den Reset des COPs auslöst. po TriggerWatchDog() ne nt s. Bemerkung: co m negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. Abhilfe Geben Sie eine gültige Boardnummer an. Die Funktion triggert den Watchdog. Synopsis: INT16 FAR TriggerWatchDog(USIGN16 boardNumber) Parameter: boardNumber in ec positive Quittung: om Aufgabe: ERR_OK (0000hex) Bedeutung Boardnummer (PC: 1 bis 4, COP: 1) Die Funktion wurde erfolgreich ausgeführt. on l negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. Abhilfe Geben Sie eine gültige Boardnummer an. Bemerkung: 2-16 Dieser Aufruf muß in regelmäßigen Abständen wiederholt werden, damit der Watchdog keinen Reset auslöst. PC: Triggerabstand kleiner 146 ms, sonst wird im SysFail-Register ein Bit gesetzt. COP: Triggerabstand kleiner 125 ms, sonst wird im SysFail-Register ein Bit gesetzt, das den Reset des COPs auslöst. 5086A InterBus-S Funktionen zur Kontrolle der Watchdogs GetWatchDogState() Aufgabe: Mit dieser Funktion können Sie aus ihrem Anwenderprogramm heraus abfragen, ob der entsprechende Watchdog einen Reset ausgelöst hat. Falls das Anwenderprogramm auf dem Host läuft, fragt die Funktion automatisch nach dem Watchdog des Hosts. Falls das Anwenderprogramm auf dem COP läuft, fragt die Funktion automatisch nach dem Watchdog des COPs. Synopsis: INT16 FAR GetWatchDogState(USIGN16 boardNumber) Parameter: boardNumber positive Quittung: - Boardnummer (PC: 1 bis 4, COP: 1) m negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Es wurde eine ungültige Boardnummer angegeben. Abhilfe: Geben Sie eine gültige Boardnummer an. Rückgabewert: Watchdogstatus des Coprozessorboards: 1 Der Watchdog hat den letzten Warmstart (Software-Reset) des COPs ausgelöst. 0 Der Watchdog hat den letzten Warmstart (Software-Reset) des COPs nicht ausgelöst. Watchdogstatus des Hosts: 1 Der Watchdog des Hosts hat einen Reset ausgelöst. 0 Der Watchdog des Hosts hat keinen Reset ausgelöst. om po ne nt s. co Bedeutung: in ec Die Rückgabewerte sind nach einem Hardware-Reset von Anschaltbaugruppe oder Host nicht mehr verfügbar. ClearWatchDog() Synopsis: Die Funktion setzt den Watchdog-Status zurück. on l Aufgabe: INT16 FAR ClearWatchDog (USIGN16 boardNumber) Parameter: boardNumber Boardnummer (PC: 1 bis 4, COP: 1) positive Quittung: ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. Abhilfe Geben Sie eine gültige Boardnummer an. 5086A 2-17 InterBus-S Treibersoftware für C unter DOS 2.4.3 IBS-Diagnosefunktion GetIBSDiagnostic(); Aufgabe: Mit der Funktion GetIBSDiagnostic() können Sie den Betriebszustand des IBSMasterboards und somit den Betriebszustand des IBS-Systems auswerten. Synopsis: INT16 GetIBSDiagnostic(USIGN16 boardNumber,T_IBS_DIAG FAR *diagInfo); Parameter: boardNumber *diagInfo T_IBS_DIAG Struktur mit Diagnosedetails Strukturelemente: state Boardnummer (PC: 1 bis 4, COP: 1) Zeiger auf Struktur mit Fehlerdetails po ne nt s. co m Die Bits des Strukturelements state beschreiben den Zustand des Busses. Durch Maskieren (UND-Verknüpfung) des Strukturelements state mit folgenden Konstanten können Sie den Zustand des IBS-Systems auswerten: DIAG_IBS_READY IBS ist bereit DIAG_IBS_RUN IBS ist gestartet und läuft DIAG_IBS_SYS_FAIL Im SysFail-Register wurde (z.B. von einem Watchdog) ein Bit gesetzt DIAG_IBS_BSA ein Bussegment ist abgeschaltet DIAG_IBS_ERROR IBS-Masterboard hat Fehler gemeldet Die Bits des Strukturelements errType beschreiben aufgetretene Fehler genauer. Durch Maskieren (UND-Verknüpfung) des Strukturelements errType mit folgenden Konstanten können Sie die Fehlerart auswerten: DIAG_CNTRL_ERR Controller-Fehler (Anschaltbaugruppe) DIAG_RMT_BUS_ERR Fernbusfehler (Remotebus Error) (z.B. Fernbuskabel defekt) DIAG_LCL_BUS_ERR Peripheriebusfehler (Local Bus Error) (z.B. Peripheriebuskabel defekt) DIAG_MDL_ERR IBS-Teilnehmerfehler (Module Error) z.B. unterbrochene Peripherie-Versorgungsspannung, Ausgang überlastet) on l in ec om errType Werten Sie den Inhalt des Strukturelements diagPara in Abhängigkeit seines Wertes und des Strukturelements errType verschieden aus: - Wenn das Strukturelement errType einen Fernbus-, Peripheriebus- oder IBS-Teilnehmerfehler anzeigt und der Wert des Strukturelements diagPara im Bereich 0 bis 255 liegt, dann gibt diagPara die Nummer des fehlerbehafteten Bussegments an. Geben Sie das Bussegment dezimal aus. - Wenn das Strukturelement errType einen Fernbus-, Peripheriebus- oder IBS-Teilnehmerfehler anzeigt und der Wert des Strukturelements diagPara über 255 liegt, dann gibt diagPara eine Fehlernummer (E01, E02, E04, E05 oder E06) an. Siehe Beschreibung der Meldung Bus_Error_Information_Indication (80C4hex) im Handbuch zur Anschaltbaugruppe (IBS PC CB UM). - Wenn das Strukturelement errType einen Controller-Fehler anzeigt, dann gibt das Strukturelement diagPara eine Controller-Fehlernummer an (siehe Liste der Controller-Fehlernummern). Geben Sie die Controller-Fehlernummer hexadezimal aus. diagPara 2-18 5086A InterBus-S IBS-Diagnosefunktion positive Quittung: ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. negative Quittung: ERR_INVLD_BOARD_NUM (0080hex) Bedeutung Ungültige Boardnummer negative Quittung: ERR_NODE_NOT_READY (0087hex) Bedeutung IBS-Masterboard nicht ansprechbar (z.B. bootet gerade) Abhilfe Warten Sie einen Moment und versuchen Sie es erneut. m negative Quittung: MPM NOT AVAILABLE (0099hex) Bedeutung Das MPM ist nicht ansprechbar. Abhilfe Installieren Sie den Treiber neu. s. nt Aufrufsyntax: INT16 GetIBSDiagnostic( USIGN16 BoardNumber, co Werten Sie die Diagnoseinformationen nur aus, wenn die Funktion erfolgreich ausgeführt wurde (positive Quittung ERR_OK (0000hex)). Bei Rückgabe einer negativen Quittung sind keine gültigen Diagnoseinformationen vorhanden! */ */ po ne /*Boardnummer der Anschaltbaugruppe T_IBS_DIAG FAR *diagInfo); /*Zeiger auf Struktur mit Fehlerdetails Programmausschnitt zum Auswerten des Parameters state durch Maskieren (UND-Verknüpfung) mit vorgegebenen Konstanten: on l Beispiel: in ec om Aufbau der Struktur T_IBS_DIAG FAR: typedef struct { USIGN16 state; /* Zustand des Busses: Ready, Run usw. */ USIGN16 errType; /* Fehlerart: Fernbus-, PeripheriebusTeilnehmer- oder Controllerfehler */ USIGN16 diagPara;/* ergänzende Informationen, siehe Parameterbeschreibung auf der Vorseite */ } T_IBS_DIAG; void Diagnose (void) { if (GetIBSDiagnostic(boardNumber, &Errinfo) == ERR_OK); if ((Errinfo.state & DIAG_IBS_READY) == DIAG_IBS_READY) { printf(“IBS Ready“) } if ((Errinfo.state & DIAG_IBS_RUN) == DIAG_IBS_RUN) { printf(“IBS Run“) } else { printf(“IBS Stop!“) } } 5086A 2-19 on l in ec om po ne nt s. co m InterBus-S Treibersoftware für C unter DOS 2-20 5086A Kapitel 3 Treibersoftware für Pascal unter DOS Dieses Kapitel informiert Sie über po ne nt s. Struktur der Treibersoftware auf dem Host (PC) Struktur der Treibersoftware auf dem COP . . Units . . . . . . . . . . . . . . . . . Funktionen für DOS . . . . . . . . . . . Funktionen des Device-Driver-Interfaces . . . Funktionen zur Verwaltung von Datenkanälen . Funktionen des Mailbox-Interfaces. . . . . . Funktionen des Data-Interfaces . . . . . . . Funktionen zur Kontrolle der Hardware . . . . Abfrage der DIP-Schalter . . . . . . . . . Überwachung des SysFail-Registers . . . . . Funktionen zur Ansprache des SRAMs . . . . Funktionen zur Kontrolle der Watchdogs . . . IBS-Diagnosefunktion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 3-3 3-4 3-5 3-6 3-6 3-8 3-10 3-13 3-13 3-14 3-14 3-16 3-18 on l in ec 3.1 3.2 3.3 3.4 3.4.1 3.4.1.1 3.4.1.2 3.4.1.3 3.4.2 3.4.2.1 3.4.2.2 3.4.2.3 3.4.2.4 3.4.3 co Treibersoftware für Pascal unter DOS. . . . . . . . . . . . . . . . . . . 3-3 om 3 m - Die Realisierung und die Funktionen des Device-Driver-Interfaces - Die benötigten Units - Device-Driver für DOS 5086A 3-1 3-2 5086A s. nt ne po om in ec on l co m InterBus-S Treibersoftware für Pascal unter DOS 3 Treibersoftware für Pascal unter DOS 3.1 Struktur der Treibersoftware auf dem Host (PC) Das Device-Driver-Interface linken Sie in Form einer Unit zu Ihrem Anwenderprogramm hinzu. Die Device-Driver für DOS sind als TSR-Programme realisiert (ähnlich wie die Treiber von Netzwerkkarten). PC m Anwenderprogramm TSR-Programm TSR-Programm MPM MPM MPM TSR-Programm MA COP MA COP MA 5086A301 Realisierung der Treibersoftware unter Microsoft-DOS für Pascal om Bild 3-1: COP ne MA MPM po COP nt s. TSR-Programm co Unit in ec Für jedes Anschaltbaugruppe muß ein Device-Driver, also ein TSR-Programm, installiert werden! Die Installation der Device-Driver ist im Kapitel 4 Inbetriebnahme des Handbuchs IBS PC CB UM beschrieben. on l 3.2 Struktur der Treibersoftware auf dem COP Anwenderprogramm COP Unit TSR-Programm MPM IBS Host Masterboard 5086A302 Bild 3-2: 5086A Realisierung der Treibersoftware für Pascal auf dem COP 3-3 InterBus-S Treibersoftware für Pascal unter DOS Die Programmierung des Coprozessorboards (COP) unterscheidet sich nicht von der Programmierung auf dem Host unter DOS. Ab Treibersoftware Version 0.9 ist auch das Linken mit speziellen Units für das Coprozessorboard nicht mehr erforderlich, weil zum Betrieb auf dem Host und dem COP die gleichen Units verwendet werden. Ein auf dem Host unter DOS erstelltes Programm kann somit auch auf dem Coprozessorboard ablaufen. Nutzen Sie zum Betrieb auf dem COP anstelle von IBSPCCB.EXE das TSRProgamm IBSCOP.EXE als Device-Driver. 3.3 Units nt s. co m Um dem Anwender die Arbeit mit dem Treibersoftware zu erleichtern, sind ab Version 0.9 alle benötigten DDI- und Hilfsfunktionen in der Unit DDI_DRV.PAS zusammengefaßt, die sowohl auf dem Host (PC) als auch dem Coprozessorboard Verwendung findet. Es ist damit möglich, ein Anwenderprogramm wahlweise auf dem Host (PC) oder Coprozessorboard zu betreiben, ohne daß ein erneutes Übersetzen oder Linken notwendig ist. Voraussetzung hierfür ist, daß auf beiden Systemen die entsprechenden Treiber (TSR-Programme) geladen sind. po ne Lediglich die Funktionen zum Lesen und Schreiben des SRAM des Coprozessorboards sind auf dem Host (PC) nicht verfügbar und werden dort mit der Fehlermeldung ERR_INVLD_CMD (008Chex) quittiert. on l in ec om In der Unit DDI_VAR.PAS sind die Konstanten und globalen Variablen definiert. Diese Unit ermöglicht auch die Nutzung der im Kapitel 7 beschriebenen Makros. Sie sind in dieser Datei für Pascal als Funktionen deklariert. 3-4 5086A InterBus-S Funktionen für DOS 3.4 Funktionen für DOS Tabelle 3-1: Übersicht über die DDI-Funktionen für DOS Aufgabe Seite DDI_DevOpenNode Öffnet einen Datenkanal zu einem Node 3-6 DDI_DevCloseNode Schließt einen Datenkanal zu einem Node 3-7 DDI_MXI_SndMessage Schreibt eine Meldung in das MPM 3-8 DDI_MXI_RcvMessage Liest eine Meldung aus dem MPM 3-9 DDI_DTI_ReadData Liest Daten aus dem MPM 3-10 DDI_DTI_WriteData Schreibt Daten in das MPM 3-11 co Übersicht über die Funktionen zur Kontrolle der Hardware s. Tabelle 3-2: m Funktion Aufgabe COP_WriteStaticRAM Schreibt eine Anzahl von Bytes in das SRAM des COPs COP_ReadStaticRAM Liest eine Anzahl von Bytes aus dem SRAM des COPs 3-15 GetDIPSwitch Liest die Stellungen des DIP-Schalters zum Einstellen der Boot-Konfiguration aus 3-13 GetSysFailRegister Liest den Inhalt des SysFail-Registers aus 3-14 EnableWatchDog Schaltet einen Watchdog ein 3-16 TriggerWatchDog Triggert einen Watchdog 3-16 GetWatchDogState Liest den Status eines Watchdogs aus 3-17 ClearWatchDog Setzt den Status eines Watchdogs zurück 3-17 Wertet den Betriebszustand des IBS-Masterboards aus 3-18 5086A ne po om in ec on l GetIBSDiagnostic nt Funktion Seite 3-14 3-5 InterBus-S Treibersoftware für Pascal unter DOS 3.4.1 Funktionen des Device-Driver-Interfaces 3.4.1.1 Funktionen zur Verwaltung von Datenkanälen DDI_DevOpenNode Aufgabe: Mit dieser Funktion wird ein Datenkanal zu einem Node geöffnet. Synopsis: DDI_DevOpenNode (DevName:StringPtr ;perm:INT16;NodeHd:INT16Ptr):INT16; Parameter: DevName co m Der Device-Name ist der Name des anzusprechenden Gerätes. Er legt die Anschaltbaugruppe (Boardnumber) und den MPM-Teilnehmer auf dieser Anschaltbaugruppe fest (siehe Kapitel 5.2.3.1 Verwaltung von Datenkanälen im Handbuch IBS PC CB UM). Die Access-Permission gibt an, mit welchen Zugriffsrechten auf den Datenkanal zugegriffen werden darf. Es kann zwischen lesend, schreibend und lesend/ schreibend unterschieden werden. Der Node-Handle ist ein vom DDI vergebener Wert, über den in allen weiteren Funktionen eine Zuordnung zum geöffneten Node gefunden wird. s. perm in ec Ursache om negative Quittung: DDI-Error-Code ne Node-Handle po positive Quittung: nt NodeHd Spezifiziert den beim Öffnen des Datenkanals zu einem Node gefundenen Fehler näher (siehe Kapitel 7 Fehlermeldungen des DDI). - unbekannter Device-Name - Node nicht vorhanden on l Aufrufsyntax: DDI_DevOpenNode( DevName:StringPtr; perm:INT16; NodeHd:INT16Ptr) :INT16; Konstanten für die Zugriffsrechte: DDI_READ DDI_WRITE DDI_RW { IN: device name } { IN: access permission } { OUT: address of node-handle } nur lesender Zugriff nur schreibender Zugriff lesender und schreibender Zugriff In der aktuellen Version (V 0.9) der Treibersoftware darf zwischen zwei MPMTeilnehmern (z.B. Host und COP) der gleiche Datenkanal (gleicher DeviceName) nur einmal geöffnet sein. Wenn zwischen zwei MPM-Teilnehmern der gleiche Datenkanal gleichzeitig mehrmals geöffnet ist, überschreiben die Daten eines Datenkanals die Daten eines anderen, da sie denselben MPM-Speicherberich verwenden. Es erfolgt in diesem Fall keine Fehlermeldung. 3-6 5086A InterBus-S Funktionen zur Verwaltung von Datenkanälen Beispiele: Falsch: var ret : USIGN16; var s : string; s:= ’IBB1N1_D’ +#0; ret:= DDI_DevOpenNode(addr(s[1]),...., @nodeHd1) s:= ’IBB1N1_D’ +#0; ret:= DDI_DevOpenNode(addr(s[1]),...., @nodeHd2) Richtig: var ret : USIGN16; var s : string; co m s:= ’IBB1N1_D’ +#0; ret:= DDI_DevOpenNode(addr(s[1]),...., @nodeHd1) s. s:= ’IBB1N2_D’ +#0; ret:= DDI_DevOpenNode(addr(s[1]),...., @nodeHd2) nt (siehe Kapitel 5.2.3.1 Verwaltung von Datenkanälen im Handbuch IBS PC CB UM) po ne Der Term (addr(s[1]) ist notwendig, da der Device-Driver in der Programmiersprache „C“ geschrieben wurde. Es ergibt sich so eine C-kompatible Übergabestruktur. om DDI_DevCloseNode Diese Funktion schließt einen zuvor mit DDI_DevOpenNode() geöffneten Datenkanal zu einem Node. Nach dem erfolgreichem Aufruf dieser Funktion ist das Gerät nicht mehr mit dem aufrufenden Programm "verbunden", und der NodeHandle ist nicht mehr gültig. in ec Aufgabe: DDI_DevCloseNode(NodeHd : INT16):INT16; on l Synopsis: Parameter: *nodeHd positive Quittung: ERR_OK (0000hex) Bedeutung negative Quittung: DDI-Error-Code Ursache 5086A Der Node-Handle spezifiziert den zu schließenden Node. Die Funktion wurde erfolgreich ausgeführt. Spezifiziert den beim Aufruf der Funktion aufgetretenen Fehler näher (siehe Kapitel 7 Fehlermeldungen des DDI). - unbekannter Device-Name - ungültiger Node-Handle - Node nicht vorhanden 3-7 InterBus-S Treibersoftware für Pascal unter DOS 3.4.1.2 Funktionen des Mailbox-Interfaces DDI_MXI_SndMessage Aufgabe: Diese Funktion stellt eine Meldung oder ein Kommando in eine Mailbox. Synopsis: DDI_MXI_SndMessage (NodeHd : INT16;mxiAcc : P_DDI_MXI_ACCESS): INT16; Parameter: NodeHd Der Node-Handle ist die logische Nummer (Handle) eines zuvor an der DDI-Schnittstelle geöffneten Kanals. Zeiger auf eine Datenstruktur vom Typ T_DDI_MXI_ACCESS (siehe unten). mxiAcc msgType s. msgLength om ERR_OK (0000hex) Bedeutung po DDIUserID ne nt msgBlk positive Quittung: in ec negative Quittung: DDI-Error-Code on l Ursache Die Firmware 3.x unterstützt das Strukturelement Message-Type noch nicht. Setzen Sie es auf 0. Das Strukturelement Message-Length enthält die Gesamtlänge der zu sendenden Meldung in Bytes. Die maximal zulässige Gesamtlänge (siehe unten) ist 1024. Das Strukturelement msgBlk ist ein Zeiger auf einen Message-Block, der die zu sendende Meldung in Mailbox-Syntax enthält. Das Handbuch IBS PC CB UM beschreibt den Aufbau der Mailbox-Syntax. Das Strukturelement DDIUserID wird von Firmware 3.x noch nicht unterstützt. Setzen Sie DDIUserID auf 0. co Strukturelemente: m T_DDI_MXI_ACCESS: Datenstruktur mit den zum Senden eines Kommandos notwendigen Elementen. Die Funktion wurde erfolgreich ausgeführt. Gibt an, warum die Funktion nicht ausgeführt werden konnte (siehe Kapitel 7 Fehlermeldungen des DDI) ungültiger Node-Handle; keine passende Mailbox gefunden; die Meldung überschreitet die maximal nutzbare Mailbox-Länge (1020 Bytes = 1024 Bytes minus 2 Bytes Kommando-Code minus 2 Bytes Parameter-Zähler). Aufrufsyntax: DDI_MXI_SndMessage( NodeHd : INT16; mxiAcc : P_DDI_MXI_ACCESS) { IN : node-handle { IN : pointer to mailboxaccess-structure *} *} :INT16; Aufbau der Struktur T_DDI_MXI_ACCESS: P_DDI_MXI_ACCESS = ^T_DDI_MXI_ACCESS; T_DDI_MXI_ACCESS = record msgType : INT16; { msgLength : USIGN16; { DDIUserID : USIGN16; { MsgBlk : USIGN8Ptr;{ end; 3-8 Message-Type Message-Length DDI_User_ID Pointer to array for the Message } } } } 5086A InterBus-S Funktionen des Mailbox-Interfaces DDI_MXI_RcvMessage Diese Funktion holt eine Meldung aus einer Mailbox. Sie wird z.B. verwendet, um die auf ein IBS-Kommando erfolgende Rückmeldung abzuholen. Es wird nicht auf die Rückmeldung gewartet! Ist keine Rückmeldung vorhanden, erfolgt eine entsprechende Meldung im Parameter DDI-Error-Code. Voraussetzung: In die Komponente msgLength der Struktur T_DDI_MXI_ACCESS muß die Länge des zur Verfügung gestellten Empfangspuffers eingetragen werden. Der Treiber prüft die Größe des Empfangspuffers vor dem Einlesen und generiert die Fehlermeldung ERR_MSG_TO_Long (009Ahex), falls die empfangene Nachricht gößer ist als der zur Verfügung stehende Speicherplatz. Synopsis: DDI_MXI_RcvMessage(NodeHd:INT16;mxiAcc:P_DDI_MXI_ACCESS):INT16; Parameter: NodeHd m Aufgabe: co Der Node-Handle ist die logische Nummer eines zuvor an der DDI-Schnittstelle geöffneten Kanals. Zeiger auf eine Datenstruktur vom Typ T_DDI_MXI_ACCESS (siehe unten). s. mxiAcc msgType Die Firmware 3.x unterstützt das Strukturelement Message-Type noch nicht. Setzen Sie es auf 0. Geben Sie vor dem Aufruf der Funktion DDI_MXI_RcvMessage mit dem Strukturelement Message-Length die Größe des zur Verfügung stehenden Eingangspuffers in Bytes an. Nach dem erfolgreichen Empfang einer Meldung enthält das Strukturelement Message-Length die tatsächliche Länge der Meldung in Bytes. Das Strukturelement *msgBlk ist ein Zeiger auf einen Message-Block, der die empfangene Meldung in Mailbox-Syntax enthält. Das Handbuch IBS PC CB UM beschreibt den Aufbau der Mailbox-Syntax. Das Strukturelement DDIUserID wird von Firmware 3.x noch nicht unterstützt. Setzen Sie DDIUserID auf 0. ne Strukturelemente: nt T_DDI_MXI_ACCESS: Datenstruktur mit den zum Empfangen einer Meldung notwendigen Elementen. in ec msgBlk om po msgLength on l DDIUserID positive Quittung: ERR_OK (0000hex) Bedeutung negative Quittung: DDI-Error-Code Ursache 5086A Die Funktion wurde erfolgreich ausgeführt. Gibt an, warum die Funktion nicht ausgeführt werden konnte (siehe Kapitel 7 Fehlermeldungen des DDI). - ungültiger Node-Handle; - zu kleiner Empfangspuffer; - keine Meldung vorhanden 3-9 InterBus-S Treibersoftware für Pascal unter DOS Aufrufsyntax: DDI_MXI_RcvMessage( NodeHd:INT16; mxiAcc:P_DDI_MXI_ACCESS) { IN : node-handle } { OUT: pointer to mailboxaccess-structure } :INT16; Message-Type Message-Length DDI_User_ID Pointer to array for the Message } } } } 3.4.1.3 Funktionen des Data-Interfaces s. DDI_DTI_ReadData co m Aufbau der Struktur P_DDI_MXI_ACCESS: P_DDI_MXI_ACCESS = ^T_DDI_MXI_ACCESS; T_DDI_MXI_ACCESS = record msgType : INT16; { msgLength : USIGN16; { DDIUserID : USIGN16; { MsgBlk : USIGN8Ptr;{ end; Diese Funktion liest Daten über das Data-Interface aus dem MPM. Sie stellt diese Daten im Motorola-Format in den angegebenen Buffer. Bemerkung: Verwenden Sie vor der weiteren Verarbeitung der Daten die Makros zur Konvertierung von Eingangsdaten. Diese Makros konvertieren die Eingangsdaten vom Motorola- ins Intel-Format (siehe Kapitel 6). Synopsis: DDI_DTI_ReadData(NodeHd:INT16;dtiAcc:P_DDI_DTI_ACCESS):INT16; Parameter: NodeHd dtiAcc in ec om po ne nt Aufgabe: Der Node-Handle spezifiziert den Node. Zeiger auf eine Datenstruktur vom Typ T_DDI_MXI_ACCESS (siehe unten). on l T_DDI_DTI_ACCESS: Datenstruktur mit den zum Lesen von Prozeßdaten notwendigen Elementen. Strukturelemente: length address dataCons data Das Strukturelement Length enthält die Anzahl der zu lesenden Daten in Bytes. Die maximale Anzahl ist 1024 Bytes. Das Strukturelement Address gibt die DTI-Adresse eines Prozeßdatenwortes im MPM in Byte an (siehe Kapitel Aufteilung des MPMs im Handbuch IBS PC CB UM). Das Strukturelement Data-Consistency gibt an, welche Datenkonsistenz beim Zugriff verwendet werden soll. Dieses Strukturelement ist ein Zeiger auf den Buffer, in dem die gelesenen Daten abgelegt werden sollen. Konstanten für die möglichen Datenkonsistenzbereiche: DTI_DATA_BYTE : Byte-Datenkonsistenz (1 Byte) DTI_DATA_WORD : Word-Datenkonsistenz (2 Byte) DTI_DATA_LWORD : Longword-Datenkonsistenz (4 Byte) DTI_DATA_48BIT : 48 Bit-Datenkonsistenz (6 Byte) Die Datenkonsistenzbereiche DTI_DATA_LWORD und DTI_DATA_48BIT sind für Zugriffe auf das IBS-Masterboard erst ab Firmware 3.72 möglich. 3-10 5086A InterBus-S Funktionen des Data-Interfaces ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. Spezifiziert den beim Lesen der Prozessdaten aufgetretenen Fehler näher (siehe Kapitel 7 Fehlermeldungen des DDI). - ungültiger Node-Handle - ungültige Parameter - Grenzen des Datenbereichs werden überschritten number of bytes to read/write } address to read/write process data} data consistency of the access } pointer to data to read/write } po ne Aufbau der Struktur T_DDI_DTI_ACCESS: P_DDI_DTI_ACCESS = ^T_DDI_DTI_ACCESS; T_DDI_DTI_ACCESS = record length : USIGN16; { address : USIGN16; { dataCons : INT16; { Data : USIGN8Ptr;{ end; { IN : node-handle } { IN : dti access structure } m Aufrufsyntax: DDI_DTI_ReadData( NodeHd:INT16; dtiAcc:P_DDI_DTI_ACCESS) :INT16; co Ursache s. negative Quittung: DDI-Error-Code nt positive Quittung: DDI_DTI_WriteData Diese Funktion schreibt Daten über das Data-Interface in das MPM. Das Funktion benötigt hierzu Daten im Motorola-Format. Synopsis: DDI_DTI_WriteData(NodeHd:INT16;dtiAcc:P_DDI_DTI_ACCESS):INT16; Verwenden Sie vor dem Schreiben von Daten in das MPM die Makros zur Konvertierung von Ausgabedaten. Diese Makros konvertieren die Ausgabedaten vom Intel- ins Motorola-Format (siehe Kapitel 6). on l Bemerkung: in ec om Aufgabe: Parameter: NodeHd dtiAcc Der Node-Handle spezifiziert den Node. Zeiger auf eine Datenstruktur vom Typ T_DDI_MXI_ACCESS (siehe unten). T_DDI_DTI_ACCESS: Datenstruktur mit den zum Schreiben von Prozeßdaten notwendigen Elementen. Strukturelemente: length address dataCons data 5086A Das Strukturelement Length enthält die Anzahl der zu schreibenden Daten in Bytes. Die maximale Anzahl ist 1024 Bytes (1 KByte). Das Strukturelement Address gibt die DTI-Adresse eines Prozeßdatenwortes im MPM in Byte an (siehe Kapitel Aufteilung des MPMs im Handbuch IBS PC CB UM). Das Strukturelement Data-Consistency gibt an, welche Datenkonsistenz beim Zugriff verwendet werden soll. Dieses Strukturelement ist ein Zeiger auf den Buffer, aus dem die zu schreibenden Daten entnommen werden sollen. 3-11 InterBus-S Treibersoftware für Pascal unter DOS Konstanten für die möglichen Datenkonsistenzbereiche: DTI_DATA_BYTE : Byte-Datenkonsistenz (1 Byte) DTI_DATA_WORD : Word-Datenkonsistenz (2 Byte) DTI_DATA_LWORD : Longword-Datenkonsistenz (4 Byte) DTI_DATA_48BIT : 48 Bit-Datenkonsistenz (6 Byte) Die Datenkonsistenzbereiche DTI_DATA_LWORD und DTI_DATA_48BIT sind für Zugriffe auf das IBS-Masterboard erst ab Verwendung von Firmware 3.72 möglich. ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. Spezifiziert einen beim Schreiben von Prozessdaten aufgetretenen Fehler näher (siehe Kapitel 7 Fehlermeldungen des DDI). - ungültiger Node-Handle - ungültige Parameter - Grenzen des Datenbereichs werden überschritten m negative Quittung: DDI-Error-Code { IN : node-handle } { IN : dti access structure } po ne Aufrufsyntax: DDI_DTI_WriteData( NodeHd:INT16; dtiAcc:P_DDI_DTI_ACCESS) :INT16; s. co Ursache nt positive Quittung: number of bytes to read/write } address to read/write process data} data consistency of the access } pointer to data to read/write } on l in ec om Aufbau der Struktur T_DDI_DTI_ACCESS: P_DDI_DTI_ACCESS = ^T_DDI_DTI_ACCESS; T_DDI_DTI_ACCESS = record length : USIGN16; { address : USIGN16; { dataCons : INT16; { Data : USIGN8Ptr;{ end; 3-12 5086A InterBus-S Funktionen zur Kontrolle der Hardware 3.4.2 Funktionen zur Kontrolle der Hardware 3.4.2.1 Abfrage der DIP-Schalter GetDIPSwitch Die Funktion GetDIPSwitch schreibt in die durch dataPtr referenzierte Variable die Schalterstellungen des DIP-Schalters zum Einstellen der Boot-Konfiguration. Der Anwender kann somit zur Programmlaufzeit die Boot-Konfiguration ermitteln, um z.B. festzustellen, welches Board (PC oder COP) den InterBus-S steuert. Die acht Schalter werden auf die Bits 0 bis 7 des Worts abgebildet, d.h. der DIP-Schalter 1 ist dem Bit 0, der DIP-Schalter 2 dem Bit 1, usw. des Wortes zugeordnet. Befindet sich ein Schalter in der Schaltstellung ON, ist das jeweilige Bit gleich Null. Die nicht verwendeten Bits 8 bis 15 des Worts sind in jedem Fall auf Eins gesetzt. Synopsis: GetDIPSwitch(boardNumber : USIGN16; dataPtr : USIGN16Ptr):INT16; Parameter: boardNumber dataPtr positive Quittung: ERR_OK (0000hex) Bedeutung co m Aufgabe: ne nt s. Boardnummer (PC: 1 bis 4, COP: 1) Zeiger auf die Variable, in welche die ermittelten Schalterstellungen eingetragen werden). po Die Funktion wurde erfolgreich ausgeführt. on l in ec om negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. ERR_TSR_NOT_LOADED (008Bhex) Bedeutung Das angegebene Board ist nicht vorhanden, bzw. der Treiber hierfür ist nicht geladen. 5086A 3-13 InterBus-S Treibersoftware für Pascal unter DOS 3.4.2.2 Überwachung des SysFail-Registers GetSysFailRegister Die Funktion GetSysFailRegister schreibt in die durch sysFailRegPtr referenzierte Variable den Inhalt des SysFail-Registers. Die Bits 0, 4, 8, und 12 des Registers zeigen an, ob das SysFail-Signal des entsprechenden Boards (PC, IBSMaster und COP) aktiviert ist oder nicht. Tritt bei einem MPM-Teilnehmer eine Funktionsstörung auf (z.B. Watchdog hat ausgelöst), wird das zugehörige Bit im SysFail-Register aktiviert, d.h auf Eins gesetzt. Dieses Bit bleibt dann bis zur Beendigung der Störung gesetzt. Die einzelnen Bits des Register sind folgendermaßen den MPM-Teilnehmern zugeordnet: Bit 0: Host (PC) Bit 4: IBS-Masterboard (MA) Bit 8: Coprozessorboard (COP) Bit 12: wird nicht verwendet, da nur drei MPM-Teilnehmer vorhanden sind. Synopsis: GetSysFailRegister (boardNumber : USIGN16; SysFailReg : USIGN16Ptr):INT16; Parameter: boardNumber sysFailRegPtr positive Quittung: ERR_OK (0000hex) Bedeutung s. co m Aufgabe: ne nt Boardnummer (PC: 1 bis 4, COP: 1) Zeiger auf eine Variable, in welche der Inhalt des SysFail-Registers eingetragen wird. po Die Funktion wurde erfolgreich ausgeführt. in ec om negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. ERR_TSR_NOT_LOADED (008Bhex) Bedeutung Das angegebene Board ist nicht vorhanden, bzw. der Treiber hierfür ist nicht geladen.) on l 3.4.2.3 Funktionen zur Ansprache des SRAMs (nur für IBS PC CB/COP/I-T und IBS PC CB/486RTX/I-T) COP_WriteStaticRAM Aufgabe: Schreibt die angegebene Anzahl von Bytes ab der vorgegebenen Adresse in das statische RAM (SRAM) des COPs. Die niedrigste mögliche Adresse ist 0. Synopsis: COP_WriteStaticRam (address:USIGN32;length:USIGN16;Data:Pointer):INT16; Parameter: address length Data positive Quittung: ERR_OK (0000hex) Bedeutung 3-14 Startadresse im statischen RAM Datensatzlänge (Anzahl der zu schreibenden Bytes) Zeiger auf den Buffer, aus aus dem die Funktion die zu schreibenden Daten entnehmen soll Die Funktion wurde erfolgreich ausgeführt. 5086A InterBus-S Funktionen zur Ansprache des SRAMs negative Quittung: ERR_AREA_EXCDED (0096hex) Bedeutung Der zu lesenden Datensatz ist zu groß. Die Funktion kann maximal 64 KByte in einem Aufruf lesen. Abhilfe Rufen Sie die Funktion zweimal auf, um größere Datenmengen blockweise zu übertragen. Erhöhen Sie beim zweiten Aufruf die Startadresse um 64 KByte. Bedeutung Die obere Bereichsgrenze ist überschritten. Das statische RAM ist 128 KByte groß. Abhilfe Beachten Sie, daß die Summe aus Startadresse und Datensatzlänge die Bereichsgrenze nicht überschreitet. COP_ReadStaticRAM Liest die angegebene Anzahl von Bytes ab der vorgegebenen Adresse aus dem statischen RAM des COP. Synopsis: COP_ReadStaticRam (address:USIGN32;length:USIGN16;Data:Pointer):INT16; Parameter: address length Data positive Quittung: ERR_OK (0000hex) Bedeutung co m Aufgabe: ne nt s. Startadresse im statischen RAM Datensatzlänge (Anzahl der zu lesenden Bytes) Dieses Strukturelement ist ein Zeiger auf den Buffer, in den die Funktion die zu lesenden Daten ablegen soll. po Die Funktion wurde erfolgreich ausgeführt. on l in ec om negative Quittung: ERR_AREA_EXCDED (0096hex) Bedeutung Der zu schreibende Datensatz ist zu groß. Die Funktion kann maximal 64 KByte in einem Aufruf lesen. Abhilfe Rufen Sie die Funktion zweimal auf, um größere Datenmengen blockweise zu übertragen. Erhöhen Sie beim zweiten Aufruf die Startadresse um 64 KByte. Bedeutung Die obere Bereichsgrenze ist überschritten. Das statische RAM ist 128 KByte groß. Abhilfe Beachten Sie, daß die Summe aus Startadresse und Datensatzlänge die Bereichsgrenze nicht überschreitet. 5086A 3-15 InterBus-S Treibersoftware für Pascal unter DOS 3.4.2.4 Funktionen zur Kontrolle der Watchdogs EnableWatchDog() Aufgabe: Die Funktion schaltet den Watchdog ein. Synopsis: EnableWatchDog(boardNumber : USIGN16):INT16; Parameter: boardNumber Boardnummer (PC: 1 bis 4, COP: 1) positive Quittung: ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. Nach dem Aufruf der Funktion muß der Watchdog in regelmäßigen Abständen getriggert werden. PC: Triggerabstand kleiner 146 ms, sonst wird im SysFail-Register ein Bit gesetzt. COP: Triggerabstand kleiner 125 ms, sonst wird im SysFail-Register ein Bit gesetzt, das den Reset des COPs auslöst. po TriggerWatchDog() ne nt s. Bemerkung: co m negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. Abhilfe Geben Sie eine gültige Boardnummer an. Die Funktion triggert den Watchdog. Synopsis: INT16 FAR TriggerWatchDog(USIGN16 boardNumber) Parameter: boardNumber in ec positive Quittung: om Aufgabe: ERR_OK (0000hex) Bedeutung Boardnummer (PC: 1 bis 4, COP: 1) Die Funktion wurde erfolgreich ausgeführt. on l negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. Abhilfe Geben Sie eine gültige Boardnummer an. Bemerkung: 3-16 Dieser Aufruf muß in regelmäßigen Abständen wiederholt werden. PC: Triggerabstand kleiner 146 ms, sonst wird im SysFail-Register ein Bit gesetzt. COP: Triggerabstand kleiner 125 ms, sonst wird im SysFail-Register ein Bit gesetzt, das den Reset des COPs auslöst. 5086A InterBus-S Funktionen zur Kontrolle der Watchdogs GetWatchDogState() Aufgabe: Mit dieser Funktion können Sie aus ihrem Anwenderprogramm heraus abfragen, ob der entsprechende Watchdog ausgelöst hat. Falls das Anwenderprogramm auf dem Host läuft, fragt die Funktion automatisch nach dem Watchdog des Hosts. Falls das Anwenderprogramm auf dem COP läuft, fragt die Funktion automatisch nach dem Watchdog des COPs. Synopsis: GetWatchDogState(boardNumber : USIGN16):INT16; Parameter: boardNumber positive Quittung: - Boardnummer (PC: 1 bis 4, COP: 1) Watchdogstatus des Coprozessorboards: 1 Der Watchdog hat den letzten Warmstart (Software-Reset) des COPs ausgelöst. 0 Der Watchdog hat den letzten Warmstart (Software-Reset) des COPs nicht ausgelöst. Watchdogstatus des Hosts: 1 Der Watchdog des Hosts hat ausgelöst. 0 Der Watchdog des Hosts hat nicht ausgelöst. po ne nt s. Rückgabewert: co m negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. Abhilfe Geben Sie eine gültige Boardnummer an. om Die Rückgabewerte sind nach einem Hardware-Reset von Anschaltbaugruppe oder Host nicht mehr verfügbar. in ec ClearWatchDog() Aufgabe: Die Funktion setzt den Watchdog-Status zurück. ClearWatchDog(boardNumber : USIGN16):INT16; on l Synopsis: Parameter: boardNumber Boardnummer (PC: 1 bis 4, COP: 1) positive Quittung: ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. negative Quittung: ERR_INVALID_BOARD_NUM (0080hex) Bedeutung Es wurde eine ungültige Boardnummer angegeben. Abhilfe Geben Sie eine gültige Boardnummer an. 5086A 3-17 InterBus-S Treibersoftware für Pascal unter DOS 3.4.3 IBS-Diagnosefunktion GetIBSDiagnostic(); Aufgabe: Mit der Funktion GetIBSDiagnostic() können Sie den Betriebszustand des IBSMasterboards und somit den Betriebszustand des IBS-Systems auswerten. Synopsis: GetIBSDiagnostic(boardNumber : USIGN16; DiagInfo : P_IBS_DIAG):INT16; Parameter: boardNumber DiagInfo P_IBS_DIAG Struktur mit Diagnosedetails Strukturelemente: state Boardnummer (PC: 1 bis 4, COP: 1) Zeiger auf Struktur mit Fehlerdetails po ne nt s. co m Die Bits des Strukturelements state beschreiben den Zustand des Busses. Durch Maskieren (UND-Verknüpfung) des Strukturelements state mit folgenden Konstanten können Sie den Zustand des IBS-Systems auswerten: DIAG_IBS_READY IBS ist bereit DIAG_IBS_RUN IBS ist gestartet und läuft DIAG_IBS_SYS_FAIL Im SysFail-Register wurde (z.B. von einem Watchdog) ein Bit gesetzt DIAG_IBS_BSA ein Bussegment ist abgeschaltet DIAG_IBS_ERROR IBS-Masterboard hat Fehler gemeldet Die Bits des Strukturelements errType beschreiben aufgetretene Fehler genauer. Durch Maskieren (UND-Verknüpfung) des Strukturelements errType mit folgenden Konstanten können Sie die Fehlerart auswerten: DIAG_CNTRL_ERR Controller-Fehler (Anschaltbaugruppe) DIAG_RMT_BUS_ERR Fernbusfehler (Remotebus Error) (z.B. Fernbuskabel defekt) DIAG_LCL_BUS_ERR Peripheriebusfehler (Local Bus Error) (z.B. Peripheriebuskabel defekt) DIAG_MDL_ERR IBS-Teilnehmerfehler (Module Error) z.B. unterbrochene Peripherie-Versorgungsspannung, Ausgang überlastet) on l in ec om errType Werten Sie den Inhalt des Strukturelements diagPara in Abhängigkeit seines Wertes und des Strukturelements errType verschieden aus: - Wenn das Strukturelement errType einen Fernbus-, Peripheriebus- oder IBS-Teilnehmerfehler anzeigt und der Wert des Strukturelements diagPara im Bereich 0 bis 255 liegt, dann gibt diagPara die Nummer des fehlerbehafteten Bussegments an. Geben Sie das Bussegment dezimal aus. - Wenn das Strukturelement errType einen Fernbus-, Peripheriebus- oder IBS-Teilnehmerfehler anzeigt und der Wert des Strukturelements diagPara über 255 liegt, dann gibt diagPara eine Fehlernummer (E01, E02, E04, E05 oder E06) an. Siehe Beschreibung der Meldung Bus_Error_Information_Indication (80C4hex) im Handbuch zur Anschaltbaugruppe (IBS PC CB UM). - Wenn das Strukturelement errType einen Controller-Fehler anzeigt, dann gibt das Strukturelement diagPara eine Controller-Fehlernummer an (siehe Liste der Controller-Fehlernummern). Geben Sie die Controller-Fehlernummer hexadezimal aus. diagPara 3-18 5086A InterBus-S IBS-Diagnosefunktion positive Quittung: ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. negative Quittung: ERR_INVLD_BOARD_NUM (0080hex) Bedeutung Ungültige Boardnummer negative Quittung: ERR_NODE_NOT_READY (0087hex) Bedeutung IBS-Masterboard nicht ansprechbar (z.B. bootet gerade) Abhilfe Warten Sie einen Moment und versuchen Sie es erneut m negative Quittung: MPM NOT AVAILABLE (0099hex) Bedeutung Das MPM ist nicht ansprechbar Abhilfe Installieren Sie den Treiber neu co Werten Sie die Diagnoseinformationen nur aus, wenn die Funktion erfolgreich ausgeführt wurde (positive Quittung ERR_OK (0000hex)). Bei Rückgabe einer negativen Quittung sind keine gültigen Diagnoseinformationen vorhanden! po ne nt s. Aufrufsyntax: GetIBSDiagnostic( boardNumber : USIGN16; { Boardnummer der Anschaltbaugruppe } DiagInfo : P_IBS_DIAG) { Zeiger auf Struktur mit Fehlerdetails } :INT16; Beispiel: on l in ec om Aufbau der Struktur P_IBS_DIAG: P_IBS_DIAG = ^T_IBS_DIAG; T_IBS_DIAG = record state : USIGN16; {Zustand des Busses z.B. Ready, Run } errType : USIGN16; {Art des Fehlers, z.B. Fernbus-, Lokalbus oder Peripheriefehler } diagPara : USIGN16; {ergänzende Informationen, siehe Parameterbeschreibung auf der Vorseite } end; Programmausschnitt zum Auswerten des Parameters state durch Maskieren (UND-Verknüpfung) mit vorgegebenen Konstanten: Procedure Diagnose; Result : INT16; IBS_Info : T_IBS_DIAG begin Result:=GetIBSDiagnostic(boardNumber, @IBS_Info); if Result=ERR_OK then begin if (IBS_Info.state AND DIAG_IBS_READY) = DIAG_IBS_READY then writeln(’IBS Ready’); if (IBS_Info.state AND DIAG_IBS_RUN) = DIAG_IBS_RUN then writeln(’IBS Run’); else writeln(’IBS Stop!’) end end; 5086A 3-19 on l in ec om po ne nt s. co m InterBus-S Treibersoftware für Pascal unter DOS 3-20 5086A Kapitel 4 Ergänzungen zur Treibersoftware für Windows® Dieses Kapitel informiert Sie über ne nt s. Struktur der Treibersoftware auf dem Host (PC) . Notification-Mode . . . . . . . . . . . . . Library unter Windows . . . . . . . . . . . Include-Dateien für „C“ . . . . . . . . . . . Units für Pascal . . . . . . . . . . . . . . Initialisierungs-Datei unter Windows . . . . . . Funktionen für Windows . . . . . . . . . . . Funktionen des Device-Driver-Interfaces . . . . Funktionen zur Verwaltung des Notification-Modes Funktionen zur Kontrolle der Hardware . . . . . Nutzung der Treibersoftware mit C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3 4-3 4-5 4-5 4-6 4-6 4-7 4-8 4-9 4-13 4-14 on l in ec om 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.7.1 4.7.2 4.7.3 4.8 co Ergänzungen zur Treibersoftware für Windows . . . . . . . . . . . . . . . 4-3 po 4 m - Die Realisierung von Device-Driver-Interface und Device-Driver für Windows. - Die zu verwendenden Funktionen - Die benötigten Include-Dateien und Libraries. 5086A 4-1 4-2 5086A s. nt ne po om in ec on l co m InterBus-S Ergänzungen zur Treibersoftware für Windows 4 Ergänzungen zur Treibersoftware für Windows 4.1 Struktur der Treibersoftware auf dem Host (PC) Die Treibersoftware für Microsoft Windows® ist als Dynamic-Link-Library (DLL) ausgeführt (IBSPCCB.DLL). Diese DLL beinhaltet das Device-Driver-Interface sowie Device-Driver für vier Anschaltbaugruppen. PC COP MA COP MA MPM COP MA 5086A401 Realisierung der IBS-Treibersoftware unter Microsoft-Windows om Bild 4-1: MA MPM po COP MPM ne MPM nt s. Dynamic-Link-Library co m Anwenderprogramm in ec In der Datei IBSPCCB.DLL sind die Device-Driver für vier Anschaltbaugruppen integriert, die in der Datei IBSPCCB.INI eingetragen und parametriert werden müssen. on l 4.2 Notification-Mode Der Betrieb im Notification-Mode ermöglicht es, das Anwenderprogramm über das Eintreffen einer Nachricht (z.B. Meldung des IBS-Masterboards) im MPM durch eine Windows-Message zu informieren. Das zyklische Aufrufen der Funktion DDI_MXI_RcvMessage() aus dem Anwenderprogramm ist dann unter Microsoft Windows® nicht erforderlich. 5086A 4-3 InterBus-S Ergänzungen zur Treibersoftware für Windows PC Anwenderprogramm 3 DDI (Device-Driver-Interface) s. co MPM (Multi-Port-Memory) 5 m 4 2 nt 1 5086A402 Notification-Mode unter Microsoft Windows om Bild 4-2: po Anschaltbaugruppe ne MA/COP on l in ec Funktionsweise des Notification-Modes unter Microsoft Windows®: 1 Das IBS-Masterboard (MA) oder das Coprozessorboard (COP) stellen eine Nachricht ins Multi-Port-Memory (MPM). 2 Das Eintreffen der Nachricht im MPM verursacht einen Interrupt, der vom Mailbox-Interface des DDI ausgewertet wird. 3 Wenn der Notification-Mode zwischen IBS-Masterboard bzw. Coprozessorboard und Anwenderprogramm aktiviert ist, erzeugt das DDI unter Nutzung der Windows-Procedur PostMessage eine Windows-Message, die das Anwenderprogramm über das Eintreffen einer Nachricht im MPM informiert. 4 Daraufhin wird im Anwenderprogramm die Funktion DDI_MXI_RcvMessage aufgerufen. 5 Die Nachricht wird dem Anwenderprogramm in einem Buffer zur Verfügung gestellt. Die Windows-Message zeigt nur an, daß eine Nachricht im MPM vorliegt. Lesen Sie die Nachricht dann mit Hilfe der Funktion DDI_MXI_RcvMessage aus. Um eine schnelle Reaktion zu erhalten, ist es sinnvoll, dem Parameter firstParam den Wert des Node-Handles zuzuweisen (Beispiel: firstParam = nodeHd). Beim Empfang der Windows-Message kann dann dieser Parameter, der wParam entspricht, zum Auslesen der Nachricht verwendet werden. Bei der Vergabe des Wertes für die Windows-Message (msg) empfiehlt es sich die Windows-Konstante WM_USER zu nutzen (Beispiel: msg = WM_USER + 255). 4-4 5086A InterBus-S Library unter Windows Mit der Funktion DDI_SetMsgNotification wird der Notification-Mode zwischen einem Windows-Fenster und einem MPM-Teilnehmer aktiviert. Die Funktion DDI_ClrMsgNotification deaktiviert den Notification-Mode wieder. Sie können den Notification-Mode für jeden MPM-Teilnehmer getrennt aktivieren bzw. deaktivieren. Der Notification-Mode wird, wenn der dem Node-Handle zugeordnete Datenkanal geschlossen d.h. der betreffende Node-Handle wieder freigeben wird, automatisch beendet. 4.3 Library unter Windows s. co m Zum Betrieb der Anschaltbaugruppen unter Microsoft Windows® wird nur eine Dynamic-Link-Library (DLL) benötigt. In dieser im Protected Mode erstellten DLL (IBSPCCB.DLL) sind die gleichen DDI-Funktionen implementiert, welche auch die Treibersoftware für DOS zur Verfügung stellt. Zusätzlich wurden zwei Funktionen zur Meldung des Eintreffens von Nachrichten im Mailbox-Interface integriert (Notification-Mode). ne nt Kopieren Sie die Datei IBSPCCB.DLL, wie unter Windows üblich, in das Verzeichnis, in dem sich Ihr Anwenderprogramm befindet, oder in das WindowsStammverzeichnis. po 4.4 Include-Dateien für „C“ in ec om Ab Treibersoftware-Version 0.9 müssen Sie nur noch die Include-Datei IBS_WIN.H einbinden. Aus dieser Include-Datei werden alle weiter benötigten Include-Dateien (STDTYPES.H, COMPILER.H, IBS_CM.H, DDI_USR.H, DDI_ERR.H, DDI_LIB.H, PC_UTIL.H und DDI_MACR.H) aufgerufen. Sie können aber auch, wie bei älteren Versionen der Treibersoftware, die benötigten Include-Dateien einzeln aufrufen. on l Bei Verwendung der Include-Datei IBS_WIN.H ist es außerdem nicht notwendig, von Hand Compiler-Switches im Programm bzw. in der Kommandozeile des Compilers einzutragen. Die notwendige Konstanten-Deklaration (IBS_WIN_DRV) erfolgt dann innerhalb von IBS_WIN.H. Die Include-Datei DDI_MACR.H ermöglicht die Nutzung der im Kapitel 7 beschriebenen Makrofunktionen. Die Makros sind in dieser Datei definiert. Falls Sie IBS_WIN.H nicht verwenden möchten und die benötigten Include-Dateien einzeln im Programm aufrufen, müssen Sie vor dem Einbinden der Include Dateien die Anweisung #define IBS_WIN_DRV einfügen. Dies kann entweder im Programmtext oder als Compileroption erfolgen. Beispiele: #define IBS_WIN_DRV #include "stdtypes.h" #include "ddi_usr.h" ... oder: cl /C /Ox /DIBS_WIN_DRV ... 5086A 4-5 InterBus-S Ergänzungen zur Treibersoftware für Windows 4.5 Units für Pascal Unter Windows müssen Sie, außer den auch schon unter DOS benötigten Units DDI_DRV.PAS und DDI_VAR.PAS, zusätzlich nur die Unit TPPCCB.PAS einbinden. Diese Unit stellt das Pascal-Interface zur Library IBSPCCB.DLL dar. In der Unit TPPCCB.PAS sind auch die Funktionen zur Kontrolle des NotificationModes deklariert. 4.6 Initialisierungs-Datei unter Windows nt ne po [BOARD1] BoardInUseFlag=TRUE IOAddress=120 MPMAddress=D000 IRQ=10 s. [GENERAL] EnableInitErrorMessage=TRUE co m Im Windows-Stammverzeichnis muß sich außerdem die Datei IBSPCCB.INI befinden, die zur Parametrierung dient. Tragen Sie die zur Initialisierung der Anschaltbaugruppen erforderlichen Parameter (IO-Adresse, MPM-Adresse und Interruptnummer) in die Datei IBSPCCB.INI ein. Das folgende Beispiel zeigt die Einträge für den Betrieb einer Anschaltbaugruppe. in ec om [BOARD2] BoardInUseFlag=FALSE IOAddress=120 MPMAddress=D100 IRQ=11 on l [BOARD3] BoardInUseFlag=FALSE IOAddress=120 MPMAddress=D200 IRQ=12 [BOARD4] BoardInUseFlag=FALSE IOAddress=120 MPMAddress=D300 IRQ=15 Bild 4-3: Beispieleinträge in der Datei IBSPCCB.INI Setzen Sie z.B. für Board 1 den Eintrag BoardInUseFlag auf TRUE, damit die Anschaltbaugruppe Nr. 1 während der Initialisierungsphase erkannt wird. Andernfalls wird, selbst wenn die Anschaltbaugruppe Nr. 1 vorhanden ist, diese als nicht vorhanden gekennzeichnet und nicht initialisiert. Wenn Sie einen ungültigen Wert angegeben, wird die Initialisierung der DLL nicht abgebrochen. 4-6 5086A InterBus-S Funktionen für Windows - Falls der Eintrag EnableInitErrorMessage=TRUE lautet, wird beim Laden der DLL (Start des Anwenderprogramms) eine Fehlermeldung in einer WindowsMessage-Box ausgegeben. - Falls der Eintrag EnableInitErrorMessage=FALSE lautet, wird beim Laden der DLL (Start des Anwenderprogramms) keine Fehlermeldung ausgegeben. In diesem Fall können Sie nur anhand der Fehlermeldungen der Treiber- bzw. DDI-Funktionen (z.B. beim ersten Öffnen eines Datenkanals erkennen), daß ein Fehler während der Initialisierung aufgetreten ist. Die Parameter entsprechen bis auf die Einschränkung, daß die Werte für MPMAddress nur im Bereich von A0000hex bis FF000hex liegen dürfen, denen der Treibersoftware für DOS. co Tabelle 4-1: m 4.7 Funktionen für Windows Übersicht über die DDI-Funktionen für Microsoft Windows Aufgabe DDI_DevOpenNode Öffnet einen Datenkanal zu einem Node 4-8 DDI_DevCloseNode Schließt einen Datenkanal zu einem Node 4-8 DDI_MXI_SndMessage Schreibt eine Meldung in das MPM 4-8 DDI_MXI_RcvMessage Liest eine Meldung aus dem MPM 4-8 DDI_DTI_ReadData Liest Daten aus dem MPM 4-8 DDI_DTI_WriteData Schreibt Daten in das MPM 4-8 DDI_SetMsgNotification Aktiviert den Notification-Mode für Windows 4-9 DDI_ClrMsgNotification Deaktiviert den Notification-Mode für Windows 4-11 in ec om po ne nt s. Funktion Funktion on l Tabelle 4-2: Seite Übersicht über die Funktionen zur Kontrolle der Hardware Aufgabe Seite COP_WriteStaticRAM Schreibt eine Anzahl von Bytes in das SRAM des COPs * COP_ReadStaticRAM Liest eine Anzahl von Bytes aus dem SRAM des COPs * GetDIPSwitch Liest die Stellungen des DIP-Schalters zum Einstellen der Boot-Konfiguration aus 4-13 GetSysFailRegister Liest den Inhalt des SysFail-Registers aus 4-13 EnableWatchDog Der Einsatz des Watchdogs zur Überwachung des Host ist unter Windows nicht sinnvoll. Es ist nicht gewährleistet, daß Ihr Programm innerhalb der vorgeschriebenen Zeit ein Triggern des Watchdogs leisten kann. Ein Beispiel: Sie verschieben mit der Maus den Rahmen eines Fensters. Solange Sie den Rahmen des Fensters mit der Maus festhalten, läuft Ihr Programm nicht weiter! — Wertet den Betriebszustand des IBS-Masterboards aus 4-13 TriggerWatchDog GetWatchDogState ClearWatchDog GetIBSDiagnostic 5086A — — — 4-7 InterBus-S Ergänzungen zur Treibersoftware für Windows * Dies sind Funktionen für das Coprozessorboard. Sie sind ausschließlich für die Verwendung unter den DOS-kompatiblen Betriebsystemen (RTXDOS, TDOS) des Coprozessorboards definiert und im Kapitel 2 (C) und Kapitel 3 (Pascal) beschrieben. 4.7.1 Funktionen des Device-Driver-Interfaces m Die DDI-Funktionen für den Betrieb unter Microsoft Windows® unterscheiden sich nicht grundsätzlich von denen für den Betrieb unter DOS. Sie haben die gleiche Funktionalität und verwenden die gleichen Parameter. Abweichungen ergeben sich dadurch, daß es unter Windows möglich ist, sich vom Eintreffen einer Nachricht im MPM per Windows-Message unterrichten zu lassen. Hierzu steht der Notification-Mode zur Verfügung. co Deklaration der für Microsoft Windows® zur Verfügung stehenden DDIFunktionen po DDI_DevOpenNode(CHAR FAR *devName, INT16 perm, INT16 FAR *nodeHd) DDI_DevCloseNode(INT16 nodeHd) DDI_DTI_WriteData(INT16 nodeHd, T_DDI_DTI_ACCESS FAR *dtiAcc) DDI_DTI_ReadData(INT16 nodeHd, T_DDI_DTI_ACCESS FAR *dtiAcc) DDI_MXI_SndMessage(INT16 nodeHd, T_DDI_MXI_ACCESS FAR *mxiAcc) DDI_MXI_RcvMessage(INT16 nodeHd, T_DDI_MXI_ACCESS FAR *mxiAcc) om INT16 FAR PASCAL INT16 FAR PASCAL INT16 FAR PASCAL INT16 FAR PASCAL INT16 FAR PASCAL INT16 FAR PASCAL ne nt s. Im Unterschied zur Treibersoftware für DOS sind die DDI-Funktionen der Treibersoftware für Microsoft Windows® in der DLL IBSPCCB.DLL als FAR PASCAL deklariert, um eine Nutzung dieser DLL mit verschiedenen Programmiersprachen zu ermöglichen. Die Funktionen für Microsoft Windows® sind folgendermaßen deklariert: on l in ec Diese Funktionen sind, bis auf die Deklaration, mit der Treibersoftware für DOS identisch und werden im Kapitel 2 (C) und Kapitel 3 (Pascal) beschrieben. Die zu übergebenden Parameter entsprechen den dortigen Beschreibungen. 4-8 5086A InterBus-S Funktionen zur Verwaltung des Notification-Modes 4.7.2 Funktionen zur Verwaltung des Notification-Modes Zusätzlich sind zwei Funktionen zum Aktivieren und Deaktivieren des Notification-Mode vorhanden. DDI_SetMsgNotification Die Funktion aktiviert den Notification-Mode für einen Datenkanal. Voraussetzung: Der der Funktion ebenfalls übergebene Node-Handle (nodeHd) muß zu einem geöffneten Datenkanal des Mailbox-Interfaces gehören, andernfalls erfolgt eine allgemeine DDI-Fehlermeldung. Synopsis (C): INT16 DDI_SetMsgNotification (INT16 nodeHd, T_IBS_WIN_NOTIFY FAR *notifyInfoPtr) m Aufgabe: nodeHd Der Node-Handle ist die logische Nummer eines zuvor an der DDI-Schnittstelle geöffneten Kanals. Zeiger auf eine Datenstruktur vom Typ T_IBS_WIN_NOTIFY (siehe unten). s. Parameter: co Synopsis (Pascal): DDI_SetMsgNotification (NodeHd : INT16;notifyInfoPtr: P_IBS_WIN_NOTIFY):INT16; ne nt *notifyInfoPtr Datenstruktur mit den zum Aktivieren der Notification-Funktion nowendigen Elementen Strukturelemente: hWnd ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. on l in ec om firstParam secondParam Der Windows-Handle gibt an, welches Windows-Fenster die Windows-Message erhalten soll. Vom Anwender für die Nachricht zu vergebender Message-Code. erster optionaler Parameter zweiter optionaler Parameter msg positive Quittung: po T_IBS_WIN_NOTIFY: negative Quittung: allgemeiner DDI-Error-Code Ursache Siehe Beschreibung der Fehlermeldungen des DDI negative Quittung: EROR_NODE_IN_USE (00B0hex) Ursache Sie haben versucht, den Notification-Mode für einen Node zu aktivieren, für den der Notification-Mode bereits eingeschaltet war. 5086A 4-9 InterBus-S Ergänzungen zur Treibersoftware für Windows DDI_SetMsgNotification in der Programmiersprache „C“ Aufrufsyntax: INT16 DDI_SetMsgNotification( INT16 nodeHd, /* IN: node-handle*/ T_IBS_WIN_NOTIFY FAR *notifyInfoPtr); /* IN: pointer to WIN-notifystructure */ m UINT msg; WPARAM firstParam; LPARAM secondParam; } T_IBS_WIN_NOTIFY; /* Handle des Zielfensters der Nachricht /* Message Code der Nachricht /* Erster Parameter (wParam) /* Zweiter Parameter (lParam) */ */ */ */ co Aufbau der Struktur T_IBS_WIN_NOTIFY: typedef struct { HWND hWnd; po ne nt s. Zuordnung der Windows-Prozedurkomponenten zu den Komponenten der Struktur: WndProc( HWND hWnd; /* HWND hWnd */ WORD Message; /* UINT msg */ WORD wParam; /* WPARAM firstParam */ LONG lParam;) /* LPARA MsecondParam */ DDI_SetMsgNotification in der Programmiersprache Pascal in ec om Aufrufsyntax: DDI_SetMsgNotification( NodeHd : INT16; notifyInfoPtr : P_IBS_WIN_NOTIFY) { IN: node-handle { IN: pointer to WIN-notifystructure } } on l :INT16; Aufbau der Struktur T_IBS_WIN_NOTIFY: type P_IBS_WIN_NOTIFY = ^T_IBS_WIN_NOTIFY; T_IBS_WIN_NOTIFY = record H_Wnd : HWND; msg : USIGN16; firstParam : USIGN16; secondParam : USIGN32; end; Zuordnung der Windows-Prozedurkomponenten zu den Komponenten der Struktur: WndProc( HWND hWnd; { HWND hWnd } WORD Message; { UINT msg } WORD wParam; { WPARAM firstParam } LONG lParam;) { LPARA MsecondParam } 4-10 5086A InterBus-S Funktionen zur Verwaltung des Notification-Modes DDI_ClrMsgNotification Aufgabe: Die Funktion deaktiviert den Notification-Mode für einen Datenkanal. Synopsis (C): INT16 DDI_ClrMsgNotification (INT16 nodeHd, T_IBS_WIN_NOTIFY FAR *notifyInfoPtr) Synopsis (Pascal): DDI_ClrMsgNotification (NodeHd : INT16;notifyInfoPtr: P_IBS_WIN_NOTIFY):INT16; Parameter: nodeHd Der Node-Handle ist die logische Nummer eines zuvor an der DDI-Schnittstelle geöffneten Kanals. Zeiger auf eine Datenstruktur vom Typ T_IBS_WIN_NOTIFY (siehe unten). m *notifyInfoPtr hWnd Geben Sie zur Kontrolle mit dem Windows-Handle das Windows-Fenster an, das Sie beim Aktivieren des Notification-Modes für diesen Datenkanal verwendet haben. Vom Anwender für die Nachricht zu vergebender Message-Code. erster optionaler Parameter zweiter optionaler Parameter s. Strukturelemente: co T_IBS_WIN_NOTIFY: Datenstruktur mit den zum Deaktivieren der Notification-Funktion nowendigen Elementen. nt msg po ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. om positive Quittung: ne firstParam secondParam in ec negative Quittung: allgemeiner DDI-Error-Code Ursache Siehe Beschreibung der Fehlermeldungen des DDI. negative Quittung: ERR_INVLD_NODE_HD (0085hex) Ursache Sie haben einen falschen Node-Handle angegeben. on l negative Quittung: ERR_INVLD_HWND (00D1hex) Ursache Sie haben einen ungültigen Windows-Handle angegeben. Abhilfe Verwenden Sie beim Deaktivieren des Notification-Modes die gleichen Parameter (nodeHd, hWnd ), die auch beim Aktivieren des Notification-Modes verwendet wurden. Bemerkung 5086A Bei Angabe eines falschen Node- oder Windows-Handles wird der NotificationMode nicht deaktiviert. Die Parameter msg, firstParam und secondParam werden nicht überprüft. 4-11 InterBus-S Ergänzungen zur Treibersoftware für Windows DDI_ClrMsgNotification in der Programmiersprache „C“ Aufrufsyntax: INT16 DDI_ClrMsgNotification( INT16 nodeHd, /* IN: node-handle*/ T_IBS_WIN_NOTIFY FAR *notifyInfoPtr); /* IN: pointer to WIN-notifystructure */ Aufbau der Struktur T_IBS_WIN_NOTIFY: typedef struct { HWND hWnd; */ */ */ */ co m /* Handle des Zielfensters der Nachricht UINT msg; /* Message Code der Nachricht WPARAM firstParam; /* Erster Parameter (wParam) LPARAM secondParam; /* Zweiter Parameter (lParam) } T_IBS_WIN_NOTIFY; po ne nt s. Zuordnung der Windows-Prozedurkomponenten zu den Komponenten der Struktur: WndProc( HWND hWnd; /* HWND hWnd */ WORD Message; /* UINT msg */ WORD wParam; /* WPARAM firstParam */ LONG lParam;) /* LPARA MsecondParam */ DDI_ClrMsgNotification in der Programmiersprache Pascal in ec om Aufrufsyntax: DDI_ClrMsgNotification( NodeHd : INT16; notifyInfoPtr : P_IBS_WIN_NOTIFY) { IN: node-handle } { IN: pointer to WIN-notifystructure } on l :INT16; Aufbau der Struktur T_IBS_WIN_NOTIFY: type P_IBS_WIN_NOTIFY = ^T_IBS_WIN_NOTIFY; T_IBS_WIN_NOTIFY = record H_Wnd : HWND; msg : USIGN16; firstParam : USIGN16; secondParam : USIGN32; end; Zuordnung der Windows-Prozedurkomponenten zu den Komponenten der Struktur: WndProc( HWND hWnd; { HWND hWnd } WORD Message; { UINT msg } WORD wParam; { WPARAM firstParam } LONG lParam;) { LPARA MsecondParam } 4-12 5086A InterBus-S Funktionen zur Kontrolle der Hardware 4.7.3 Funktionen zur Kontrolle der Hardware Zur Kontrolle der Hardware stehen, bis auf die Funktionen für die Watchdogs, ebenfalls die unter DOS beschriebenen Funktionen zur Verfügung. Deklaration der für Microsoft Windows® zur Verfügung stehenden Kontroll-Funktionen Im Unterschied zur Treibersoftware für DOS sind die DDI-Funktionen der Treibersoftware für Microsoft Windows® in der DLL IBSPCCB.DLL als FAR PASCAL deklariert, um eine Nutzung dieser DLL mit verschiedenen Programmiersprachen zu ermöglichen. Die Funktionen für Microsoft Windows® sind folgendermaßen deklariert: co m INT16 FAR PASCAL GetDIPSwitch(USIGN16 boardNumber, USIGN16 FAR *dataPtr) INT16 FAR PASCAL GetSysFailRegister(USIGN16 boardNumber, USIGN16 FAR *sysFailRegPtr) INT16 FAR PASCAL GetIBSDiagnostic(USIGN16 boardNumber, T_IBS_DIAG FAR *infoPtr) nt s. Diese Funktionen sind, bis auf die Deklaration, mit der Treibersoftware für DOS identisch und werden im Kapitel 2 (C) und Kapitel 3 (Pascal) beschrieben. Die zu übergebenden Parameter entsprechen den dortigen Beschreibungen. po ne Da unter Windows selbst im fehlerfreien Betrieb nicht sicherzustellen ist, daß in ausreichenden kurzen Zeitabständen (<146ms) der Watchdog getriggert wird, wurde auf die Watchdog-Funktionen (EnableWatchDog, TriggerWatchDog, ClearWatchDog und GetWatchDogState) verzichtet. in ec om Die Einbindung der oben aufgeführten Funktionen in ein eigenes Programm kann über die Import-Liste in der DEF-Datei des Anwendungsprogramms oder die mitgelieferte Import-Library (IBSPCCB.LIB) erfolgen. Die in der DEF-Datei notwendigen Einträge sind: on l IMPORTS DDI_DevOpenNode=ibspccb.2 DDI_DevCloseNode=ibspccb.3 DDI_DTI_WriteData=ibspccb.4 DDI_DTI_ReadData=ibspccb.5 DDI_MXI_SndMessage=ibspccb.6 DDI_MXI_RcvMessage=ibspccb.7 DDI_SetMsgNotification=ibspccb.8 DDI_ClrMsgNotification=ibspccb.9 GetIBSDiagnostic=ibspccb.10 GetSysFailRegister=ibspccb.11 GetDIPSwitch=ibspccb.12 5086A 4-13 InterBus-S Ergänzungen zur Treibersoftware für Windows 4.8 Nutzung der Treibersoftware mit C++ Eine Nutzung der Treibersoftware für Windows ist auch mit C++ möglich. Dabei ist lediglich zu berücksichtigen, daß die Include-Dateien mit extern "C" eingebunden werden. Andernfalls kann die Applikation nicht gelinkt werden. Bsp.: on l in ec om po ne nt s. co m extern "C" { #include ibs_win.h" } 4-14 5086A Kapitel 5 Ergänzungen zur Treibersoftware für OS/2® Dieses Kapitel informiert Sie über ne nt s. Struktur der Treibersoftware auf dem Host (PC) Notification-Mode unter OS/2 . . . . . . . . Library und Include-Dateien für OS/2 . . . . . CONFIG.SYS unter OS/2 . . . . . . . . . Compileroptionen . . . . . . . . . . . . Funktionen für OS/2 . . . . . . . . . . . Funktionen des Device-Driver-Interfaces . . . Funktionen zur Verwaltung des Blocked-Modes Funktionen zur Kontrolle der Hardware . . . . Nutzung der Treibersoftware mit C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3 5-3 5-5 5-6 5-7 5-8 5-8 5-10 5-13 5-14 on l in ec om 5.1 5.2 5.3 5.4 5.5 5.6 5.6.1 5.6.2 5.6.3 5.7 . . . . . . . . . . . . . . . . 5-3 co Ergänzungen zur Treibersoftware für OS/2 po 5 m - Die Realisierung von Device-Driver-Interface und Device-Driver für OS/2. - Die zu verwendenden Funktionen - Die benötigten Include-Dateien und Libraries. 5086A 5-1 5-2 5086A s. nt ne po om in ec on l co m InterBus-S Ergänzungen zur Treibersoftware für OS/2 5 Ergänzungen zur Treibersoftware für OS/2 5.1 Struktur der Treibersoftware auf dem Host (PC) Das Device-Driver-Interface für IBM OS/2® ist als Dynamic-Link-Library (DLL) ausgeführt (IBSPCCB.DLL). Die Device-Driver sind für OS/2 als OS/2-DeviceDriver realisiert. PC Anwenderprogramm m Dynamic-Link-Library OS/2 Device-Driver OS/2 Device-Driver MPM MPM MPM OS/2 Device-Driver MA COP MA COP MA 5086A501 Realisierung der IBS-Treibersoftware für IBM OS/2 om Bild 5-1: COP ne MA MPM po COP nt s. OS/2 Device-Driver co OS/2 API OS/2 Kernel in ec Für jedes Anschaltbaugruppe muß ein OS/2-Device-Driver installiert werden! Dazu ist jeweils ein Eintrag in der Datei CONFIG.SYS Ihres OS/2-Systems erforderlich. Die Installation der Device-Driver ist im Handbuch IBS PC CB UM (Artikel-Nr. 27 54 74 9) im Kapitel 4 (Einbau und Parametrierung) beschrieben. on l 5.2 Notification-Mode unter OS/2 Blocked-Mode 5086A Als Notification-Mode kann unter OS/2 der Blocked-Mode genutzt werden. Der Blocked-Mode ermöglicht es, einen Thread des Anwenderprogramms auf das Eintreffen einer Nachricht (z.B. Meldung des IBS-Masterboards) warten zu lassen. Während der Wartezeit befindet sich der Thread im Zustand Sleep, das heißt es wird keine Prozessorzeit "verschwendet". Dies bedeutet für einen Thread, der zyklisch die Funktion DDI_MXI_RcvMessage aufruft, daß er sich unter Verwendung des Blocked-Mode im Zustand Sleep befindet falls keine Nachricht im MPM vorhanden ist. 5-3 InterBus-S Ergänzungen zur Treibersoftware für OS/2 PC Anwenderprogramm 1 5 Thread (Run) 4 MPM s. (Multi-Port-Memory) co 3 m Thread (Sleep) nt 2 5086A502 Blocked-Mode unter OS/2 om Bild 5-2: po Anschaltbaugruppe ne MA/COP on l in ec Funktionsweise des Blocked-Mode unter OS/2®: 1 Das Anwenderprogramm startet einen Thread, in dem die Funktion DDI_MXI_RcvMessage aufgerufen wird. Falls im Moment keine Nachricht im MPM vorliegt schläft der Thread ein und beschäftigt den Prozessor nicht weiter. 2 Das IBS-Masterboard (MA) oder das Coprozessorboard (COP) stellen eine Nachricht ins Multi-Port-Memory (MPM). 3 Das Eintreffen der Nachricht im MPM verursacht einen Interrupt, der den schlafenden Thread aufweckt und wieder in den Zustand Run setzt. 4 Der Thread holt mit der Funktion DDI_MXI_RcvMessage die Nachricht aus dem MPM. 5 Die Funktion DDI_MXI_RcvMessage kehrt mit der Nachricht zurück. Das Anwenderprogramm startet den Thread nach Übernahme der Nachricht sofort wieder. Der Thread holt so mit der Funktion DDI_MXI_RcvMessage alle vorhandenen Meldungen aus dem MPM ab. Sobald keine weitere Meldung mehr vorhanden ist fällt der Thread wieder in den Zustand Sleep. Mit der Funktion DDI_SetMsgNotification (siehe Funktionsbeschreibung) wird der Blocked-Mode aktiviert. Sie können den Blocked-Mode für jeden MPM-Teilnehmer getrennt aktivieren bzw. deaktivieren. Falls Sie versuchen, einen Prozeß zu beenden, solange sich ein Thread dieses Prozesses noch im Zustand Sleep befindet, hängt sich an dieser Stelle Ihr Anwenderprogramm auf. Deaktivieren Sie, um dies zu verhindern, für diesen Node 5-4 5086A InterBus-S Library und Include-Dateien für OS/2 zuvor den Blocked-Mode mit der Funktion DDI_ClrMsgNotification. Der Thread kehrt jetzt ohne eine Nachricht mit der Fehlermeldung ERR_NO_MSG zurück. Er wird dann sofort neu gestartet. Da dieser Start nicht im Blocked-Mode erfolgt, schläft der Thread, wenn keine Nachricht im MPM vorliegt, nicht mehr ein! Damit der Thread nach Deaktivieren des Blocked-Mode nicht andauernd zyklisch nach eingetroffenen Messages pollt, müssen Sie ihn beenden. 5.3 Library und Include-Dateien für OS/2 co m Zum Betrieb der Anschaltbaugruppe unter IBM OS/2 wird nur eine DynamicLink-Library (DLL) benötigt. In dieser 32-Bit- DLL (IBSPCCB.DLL) sind die gleichen DDI-Funktionen deklariert, welche auch die Treibersoftware für DOS zur Verfügung stellt. Zusätzlich wurden zwei Funktionen zur Meldung des Eintreffens von Nachrichten im Mailbox-Interface integriert (DDI_SetMsgNotification, DDI_ClrMsgNotification). ne nt s. Sie können die Funktionen der IBSPCCB.DLL über die IMPORTS-Liste der DEF-Datei oder über die mitgelieferte IMPORT-Library dem Anwenderprogramm zuführen. Die Einträge in die DEF-Datei eines OS/2-Programmes stellen sich folgendermaßen dar: on l in ec om po IMPORTS IBSPCCB.DDI_DevOpenNode IBSPCCB.DDI_DevCloseNode IBSPCCB.DDI_DTI_WriteData IBSPCCB.DDI_DTI_ReadData IBSPCCB.DDI_MXI_SndMessage IBSPCCB.DDI_MXI_RcvMessage IBSPCCB.DDI_SetMsgNotification IBSPCCB.DDI_ClrMsgNotification IBSPCCB.GetIBSDiagnostic IBSPCCB.GetDIPSwitch IBSPCCB.GetSysFailRegister Kopieren Sie die DLL IBSPCCB.DLL, wie unter OS/2 üblich, in das Verzeichnis, in dem sich Ihr Anwenderprogramm befindet, oder in das Verzeichnis OS2\DLL. Include-Datei Um eine einfache Handhabung der Include-Dateien zu gewährleisten, ist es bei Treibersoftware-Version 0.9 nur notwendig, die Include-Datei IBS_OS2.H einzubinden. Aus dieser Include-Datei werden alle weiter benötigten Include-Dateien aufgerufen. Sie können aber auch die benötigten Include-Dateien einzeln aufrufen. Bei Verwendung der Include-Datei IBS_OS2.H ist es außerdem nicht notwendig, von Hand Compiler-Switches im Programm bzw. in der Kommandozeile des Compilers einzutragen. Die notwendige Konstanten-Deklaration (IBS_OS2_DRV) erfolgt dann innerhalb von IBS_OS2.H. 5086A 5-5 InterBus-S Ergänzungen zur Treibersoftware für OS/2 Tabelle 5-1: Library und Include-Dateien DLL IBSPCCB.DLL Include-Datei IBS_OS2.H (ruft STDTYPES.H, COMPILER.H, IBS_CM.H, DDI_USR.H, DDI_ERR.H, DDI_LIB.H, PC_UTIL.H und DDI_MACR.H auf) Die Include-Datei DDI_MACR.H ermöglicht die Nutzung der im Kapitel 7 beschriebenen Makrofunktionen. Die Makros sind in dieser Datei definiert. co m Falls Sie IBS_OS2.H nicht verwenden möchten und die benötigten Include-Dateien einzeln im Programm aufrufen, müssen Sie vor dem Einbinden der Include Dateien die Anweisung #define IBS_OS2_DRV einfügen. Dies kann entweder im Programmtext oder als Compileroption erfolgen. po oder /O+ /DIBS_OS2_DRV ... om icc /C+ nt ne #define IBS_OS2_DRV #include "stdtypes.h" #include "ddi_usr.h" ... s. Beispiele: in ec 5.4 CONFIG.SYS unter OS/2 Die OS/2-Device-Driver für die Anschaltbaugruppen müssen beim Starten des Hosts (PC) geladen werden. Tragen Sie dazu für jede Anschaltbaugruppe (maximal vier) einen OS/2-Device-Driver in die Datei CONFIG.SYS ihres Hosts ein. on l Bei mehreren Anschaltbaugruppen (im Beispiel 3) können die Einträge z.B. so aussehen: DEVICE=OS2_IBS.DRV DEVICE=OS2_IBS.DRV BN= 2 IO=120 MPM=D100 IRQ=11 DEVICE=OS2_IBS.DRV BN= 3 IO=120 MPM=D200 IRQ=12 Da im Beispiel für den ersten Treiber keine Parameter angegeben sind, werden hier automatisch folgende Standardwerte verwendet: DEVICE=OS2_IBS.DRV BN= 1 IO=120 MPM=D000 IRQ=15 Die verwendeten Parameterwerte werden beim Laden des Treibers angezeigt. 5-6 5086A InterBus-S Compileroptionen Die einzelnen Parameter haben dabei folgende Bedeutung: on l in ec om po ne nt s. co m OS2_IBS.DRV: Dies ist der Name des eigentlichen Treibers. Geben Sie den kompletten Pfad an, falls sich der Treiber nicht im OS/2-Wurzelverzeichnis befindet. BN=1: Die Board-Number (BN) gibt an, für welche Anschaltbaugruppe der Treiber geladen werden soll. Der Standardwert ist 1, d.h. falls der Treiber für die Anschaltbaugruppe Nr.1 (einstellbar über DIP-Schalter) geladen werden soll, braucht der Parameter BN=1 nicht angegeben werden. Gültige Werte für die Board-Number sind 1, 2, 3 und 4. IO=120: Dieser Parameter steht für die IO-Adresse, unter der die Anschaltbaugruppe im IO-Adressbereich des PCs angesprochen werden kann. Die IO-Adresse ist ebenfalls an den DIPSchaltern einzustellen. Stimmt die dort eingestellte Adresse nicht mit der angebenen Adresse überein, wird die Initialisierung des Boards abgebrochen und eine Fehlermeldung ausgegeben. Der Standardwert hierfür ist 120hex. Hinweise zu alternativen IO-Adressen können Sie dem Handbuch IBS PC CB UM entnehmen. MPM=D000: Dieser Parameter steht für die Adresse im Speicherbereich des PC unter dem die Anschaltbaugruppe zu finden ist. Die Anschaltbaugruppe belegt dort einen Adreßbereich von 4 KBytes. Dieser Bereich darf nicht bereits von anderen Karten belegt sein. Eine Überprüfung findet nicht statt. Der Standardwert ist D000hex. Hinweise zu alternativen Adressen können Sie dem Handbuch IBS PC CB UM entnehmen. IRQ=15: Vergeben Sie für jede Anschaltbaugruppe einen freien Interrupt des PCs. OS/2 gestattet es auf dem ISA-Bus nicht, daß ein Interrupt von mehreren Anschaltbaugruppen verwendet wird. Achten Sie darauf, daß der verwendete Interrupt nicht bereits belegt ist. Andernfalls wird die Initialisierung abgebrochen und eine Fehlermeldung (Error at SetIRQ) ausgegeben. Der Standardwert für den Interrupt ist 15. Hinweise zu alternativen Interrupts können Sie dem Handbuch IBS PC CB UM entnehmen. Falls Sie die Angabe eines Parameters unterlassen, wird für diesen Parameter automatisch der Standardwert verwendet. 5.5 Compileroptionen Achten Sie bei der Nutzung der DDI- und der Hilfsfunktionen darauf, daß die DLL IBSPCCB.DLL bei ihrer Erstellung mit der Compileroption /Sp1 (Byte Alignment) übersetzt wurde. Nachfolgend sind alle dabei für den Anwender relevanten Compileroptionen aufgeführt: /Gm+ /Se /Sp1 /Mp 5086A Use multithread libraries Allow all c Set/2 language extensions except migrations Byte alignment Use optlink linkage for functions 5-7 InterBus-S Ergänzungen zur Treibersoftware für OS/2 5.6 Funktionen für OS/2 Tabelle 5-2: Übersicht über die DDI-Funktionen für OS/2 Aufgabe Seite DDI_DevOpenNode Öffnet einen Datenkanal zu einem Node 5-9 DDI_DevCloseNode Schließt einen Datenkanal zu einem Node 5-9 DDI_MXI_SndMessage Schreibt eine Meldung in das MPM 5-9 DDI_MXI_RcvMessage Liest eine Meldung aus dem MPM 5-9 DDI_DTI_ReadData Liest Daten aus dem MPM 5-9 DDI_DTI_WriteData Schreibt Daten in das MPM 5-9 DDI_SetMsgNotification Aktiviert den Blocked-Mode für OS/2 DDI_ClrMsgNotification Deaktiviert den Blocked-Mode für OS/2 5-10 5-12 Tabelle 5-3: nt s. co m Funktion Übersicht über die Funktionen zur Kontrolle der Hardware Aufgabe COP_WriteStaticRAM Schreibt eine Anzahl von Bytes in das SRAM des COPs COP_ReadStaticRAM Liest eine Anzahl von Bytes aus dem SRAM des COPs * GetDIPSwitch Liest die Stellungen des DIP-Schalters zum Einstellen der Boot-Konfiguration aus 5-13 GetSysFailRegister Liest den Inhalt des SysFail-Registers aus 5-13 EnableWatchDog Schalten einen Watchdog ein 5-13 Triggert einen Watchdog 5-13 Liest den Status eines Watchdogs aus 5-13 ClearWatchDog Setzt den Status eines Watchdogs zurück. 5-13 GetIBSDiagnostic Wertet den Betriebszustand des IBS-Masterboards aus 5-13 po om in ec TriggerWatchDog ne Funktion on l GetWatchDogState Seite * * Dies sind Funktionen für das Coprozessorboard. Sie sind ausschließlich für die Verwendung unter den DOS-kompatiblen Betriebsystemen (RTXDOS, TDOS) des Coprozessorboards definiert und im Kapitel 2 beschrieben. 5.6.1 Funktionen des Device-Driver-Interfaces Die DDI-Funktionen für den Betrieb unter IBM OS/2® unterscheidenen sich nicht grundsätzlich von denen für den Betrieb unter DOS. Sie haben die gleiche Funktionalität und verwenden die gleichen Parameter. Abweichungen ergeben sich dadurch, daß es unter OS/2 möglich ist, einen Thread des Anwenderprogramms auf das Eintreffen einer Nachricht warten zu lassen. Hierzu steht der BlockedMode und spezielle Funktionen zur Verfügung. 5-8 5086A InterBus-S Funktionen des Device-Driver-Interfaces Deklaration der für IBM OS/2® zur Verfügung stehenden DDI-Funktionen Die DDI-Funktionen der Treibersoftware für OS/2 sind in der DLL IBSPCCB.DLL in der gleichen weise deklariert wie in der Treibersoftware für DOS. Der einzige Unterschied besteht darin, daß unter OS/2 auf die Angabe von Speichermodellen (z.B. FAR) verzichtet werden kann. INT16 INT16 INT16 INT16 INT16 INT16 DDI_DevOpenNode(CHAR *devName, INT16 perm, INT16 *nodeHd) DDI_DevCloseNode(INT16 nodeHd) DDI_DTI_WriteData(INT16 nodeHd, T_DDI_DTI_ACCESS *dtiAcc) DDI_DTI_ReadData(INT16 nodeHd, T_DDI_DTI_ACCESS *dtiAcc) DDI_MXI_SndMessage(INT16 nodeHd, T_DDI_MXI_ACCESS *mxiAcc) DDI_MXI_RcvMessage(INT16 nodeHd, T_DDI_MXI_ACCESS *mxiAcc) co m Diese Funktionen sind, bis auf die Deklaration, mit der Treibersoftware für DOS identisch und werden im Kapitel 2 beschrieben. Die zu übergebenden Parameter entsprechen den dortigen Beschreibungen. threadRcvMessage(void *ulp) mxiAcc; ne T_MXI_ACC nt void { s. Beispiel: po mxiAcc.msgLength = sizeof(rcvBuf); mxiAcc.msgBlk = rcvBuffer; om /* Solange Nachrichten lesen, bis von aussen signalisiert wird, dass/* /* keine weiteren Nachrichten abgeholt werden sollen. /* on l in ec while (stopRcvMsg == FALSE) { mxiAcc.msgLength = sizeof(rcvBuf); if ((ret = DDI_MXI_RcvMessage(nodeHd, &mxiAcc)) == ERR_OK) { /* Empfangene Nachricht an dieser Stelle auswerten /* und weitere Bearbeitung veranlassen. . . . } else { /* Fehler beim Empfang der Nachricht . . . } */ */ */ } _endthread(); } Tragen Sie in die Komponente msgLength der Struktur T_MXI_ACC die Länge des zur Verfügung gestellten Empfangspuffers ein! Der Treiber prüft mittels Betriebssystemaufrufen, ob der Speicher für den Empfangspuffer gültig ist und dem aufrufenden Prozeß gehört. Ist das nicht der Fall, wird das Programm mit einem OS/2 General Protection Fault beendet. 5086A 5-9 InterBus-S Ergänzungen zur Treibersoftware für OS/2 5.6.2 Funktionen zur Verwaltung des Blocked-Modes Zusätzlich sind zwei Funktionen zum Aktivieren und Deaktivieren des BlockedMode vorhanden: DDI_SetMsgNotification Die Funktion aktiviert den Blocked-Mode für einen Datenkanal. Voraussetzung: Der der Funktion ebenfalls übergebene Node-Handle (nodeHd) muß zu einem geöffneten Datenkanal des Mailbox-Interfaces gehören, andernfalls erfolgt eine allgemeine DDI-Fehlermeldung. Synopsis: DDI_SetMsgNotification(INT16 nodeHd, T_IBS_OS2_NOTIFY *infoPtr): Parameter: nodeHd m Aufgabe: co Der Node-Handle ist die logische Nummer eines zuvor an der DDI-Schnittstelle geöffneten Kanals. Zeiger auf eine Datenstruktur vom Typ T_IBS_OS2_NOTIFY (siehe unten). s. *infoPtr in ec om processId on l timeout positive Quittung: Initialisieren Sie das Strukturelement msgNotifyMode mit dem Wert IBS_BLOCKED_MODE um den Blocked-Mode zu aktivieren. Andere Werte sind momentan nicht zulässig. Das Strukturelement processId enthält den ProcessIdentifier des Prozesses, welcher den Blocked-Mode aktiviert. Der Prozeß-Identifier muß beim Aktivieren und Deaktivieren den gleichen Wert haben. Eine Ausnahme bildet der Wert Null (00000000hex) beim Deaktivieren. In diesem Fall wird der Blocked-Mode ohne weitere Überprüfungen für den entsprechenden Node deaktiviert. Tragen Sie in das Strukturelement timeout die Zeit (in Millisekunden) ein, welche ein Thread maximal auf eine Message warten soll. Trifft eine Nachricht vor Ablauf dieser Zeit ein, kehrt der Thread mit der Nachricht zurück. Andernfalls wird der Thread mit der Fehlermeldung ERR_BLOCK_TIMEOUT (00CBhex) beendet. ne msgNotifyMode po Strukturelemente: nt T_IBS_OS2_NOTIFY: Datenstruktur mit den zum Aktivieren des Blocked-Modes nowendigen Elementen ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. negative Quittung: allgemeiner DDI-Error-Code Ursache Siehe Beschreibung der Fehlermeldungen des DDI 5-10 5086A InterBus-S Funktionen zur Verwaltung des Blocked-Modes Aufrufsyntax: DDI_SetMsgNotification( INT16 nodeHd, T_IBS_OS2_NOTIFY *InfoPtr); /* IN: node-handle */ /* IN: pointer to OS2-notify-structure*/ */ */ */ on l in ec om po ne nt s. co m Aufbau der Datenstruktur T_IBS_OS2_NOTIFY: typedef struct { USIGN16 msgNotifyMode; /* Blocked-Mode USIGN32 processId; /* Process-Identifier USIGN32 timeout; /* Timeout in Millisekunden } T_IBS_OS2_NOTIFY; 5086A 5-11 InterBus-S Ergänzungen zur Treibersoftware für OS/2 DDI_ClrMsgNotification Aufgabe: Die Funktion deaktiviert den Blocked-Mode für einen Datenkanal. Synopsis: DDI_ClrMsgNotification(INT16 nodeHd, T_IBS_OS2_NOTIFY *infoPtr): Parameter: nodeHd Der Node-Handle ist die logische Nummer eines zuvor an der DDI-Schnittstelle geöffneten Kanals. Zeiger auf eine Datenstruktur vom Typ T_IBS_OS2_NOTIFY (siehe unten). *infoPtr T_IBS_OS2_NOTIFY: Datenstruktur mit den zum Deaktivieren des Blocked-Modes nowendigen Elementen. Initialisieren Sie das Strukturelement msgNotifyMode mit dem Wert IBS_BLOCKED_MODE um den BlockedMode zu deaktivieren. Andere Werte sind momentan nicht zulässig. Das Strukturelement processId enthält den ProcessIdentifier des Prozesses, welcher den Blocked-Mode deaktiviert. Der Prozeß-Identifier muß beim Aktivieren und Deaktivieren den gleichen Wert haben. Eine Ausnahme bildet der Wert Null (00000000hex) beim Deaktivieren. In diesem Fall wird der Blocked-Mode ohne weitere Überprüfungen für den entsprechenden Node deaktiviert. Dieser Parameter ist für die Funktion DDI_ClrMsgNotification ohne Bedeutung und wird nicht ausgewertet. m MsgNotifyMode co Strukturelemente: po ne nt s. ProcessId ERR_OK (0000hex) Bedeutung Die Funktion wurde erfolgreich ausgeführt. in ec positive Quittung: om Timeout negative Quittung: allgemeiner DDI-Error-Code Ursache Siehe Beschreibung der Fehlermeldungen des DDI on l negative Quittung: ERR_INVLD_NODE_HD (0085hex) Ursache Sie haben einen falschen Node-Handle angegeben negative Quittung: ERR_INVLD_Process-Identifier (00C0hex) Ursache Sie haben einen falschen Process-Identifier angegeben Abhilfe Verwenden Sie beim Deaktivieren des Blocked-Modes die gleichen Parameter (nodeHd, Process-Identifier), die auch beim Aktivieren des Blocked-Modes verwendet wurden. Bemerkung Bei Angabe eines falschen Node-Handles oder Process-Identifiers wird der Blocked-Mode nicht deaktiviert. Aufrufsyntax: DDI_ClrMsgNotification( INT16 nodeHd, /* IN: node-handle */ T_IBS_OS2_NOTIFY *notifyInfoPtr);/* IN: pointer to OS2-notify-structure*/ 5-12 5086A InterBus-S Funktionen zur Kontrolle der Hardware Aufbau der Datenstruktur T_IBS_OS2_NOTIFY : typedef struct { USIGN16 msgNotifyMode; /* Blocked-Mode USIGN32 processId; /* Process-Identifier USIGN32 timeout; /* Timeout in Millisekunden } T_IBS_OS2_NOTIFY; */ */ */ 5.6.3 Funktionen zur Kontrolle der Hardware m Zur Kontrolle der Hardware stehen ebenfalls die unter DOS beschriebenen Funktionen zur Verfügung. Der einzige Unterschied besteht darin, daß unter OS/2® auf die Angabe von Speichermodellen (z.B. FAR) verzichtet werden kann. co s. nt ne INT16 INT16 INT16 INT16 INT16 INT16 INT16 Deklaration der für IBM OS/2® zur Verfügung stehenden Kontroll-Funktionen GetIBSDiagnostic(USIGN16 boardNumber, T_IBS_DIAG *infoPtr) GetDIPSwitch(USIGN16 boardNumber, USIGN16 *dataPtr) GetSysFailRegister(USIGN16 boardNumber, USIGN16 *sysFailRegPtr) EnableWatchDog(USIGN16 boardNumber) TriggerWatchDog(USIGN16 boardNumber) GetWatchDogState(USIGN16 boardNumber) ClearWatchDog (USIGN16 boardNumber) om po Diese Funktionen sind, bis auf die Deklaration, mit der Treibersoftware für DOS identisch und werden im Kapitel 2 beschrieben. Die zu übergebenden Parameter entsprechen den dortigen Beschreibungen. in ec Die Funktionen zur Nutzung der Watchdogs werden für OS/2 erst ab Treiber-Version 0.91 unterstützt. on l Die Einbindung der oben aufgeführten Funktionen in ein eigenes Programm kann über die Import-Liste in der DEF-Datei des Anwendungsprogramms oder die mitgelieferte Import-Library (IBSPCCB.LIB) erfolgen. Die in der DEF-Datei notwendingen Einträge sind: IMPORTS DDI_DevOpenNode=ibspccb.2 DDI_DevCloseNode=ibspccb.3 DDI_DTI_WriteData=ibspccb.4 DDI_DTI_ReadData=ibspccb.5 DDI_MXI_SndMessage=ibspccb.6 DDI_MXI_RcvMessage=ibspccb.7 DDI_SetMsgNotification=ibspccb.8 DDI_ClrMsgNotification=ibspccb.9 GetIBSDiagnostic=ibspccb.10 GetSysFailRegister=ibspccb.11 GetDIPSwitch=ibspccb.12 5086A 5-13 InterBus-S Ergänzungen zur Treibersoftware für OS/2 5.7 Nutzung der Treibersoftware mit C++ Eine Nutzung der Treibersoftware für OS/2 ist auch mit C++ möglich. Dabei ist lediglich zu berücksichtigen, daß die Include-Dateien mit extern "C" eingebunden werden. Andernfalls kann die Applikation nicht gelinkt werden. Beispiel: on l in ec om po ne nt s. co m extern "C" { #include ibs_os2.h" } 5-14 5086A Kapitel 6 Makros zur Programmierunterstützung Dieses Kapitel informiert Sie über Makros, s. Makros zur Datenkonvertierung . . . . . . . . . . . . . Makros zur Konvertierung des Datenblocks eines Kommandos Makros zur Konvertierung des Datenblocks einer Meldung . . Makros zur Konvertierung von Eingangsdaten . . . . . . . Makros zur Konvertierung von Ausgabedaten . . . . . . . 6-3 6-5 6-7 6-8 6-10 on l in ec om po ne 6.1 6.1.1 6.1.2 6.1.3 6.1.4 co Makros zur Programmierunterstützung . . . . . . . . . . . . . . . . . . 6-3 nt 6 m - welche den Austausch von Datensätzen zwischen dem IBS-Masterboard (InterBus-S-Master-Protokoll-Chip) und dem Host oder Coprozessorboard (Intel-Prozessor) vereinfachen. 5086A 6-1 6-2 5086A s. nt ne po om in ec on l co m InterBus-S Makros zur Programmierunterstützung 6 Makros zur Programmierunterstützung 6.1 Makros zur Datenkonvertierung Die folgenden Makros (für Pascal Makro-Funktionen) vereinfachen die Übertragung von Daten (Kommandos, Meldungen, Prozeßdaten) zwischen Host oder Coprozessorboard auf der einen und dem IBS-Masterboard auf der anderen Seite. co m - Der InterBus-S-Master-Protokoll-Chip (IPMS) der Anschaltbaugruppe legt seine Daten im Motorola-Format (68xxx-Familie) in das MPM und erwartet dieses Format auch beim Lesen. - Die Prozessoren des Hosts und des COPs verarbeiten Daten im für IBMkompatible PCs typischen Intel-Format. ne nt s. Die Numerierung von Worten und Bytes innerhalb eines Datenfeldes geschieht bei diesen Formaten entgegengesetzt. Die Makros konvertieren die Daten zwischen Motorola- und Intel-Format und schreiben sie in die angegebenen Puffer, so daß Sie sich z.B. auf einfache Weise ein Prozeßabbild im Intel-Format erstellen können. Makros für Kommandos in ec Puffer für Kommandos und Meldungen om Anwenderprogramm Makros für Meldungen on l IN TE L F o rm a t Prozeßabbild IN TE L F o rm a t Anschaltbaugruppe po Host/Coprozessorboard Sendepuffer MOTOROLA Format Empfangspuffer MOTOROLA Format IBSMasterboard DDI_MXI_ SndMessage DDI_MXI_ RCVMessage MPM MOTOROLA Format Makros für Ausgabedaten Makros für Eingangsdaten Ausgangspuffer MOTOROLA Format Eingangspuffer MOTOROLA Format DDI_DTI_ WriteData DDI_DTI_ ReadData 5086A701 Bild 6-1: 5086A Verwendung der Makros zur Datenkonvertierung 6-3 InterBus-S Makros zur Programmierunterstützung Tabelle 6-1: Übersicht über die Makros zur Datenkonvertierung Aufgabe Seite IB_SetCmdCode Trägt den Command-Code (16 Bit) in den angegebenen Sendepuffer ein 6-5 IB_SetParaCnt Trägt den Parameter-Zähler (16 Bit) in den angegebenen Sendepuffer ein 6-5 IB_SetParaN Trägt einen Parameter (16 Bit) in den angegebenen Sendepuffer ein 6-6 IB_SetParaNHiByte Trägt das höherwertige Byte (Bit 8 bis 15) eines Parameters in den angegebenen Sendepuffer ein 6-6 IB_SetParaNLoByte Trägt das niederwertige Byte (Bit 0 bis 7) eines Parameters in den angegebenen Sendepuffer ein 6-8 IB_SetBytePtrHiByte Liefert die Adresse, beginnend ab dem höchstwertigen Byte (Bit 8 bis 15), eines Parametereintrages zurück IB_SetBytePtrLoByte Liefert die Adresse, beginnend ab dem niederwertigen Byte (Bit 0 bis 7), eines Parametereintrages zurück 6-6 IB_GetMsgCode Liest einen Meldungs-Codes (16 Bit) aus dem angegebenen Empfangspuffer 6-7 IB_GetParaCnt Liest den Parameter-Zähler (16 Bit) aus dem angegebenen Empfangspuffer 6-7 IB_GetParaN Liest einen Parameter (16 Bit) aus dem angegebenen Empfangspuffer 6-7 IB_GetParaNHiByte Liest das höherwertige Byte (Bit 8 bis 15) eines Parameters aus dem angegebenen Empfangspuffer 6-7 in ec om po ne nt s. co m Makro 6-6 Liest das niederwertige Byte (Bit 0 bis 7) eines Parameters aus dem angegebenen Empfangspuffer 6-8 IB_GetBytePtrHiByte Liefert die Adresse, beginnend ab dem höchstwertigen Byte (Bit 8 bis 15), eines Parametereintrages zurück 6-8 IB_GetBytePtrLoByte Liefert die Adresse, beginnend ab dem niederwertigen Byte (Bit 0 bis 7), eines Parametereintrages zurück 6-8 IB_PD_GetLongDataN Liest ein Langwort (32 Bit) an der angebenen Position aus dem Eingangspuffer 6-8 IB_PD_GetDataN Liest ein Wort (16 Bit) an der angegebenen Position aus dem Eingangspuffer 6-9 IB_PD_GetDataNHiByte Liest das höherwertige Byte (Bit 8 bis 15) eines Worts aus dem Eingangspuffer 6-9 IB_PD_GetDataNLoByte Liest das niederwertige Byte (Bit 0 bis 7) eines Worts aus dem Eingangspuffer 6-9 IB_PD_GetBytePtrHiByte Liefert die Adresse, beginnend ab dem höchstwertigen Byte (Bit 8 bis 15), eines Wortes zurück 6-9 IB_PD_GetBytePtrLoByte Liefert die Adresse, beginnend ab dem niederwertigen Byte (Bit 0 bis 7), eines Wortes zurück 6-9 on l IB_GetParaNLoByte 6-4 5086A InterBus-S Makros zur Konvertierung des Datenblocks eines Kommandos Tabelle 6-1: Übersicht über die Makros zur Datenkonvertierung Aufgabe Seite IB_PD_SetLongDataN Schreibt ein Langwort (32 Bit) in den Ausgangspuffer 6-10 IB_PD_SetDataN Schreibt ein Wort (16 Bit) in den Ausgangspuffer 6-10 IB_PD_SetDataNHiByte Schreibt das höherwertige Byte (Bit 8 bis 15) eines Wortes in den Ausgangspuffer 6-10 IB_PD_SetDataNLoByte Schreibt das niederwertige Byte (Bit 0 bis 7) eines Wortes in den Ausgangspuffer 6-10 IB_PD_SetBytePtrHiByte Liefert die Adresse, beginnend ab dem höchstwertigen Byte (Bit 8 bis 15), eines Wortes zurück 6-11 IB_PD_SetBytePtrLoByte Liefert die Adresse, beginnend ab dem niederwertigen Byte (Bit 0 bis 7), eines Wortes zurück 6-11 co m Makro nt s. Die Makros sind in den Device-Driver-Interfaces für die verschiedenen Betriebsysteme und Compiler so definiert, daß Sie universell verwendet werden können. po ne Die jeweils für die Nutzung der Makros erforderlichen Include-Dateien und Libraries bzw. Units werden in den Kapiteln 2, 3, 4 und 5 beschrieben. 6.1.1 Makros zur Konvertierung des Datenblocks eines Kommandos om IB_SetCmdCode(n, m) Dieses Makro konvertiert einenen Kommando-Code (16 Bit) in das MotorolaFormat und trägt ihn in den angegebenen Sendepuffer ein. n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Sendepuffer Einzutragender Command-Code on l Parameter: in ec Aufgabe: IB_SetParaCnt(n, m) Aufgabe: Parameter: 5086A Dieses Makro konvertiert den Parameter-Zähler (16 Bit) in das Motorola-Format und trägt ihn in den angegebenen Sendepuffer ein. Der Aufruf wird nur benötigt, wenn es sich um ein Kommando mit Parametern handelt. Der Parameter-Zähler gibt die Anzahl der nachfolgenden Parameter in Worten an. n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Sendepuffer Einzutragender Parameter-Zähler 6-5 InterBus-S Makros zur Programmierunterstützung IB_SetParaN(n, m, o) Aufgabe: Dieses Makro konvertiert einen Parameter(16 Bit) in das Motorola-Format und trägt ihn in den angegebenen Sendepuffer ein. Der Aufruf wird nur benötigt, wenn es sich um ein Kommando mit Parametern handelt. Parameter: n(USIGN8 FAR *): m(USIGN16): o(USIGN16): Zeiger auf den Sendepuffer Parameter-Nr. (Wort-Nr.) Einzutragender Parameterwert IB_SetParaNHiByte(n, m, o) Dieses Makro konvertiert das höherwertige Byte (Bit 8 bis 15) eines Parameters in das Motorola-Format und trägt es in den angegebenen Sendepuffer ein. (siehe auch IB_SetParaN). Parameter: n(USIGN8 FAR *): m(USIGN16): o(USIGN8): m Aufgabe: s. co Zeiger auf den Sendepuffer Parameter-Nr. (Wort-Nr.) Einzutragender Parameter (Byte) nt IB_SetParaNLoByte(n, m, o) Dieses Makro konvertiert das niederwertige Byte (Bit 0 bis 7) eines Parameters in das Motorola-Format und trägt es in den angegebenen Sendepuffer ein. (siehe auch IB_SetParaN) Parameter: n(USIGN8 FAR *): m(USIGN16): o(USIGN8): om po ne Aufgabe: Zeiger auf den Sendepuffer Parameter-Nr. (Wort-Nr.) Einzutragender Parameter (Byte) in ec IB_SetBytePtrHiByte(n, m) Dieses Makro liefert die Adresse, beginnend ab dem höchstwertigen Byte (Bit 8 bis 15), eines Parametereintrages zurück. Die Adresse ist vom Datentyp USIGN8 FAR *. on l Aufgabe: Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Sendepuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8 FAR *): Adresse des höherwertigen Bytes des Parameters im Sendepuffer. IB_SetBytePtrLoByte(n, m) Aufgabe: Dieses Makro liefert die Adresse, beginnend ab dem niederwertigen Byte (Bit 0 bis 7), eines Parametereintrages zurück. Die Adresse ist vom Datentyp USIGN8 FAR *. Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Sendepuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8 FAR *): Adresse des niederwertigen Bytes des Parameters im Sendepuffer 6-6 5086A InterBus-S Makros zur Konvertierung des Datenblocks einer Meldung 6.1.2 Makros zur Konvertierung des Datenblocks einer Meldung IB_GetMsgCode(n) Aufgabe: Dieses Makro liest einen Meldungs-Code (16 Bit) aus dem angegebenen Empfangspuffer und konvertiert ihn in das Intel-Format. Parameter: n(USIGN8 FAR *): Zeiger auf den Empfangspuffer Rückgabewert: (USIGN16): Message-Code IB_GetParaCnt(n) Dieses Makro liest den Parameter-Zähler (16 Bit) aus dem Datenblock der Meldung aus und konvertiert ihn in das Intel-Format. Der Parameter-Zähler gibt die Anzahl der nachfolgenden Parameter in Worten an. Parameter: n(USIGN8 FAR *): Zeiger auf den Empfangspuffer Rückgabewert: (USIGN16): Parameter-Zähler Bemerkung: Lesen Sie den Parameter-Zähler nur für die Meldungen aus, die auch Parameter besitzen. po IB_GetParaN(n, m) ne nt s. co m Aufgabe: Dieses Makro liest einen Parameterwert (16 Bit) aus dem Datenblock der Meldung aus und konvertiert ihn in das Intel-Format. Parameter: n(USIGN8 FAR *): m(USIGN16): (USIGN16): Zeiger auf den Empfangspuffer Parameter-Nr. (Wort-Nr.) Parameterwert Lesen Sie nur für die Meldungen Parameter aus, die auch Parameter besitzen. on l Bemerkung: in ec Rückgabewert: om Aufgabe: IB_GetParaNHiByte(n, m) Aufgabe: Dieses Makro liest das höherwertige Byte (Bit 8 bis 15) eines Parameters aus dem angegebenen Empfangspuffer und konvertiert es in das Intel-Format. Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Empfangspuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8): Parameterwert (Byte) Bemerkung: Lesen Sie nur für die Meldungen Parameter aus, die auch Parameter besitzen. 5086A 6-7 InterBus-S Makros zur Programmierunterstützung IB_GetParaNLoByte(n, m) Aufgabe: Dieses Makro liest das das niederwertige Byte (Bit 0 bis 7) eines Parameters aus dem angegebenen Empfangspuffer und konvertiert es in das Intel-Format. Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Empfangspuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8): Parameterwert (Byte) Bemerkung: Lesen Sie nur für die Meldungen Parameter aus, die auch Parameter besitzen. IB_GetBytePtrHiByte(n, m) Dieses Makro liefert die Adresse, beginnend ab dem höchstwertigen Byte (Bit 8 bis 15), eines Parametereintrages zurück. co m Aufgabe: Die Adresse ist vom Datentyp USIGN8 FAR *. n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Empfangspuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8 FAR *): Adresse des höherwertigen Bytes eines Parameters im Empfangspuffer. ne nt s. Parameter: po IB_GetBytePtrLoByte(n, m) Dieses Makro liefert die Adresse, beginnend ab dem niederwertigen Byte (Bit 0 bis 7), eines Parametereintrages zurück. om Aufgabe: Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Empfangspuffer Parameter-Nr. (Wort-Nr.) (USIGN8 FAR *): Adresse des niederwertigen Bytes eines Parameters im Empfangspuffer. on l Rückgabewert: in ec Die Adresse ist vom Datentyp USIGN8 FAR *. 6.1.3 Makros zur Konvertierung von Eingangsdaten In der Datei IBS_MACR.H stehen Makros zur Konvertierung von Langworten, Worten und Bytes vom Motorola- in das Intel-Format zur Verfügung. Die Adressierung ist dabei in jedem Fall wortorientiert. IB_PD_GetLongDataN(n, m, o) Aufgabe: Dieses Makro liest ein Langwort (32 Bit) an der angebenen Position aus dem Eingangspuffer und konvertiert es in das Intel-Format. Als Position wird der Wortindex innerhalb des Eingangspuffers verwendet. Das Makro liest somit das Langwort ab der angegebenen Wort-Adresse über zwei Worte. Parameter : n (USIGN8 FAR *) m (USIGN16) o (USIGN32) 6-8 Zeiger auf den Eingangspuffer Parameter-Nr. (Wort-Nr.) Prozeßdatum (32 Bit) 5086A InterBus-S Makros zur Konvertierung von Eingangsdaten IB_PD_GetDataN(n, m) Aufgabe: Dieses Makro liest ein Wort (16 Bit) an der angegebenen Position aus dem Eingangspuffer und konvertiert es in das Intel-Format. Parameter: n(USIGN8 FAR *): m(USIGN16): Rückgabewert: (USIGN8):Prozeßdatum (16 Bit) Zeiger auf den Eingangspuffer Parameter-Nr. (Wort-Nr.) IB_PD_GetDataNHiByte(n, m) Dieses Makro liest das höherwertige Byte (Bit 8 bis 15) eines Worts aus dem Eingangspuffer und konvertiert es in das Intel-Format. Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Eingangspuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8): Prozeßdatum (8 Bit) s. co m Aufgabe: nt IB_PD_GetDataNLoByte(n, m) Dieses Makro liest das niederwertige Byte (Bit 0 bis 7) eines Worts aus dem Eingangspuffer und konvertiert es in das Intel-Format. Parameter: n(USIGN8 FAR *): m(USIGN16): Rückgabewert: (USIGN8): ne Aufgabe: om po Zeiger auf den Eingangspuffer Parameter-Nr. (Wort-Nr.) Prozeßdatum (8 Bit) Aufgabe: in ec IB_PD_GetBytePtrHiByte(n, m) Dieses Makro liefert die Adresse, beginnend ab dem höchstwertigen Byte (Bit 8 bis 15), eines Wortes zurück. n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Eingangspuffer Parameter-Nr. (Wort-Nr.) (USIGN8 FAR *): Adresse des höherwertigen Bytes eines Wortes im Eingangspuffer. on l Parameter: Rückgabewert: IB_PD_GetBytePtrLoByte(n, m) Aufgabe: Dieses Makro liefert die Adresse, beginnend ab dem niederwertigen Byte (Bit 0 bis 7), eines Wortes zurück. Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Eingangspuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8 FAR *): Adresse des niederwertigen Bytes eines Wortes im Eingangspuffer. 5086A 6-9 InterBus-S Makros zur Programmierunterstützung 6.1.4 Makros zur Konvertierung von Ausgabedaten In der Datei IBS_MACR.H stehen Makros zur Konvertierung von Langworten, Worten und Bytes vom Intel- in das Motorola-Format zur Verfügung. Die Adressierung ist dabei in jedem Fall wortorientiert. IB_PD_SetLongDataN(n, m, o) Aufgabe: Dieses Makro konvertiert ein Langwort (32 Bit) in das Motorola-Format und schreibt es an der angebenen Position in den Ausgangspuffer. Als Position wird der Wortindex innerhalb des Ausgangspuffers verwendet. Das Makro schreibt somit das Langwort ab der angegebenen Wort-Adresse über zwei Worte. Parameter : n (USIGN8 FAR *) m (USIGN16) o (USIGN32) co m Zeiger auf den Ausgangspuffer Parameter-Nr. (Wort-Nr.) Prozeßdatum (32 Bit) IB_PD_SetDataN(n, m, o) Dieses Makro konvertiert ein Wort (16 Bit) in das Motorola-Format und schreibt es an der angebenen Position in den Ausgangspuffer. Parameter: n(USIGN8 FAR *): m(USIGN16): o(USIGN16): nt s. Aufgabe: po ne Zeiger auf den Ausgangspuffer Parameter-Nr. (Wort-Nr.) Prozeßdatum (16 Bit) IB_PD_SetDataNHiByte(n, m, o) Dieses Makro konvertiert das höherwertige Byte (Bit 8 bis 15) eines Wortes in das Motorola-Format und schreibt es an der angebenen Position in den Ausgangspuffer. n(USIGN8 FAR *): m(USIGN16): o(USIGN8): Zeiger auf den Ausgangspuffer Parameter-Nr. (Wort-Nr.) Prozeßdatum (8 Bit) on l Parameter: in ec om Aufgabe: IB_PD_SetDataNLoByte(n, m, o) Aufgabe: Parameter: 6-10 Dieses Makro konvertiert das niederwertige Byte (Bit 0 bis 7) eines Wortes in das Motorola-Format und schreibt es an der angebenen Position in den Ausgangspuffer. n(USIGN8 FAR *): m(USIGN16): o(USIGN8): Zeiger auf den Ausgangspuffer Parameter-Nr. (Wort-Nr.) Prozeßdatum (8 Bit) 5086A InterBus-S Makros zur Konvertierung von Ausgabedaten IB_PD_SetBytePtrHiByte(n, m) Aufgabe: Dieses Makro liefert die Adresse, beginnend ab dem höchstwertigen Byte (Bit 8 bis 15), eines Wortes zurück. Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Ausgangspuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8 FAR *): Adresse des höherwertigen Bytes eines Wortes im Ausgangspuffer. IB_PD_SetBytePtrLoByte(n, m) Dieses Makro liefert die Adresse, beginnend ab dem niederwertigen Byte (Bit 0 bis 7), eines Wortes zurück. Parameter: n(USIGN8 FAR *): m(USIGN16): Zeiger auf den Ausgangspuffer Parameter-Nr. (Wort-Nr.) Rückgabewert: (USIGN8 FAR *): Adresse des niederwertigen Bytes eines Wortes im Ausgangspuffer. on l in ec om po ne nt s. co m Aufgabe: 5086A 6-11 on l in ec om po ne nt s. co m InterBus-S Makros zur Programmierunterstützung 6-12 5086A Kapitel 7 Diagnose zur Treibersoftware Dieses Kapitel informiert Sie über die Meldungen und Fehlermeldungen der Treibersoftware. ne nt s. Meldungen des DDI . . . . . . . . . . . . . . . . . 7-4 Fehlermeldungen des DDI . . . . . . . . . . . . . . . 7-4 Fehlermeldungen zur Initialisierung der Anschaltbaugruppe . . 7-4 Allgemeine Fehlermeldungen. . . . . . . . . . . . . . 7-6 Fehlermeldungen beim Öffnen eines Datenkanals . . . . . 7-7 Fehlermeldungen zur Übertragung von Meldungen/Kommandos7-8 Fehlermeldungen zur Übertragung von Prozessdaten . . . . 7-10 Fehlermeldungen unter DOS . . . . . . . . . . . . . . 7-10 Fehlermeldungen unter Microsoft Windows . . . . . . . . 7-11 Fehlermeldungen unter OS/2 . . . . . . . . . . . . . . 7-12 on l in ec om 7.1 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.2.8 co Diagnose zur Treibersoftware . . . . . . . . . . . . . . . . . . . . . . 7-3 po 7 m - Bedeutung - Ursachen - Abhilfe 5086A 7-1 7-2 5086A s. nt ne po om in ec on l co m InterBus-S Diagnose zur Treibersoftware 7 Diagnose zur Treibersoftware Übersicht über die Meldungen des DDI Fehlermeldung Ursache Seite 0000hex ERR_OK Die Funktion wurde erfolgreich ausgeführt 7-4 0080hex ERR_INVLD_BOARD_NUM Unzulässige oder ungültige Boardnummer 7-4 0081hex ERR_INVLD_IO_ADDR Unzulässige IO-Adresse 7-4 0082hex ERR_INVLD_MPM_ADDR Unzulässige Adresse für das MPM-Fenster 7-5 0083hex ERR_INVLD_INTR_NUM Unzulässiger Interrupt 7-5 0084hex ERR_INVLD_CARD_CODE Falscher Karten-Code 7-5 0085hex ERR_INVLD_NODE_HD Unzulässiger Node-Handle angegeben 7-6 0086hex ERR_INVLD_NODE_STATE Node-Handle eines bereits geschlossenen Datenkanals angegeben 7-6 0087hex ERR_NODE_NOT_READY Gewünschter Node nicht bereit 7-6 0088hex ERR_WRONG_DEV_TYP Falscher Node-Handle 7-6 0089hex ERR_DEV_NOT_READY IBS-Masterboard noch nicht bereit 7-6 008Ahex ERR_INVLD_PERM Zugriffsart für Kanal nicht freigegeben 7-6 008Bhex ERR_TSR_NOT_LOADED Device-Driver nicht geladen 7-10 008Chex ERR_INVLD_CMD 7-7 008Dhex ERR_INVLD_PARAM Utility-Funktion, wird von der Treiberversion 0.9 nicht unterstützt 0090hex ERR_NODE_NOT_PRES Node nicht vorhanden 7-7 0091hex ERR_INVLD_DEV_NAME Unbekannter Device-Name verwendet 7-7 0092hex ERR_NO_MORE_HNDL Ressourcen des Device-Drivers sind erschöpft 7-7 0096hex ERR_AREA_EXCDED Der Zugriff überschreitet die die Grenze des ausgewählten Datenbereiches 7-10 0097hex ERR_INVLD_DATA_CONS Angegebene Datenkonsistenz unzulässig 7-10 0099hex ERR_MPM_NOT_AVALBL Auf das MPM kann nicht zugegriffen werden 7-6 ERR_MSG_TO_LONG Meldung oder Kommando enthält zu viele Parameter 7-8 009Bhex ERR_NO_MSG Es liegt keine Meldung vor 7-8 009Chex ERR_NO_MORE_MAILBOX Keine Mailbox der geforderten Größe frei 7-8 009Dhex ERR_SVR_IN_USE Send-Vektor-Register ist belegt 7-8 009Ehex ERR_SVR_TIMEOUT Aufruf eines ungültigen Nodes 7-8 009Fhex ERR_AVR_TIMEOUT Aufruf eines ungültigen Nodes 7-9 00A0hex ERR_COP_USES_MA Steuerung des IBS-Masterbord ist für den PC nicht freigegeben 7-9 00A1hex ERR_PC_USES_MA Steuerung des IBS-Masterbord ist für den COP nicht freigegeben 7-9 00B0hex ERR_NODE_IN_USE Doppelte Aktivierung des NotificationModes für einen Node(Windows) 7-11 00C0hex ERR_INVLD_PID Angabe eines falschen Process-Identifiers 7-12 5086A co nt ne po om in ec on l 009Ahex m Code s. Tabelle 7-1: 7-7 7-3 InterBus-S Diagnose zur Treibersoftware Tabelle 7-1: Übersicht über die Meldungen des DDI Fehlermeldung Ursache Seite 00C1hex ERR_BLK_MODE_IS_ENBLD Blocked-Mode ist bereits eingeschaltet 7-12 00C2hex ERR_THREAD_IS_WAITING Ein anderer Thread belegt bereits den Notification-Mode für diesen Node 7-12 00C9hex ERR_INVLD_MEMORY Ungültiger Empfangspuffer 7-12 00CAhex ERR_INVLD_NOTIFY_MODE Unzulässiger Notification-Mode 7-12 00CBhex ERR_BLOCK_TIMEOUT Wartezeit auf eine Meldung überschritten 7-12 00D1hex ERR_INVLD_HWND Ungültiger Windows-Handle 7-11 00D2hex ERR_BOARD_NOT_PRES Board nicht in IBSPCCB.INI eingetragen 7-11 00D3hex ERR_INVLD_INI_PARAM Ungültiger Parameter in IBSPCCB.INI 7-11 m Code co 7.1 Meldungen des DDI s. ERR_OK 0000hex Nach erfolgreicher Ausführung einer Funktion erzeugt die Treibersoftware als positive Quittung diese Meldung. Ursache: Es trat kein Fehler bei der Ausführung der Funktion auf. Sollte eine Funktion nicht erfolgreich ausgeführt worden sein, erzeugt die Treibersoftware eine der im folgenden aufgeführten Fehlermeldungen. om po ne nt Bedeutung: 7.2 Fehlermeldungen des DDI in ec Falls das Device-Driver-Interface als negative Quittung eine der folgenden Fehlermeldungen erzeugt, konnte die zuvor aufgerufene Funktion nicht erfolgreich abgearbeitet werden. on l 7.2.1 Fehlermeldungen zur Initialisierung der Anschaltbaugruppe ERR_INVLD_BOARD_NUM Ursache: Es wurde ein unzulässige oder ungültige Boardnummer verwendet. Abhilfe: Geben Sie eine gültige Boardnummer ein. Zulässig sind 1, 2, 3 und 4. ERR_INVLD_IO_ADDR 0080hex 0081hex Ursache: Die für die Anschaltbaugruppe angegebene IO-Adresse ist unzulässig. Abhilfe: Verwenden Sie eine der zulässigen IO-Adressen. Zulässig sind: 100hex, 120hex, 140hex, 160hex, 180hex, 1A0hex, 200hex, 220hex, 240hex, 280hex, 2A0hex, 300hex, 320hex, 340hex, 380hex, 3A0hex (siehe auch Kapitel 4-1 im Handbuch IBS PC CB UM) 7-4 5086A InterBus-S Fehlermeldungen zur Initialisierung der Anschaltbaugruppe ERR_INVLD_MPM_ADDR 0082hex Ursache: Die im Speicherbereich des PCs angegebene Basisadresse für das 4 KByte große MPM-Fenster (MPM-Address) liegt außerhalb des von der Anschaltbaugruppe unterstützten Bereiches. Abhilfe: Verwenden Sie eine MPM-Adresse innerhalb des von der Anschaltbaugruppe unterstützten Bereichs (C0000hex bis FF000hex). co m Die Anschaltbaugruppe belegt ab dieser Basisadresse einen Adreßraum von 4 KBytes. Stellen Sie sicher, daß dieser Bereich nicht bereits von anderen Karten belegt wird. Eine automatische Überprüfung findet nicht statt. Da dieser Speicherbereich in der Praxis schon recht weitgehend belegt ist (BIOS usw.), beschränkt sich der zur Verfügung stehende Adreßbereich in der Regel auf Teile der Adreß-Segmente D und E (Adressen von D0000hex bis EFFFFhex). Der Standardwert (default) ist D0000hex (siehe Kapitel 4-6 im Handbuch IBS PC CB UM). 0083hex s. ERR_INVLD_INTR_NUM Der angegebene Interrupt ist nicht zulässig. Abhilfe: Zulässig sind die Interrupts IRQ3, IRQ5, IRQ7, IRQ9, IRQ10, IRQ11, IRQ12 und IRQ15. ne nt Ursache: in ec om po Bei Verwendung mehrerer Anschaltbaugruppen in einem Host muß für jede installierte Anschaltbaugruppe ein anderer Interrupt verwendet werden. Auf einem Standard-PC sind die Interrupts IRQ10, IRQ11, IRQ12 und IRQ15 meist nicht benutzt und bieten sich somit für die Device-Driver an. Die anderen Interrupts werden häufig von Standard-PC-Komponenten (serielle Schnittstellen COM1 und COM2, Netzwerkkarten usw.) verwendet und sollten deshalb nicht von für die Anschaltbaugruppen benutzt werden. ERR_INVLD_CARD_CODE Abhilfe: 5086A Im Statusregister der Anschaltbaugruppe steht ein unbekannter Karten-Code. (Der Treiber für IBS PC CB/.../I-T erwartet den Karten-Code 2Dhex) on l Ursache: 0084hex Lassen Sie die Anschaltbaugruppe überprüfen. 7-5 InterBus-S Diagnose zur Treibersoftware 7.2.2 Allgemeine Fehlermeldungen Diese Fehlermeldungen können beim Aufruf jeder DDI-Funktion auftreten. ERR_MPM_NOT_AVALBL 0099hex Ursache: Auf das MPM kann nicht zugegriffen werden. Auf der Anschaltbaugruppe ist möglicherweise ein Reset (Resettaster auf dem Board) ausgelöst worden. Abhilfe: De-Installieren Sie den Treiber und starten Sie erneut. ERR_INVLD_NODE_HD 0085hex Beim Aufruf der Funktion wurde ein unzulässiger Node-Handle verwendet. Abhilfe: Verwenden Sie den zulässigen Node-Handle eines erfolgreich geöffneten Datenkanals. co m Ursache: 0086hex s. ERR_INVLD_NODE_STATE Beim Aufruf der Funktion wurde ein ungültiger Node-Handle verwendet. Es handelt sich dabei um den Handle eines bereits geschlossenen Datenkanals. Abhilfe: Öffnen Sie den geschlossenen Datenkanal oder verwenden Sie einen bereits geöffneten Datenkanal. po ne nt Ursache: ERR_NODE_NOT_READY Abhilfe: om Der Node, mit dem gearbeitet werden soll, hat sich noch nicht "Bereit" gemeldet, d.h. das Node-Ready-Bit im Status-Register des MPM ist nicht gesetzt. Ursache dafür kann z.B. ein Hardware-Defekt sein. in ec Ursache: - Überprüfen Sie, ob die Anschaltbaugruppe hochgelaufen ist - Reset des PCs on l ERR_WRONG_DEV_TYP Ursache: 0087hex 0088hex Falscher Node-Handle. Es wurde z.B. versucht, mit einem Node-Handle für das Data-Interface auf das Mailbox-Interface zuzugreifen. ERR_DEV_NOT_READY 0089hex Ursache: Das IBS-Masterboard wurde angesprochen, obwohl es noch nicht bereit war (Ready-LED). Abhilfe: Fragen Sie nach einem Reset des IBS-Masterboards mit der Funktion GetIBSDiagnostic() das Ready-Bit im Status/Control-Register ab. Erst wenn dieses Bit gesetzt ist, ist das IBS-Masterboard initialisiert und darf angesprochen werden. ERR_INVLD_PERM Ursache: 7-6 008Ahex Es wurde versucht, eine Funktion auf einem Kanal auszuführen, für die nicht die entsprechenden Zugriffsrechte beim Öffnen des Datenkanals angemeldet wurden. Dieser Fehler tritt auf, wenn z.B. in das Data-Interface geschrieben werden soll, aber beim Öffnen des Kanals nur Leserechte (Konstante DDI_READ) an5086A InterBus-S Fehlermeldungen beim Öffnen eines Datenkanals gegeben wurden. Abhilfe: Schließen Sie den Kanal und mit öffnen Sie ihn mit geänderten Zugriffsrechten erneut. ERR_INVLD_CMD 008Chex Ursache: Diese Fehlermeldung erfolgt, wenn bestimmte neue Hilfsfunktionen der neuen DDI_TSR.LIB mit einem älteren Treiber (Version < 0.9) verwendet werden. Abhilfe: Verwenden Sie einen neueren Treiber (Version ≥ 0.9). ERR_INVLD_PARAM 008Dhex Diese Fehlermeldung erfolgt, wenn bestimmte neue Hilfsfunktionen der neuen DDI_TSR.LIB mit einem älteren Treiber (Version < 0.9) verwendet werden. Abhilfe: Verwenden Sie einen neueren Treiber (Version ≥ 0.9). s. co m Ursache: nt 7.2.3 Fehlermeldungen beim Öffnen eines Datenkanals 0090hex ne ERR_NODE_NOT_PRES Es wurde versucht, einen Datenkanal zu einem Node zu öffnen, der nicht vorhanden ist. Abhilfe: Wählen Sie den richtigen Node aus. Mögliche Nodes: IBS PC CB: Node 1 = IBS-Master IBS PC CB/COP: Node 0 = PC, Node 1 = IBS-Master, Node 2 = COP in ec om po Ursache: ERR_INVLD_DEV_NAME Abhilfe: Es wurde beim Öffnen eines Datenkanals ein unbekannter Device-Name als Parameter angegeben. on l Ursache: 0091hex Wählen Sie einen korrekten Device-Namen laut Tabelle 5-2 bis 5-5 aus. ERR_NO_MORE_HNDL 0092hex Ursache: Die Ressourcen des Device-Drivers sind erschöpft. Es können keine weiteren Datenkanäle geöffnet werden. Wenn Sie ein Programm beenden, ohne die verwendeten Datenkanäle zu schließen, bleiben diese geöffnet. Beim nächsten Programmstart werden weitere Datenkanäle geöffnet. Nach mehrmaligem Programmstart ist dann die maximale Anzahl der gleichzeitig offenen Datenkanäle erreicht, und es ist kein weiterer mehr verfügbar. Abhilfe: Schließen Sie einen nicht benötigten Datenkanal oder installieren Sie den Device-Driver neu. Schließen Sie grundsätzlich bei Beendigung eines Programms alle von diesem verwendeten Datenkanäle. 5086A 7-7 InterBus-S Diagnose zur Treibersoftware 7.2.4 Fehlermeldungen zur Übertragung von Meldungen/Kommandos ERR_MSG_TO_LONG 009Ahex Ursache: Erfolgt die Fehlermeldung beim Senden eines Kommandos, dann überschreitet die Länge des Kommandos die Anzahl der maximal zulässigen Parameter. Abhilfe: Verringern Sie die Anzahl der Parameter. Ursache: Erfolgt die Fehlermeldung beim Empfangen einer Meldung, dann überschreitet die Länge der Meldung die Länge des angegebenen Empfangspuffers. Abhilfe: Vergrößern Sie die Länge des Empfangspuffers. m ERR_NO_MSG 009Bhex Die Meldung erfolgt, wenn mit der Funktion DDI_MXI_RCV_MESSAGE versucht wird, eine Meldung abzuholen, aber keine Meldung für den durch den Node-Handle spezifizierten Node vorliegt. s. co Ursache: 009Chex nt ERR_NO_MORE_MAILBOX Sie haben in kurzer Zeit zu viele Mailboxen angefordert. Abhilfe: Vergrößern Sie das Zeitintervall zwischen den einzelnen Mailbox-Anforderungen und versuchen Sie es erneut. Ursache: Es ist keine freie Mailbox der geforderten Größe mehr vorhanden. Beachten sie die maximal nutzbare Mailbox-Größe (1020 Bytes). Abhilfe: Wählen Sie eine kleinere Mailbox oder warten Sie, bis wieder eine Mailbox der geforderten Größe freigegeben ist. in ec om po ne Ursache: Abhilfe: Sie haben versucht, das Coprozessorboard (COP) anzusprechen, dieses ist aber defekt. on l Ursache: Setzen Sie sich mit Phoenix Contact in Verbindung. ERR_SVR_IN_USE 009Dhex Ursache: Das Send-Vektor-Register zu dem Node ist belegt. Abhilfe: Sprechen Sie das Register nochmals an, oder warten Sie bis das Register wieder frei ist. ERR_SVR_TIMEOUT Beschreibung: 7-8 009Ehex Wenn eine vom IBS-Masterboard in das MPM gestellte Meldung nicht durch den angesprochenen MPM-Teilnehmer abgeholt wird, setzt dieser auch das vom IBS-Masterboard gesetzte Rückmeldungs-Bit nicht zurück, d.h. der angesprochene MPM-Teilnehmer signalisiert nicht Nachricht erkannt. Nach Ablauf einer bestimmten Zeit (Timeout) generiert das IBS-Masterboard die Fehlermeldung ERR_SVR_TIMEOUT . Tritt diese Fehlermeldung mehrmals nacheinander auf, muß davon ausgegangen werden, daß der angesprochene Node nicht mehr bereit ist, die Nachricht anzunehmen. 5086A InterBus-S Fehlermeldungen zur Übertragung von Meldungen/Kommandos Ursache: Aufruf eines ungültigen Nodes, z.B.: Sie haben versucht, das Coprozessorboard (COP) anzusprechen, dieses ist aber defekt. Abhilfe: Setzen Sie sich mit Phoenix Contact in Verbindung. ERR_AVR_TIMEOUT 009Fhex Beim Lesen einer Nachricht wird ein Rückmeldungs-Bit gesetzt, um dem Kommunikationspartner anzuzeigen, daß eine Nachricht bearbeitet wurde und die Mailbox wieder frei ist. Diese Bit muß vom Kommunikationspartner wieder zurückgesetzt werden, um zu signalisieren, daß erkannt wurde, daß die Mailbox wieder frei ist. Erfolgt dieses Zurücksetzen nicht innerhalb einer festgesetzten Zeit, wird diese Fehlermeldung generiert. Ursache: Aufruf eines ungültigen Nodes, z.B.: co m Beschreibung: ERR_COP_USES_MA nt Setzen Sie sich mit Phoenix Contact in Verbindung. ne Abhilfe: s. Sie haben versucht, das Coprozessorboard (COP) anzusprechen, dieses ist aber defekt oder nicht vorhanden. 00A0hex Der Host (PC) hat versucht, ein Kommando an das IBS-Masterboard zu senden, obwohl nach Stellung des Boot-Konfigurations-Schalters das IBS-Masterboard vom Coprozessorboard gesteuert wird. Abhilfe: Vermeiden Sie das Senden von Kommandos an das IBS-Masterboard durch den Host (PC), wenn das IBS-Masterboard vom Coprozessorboard gesteuert wird. Überprüfen Sie die Stellung des Boot-Konfigurations-Schalters (siehe Kapitel 4 im Handbuch IBS PC CB UM). in ec om po Ursache: Ursache: Abhilfe: 5086A 00A1hex on l ERR_PC_USES_MA 00A1 Das Coprozessorboard hat versucht, ein Kommando an das IBS-Masterboard zu senden, obwohl nach Stellung des Boot-Konfigurations-Schalters das IBSMasterboard vom Host (PC) gesteuert wird. Vermeiden Sie das Senden von Kommandos an das IBS-Masterboard durch das Coprozessorboard, wenn das IBS-Masterboard vom Host (PC) gesteuert wird. Überprüfen Sie die Stellung des Boot-Konfigurations-Schalters (siehe Kapitel Inbetriebnahme). 7-9 InterBus-S Diagnose zur Treibersoftware 7.2.5 Fehlermeldungen zur Übertragung von Prozessdaten Diese Fehler treten nur beim Zugriff auf das Data-Interface (DTI) auf. ERR_AREA_EXCDED 0096hex Der Zugriff überschreitet die die obere Grenze des ausgewählten Datenbereiches. Ursache: Der zu lesenden oder zu schreibende Datensatz ist zu groß. Die Funktion kann maximal 4 KByte in einem Aufruf lesen. Abhilfe: Lesen oder schreiben Sie nur Datensätze von maximal 4 KByte. Ursache: Die obere Bereichsgrenze (4 KByte über dem Beginn des Teilnehmerbereiches) ist überschritten. Abhilfe: Beachten Sie, daß die Summe aus Adreß-Offset, relativer Adresse und zu lesender Datenlänge die obere Bereichsgrenze nicht überschreiten darf. Die Teilnehmer- und Datenbereiche sind im Kapitel 5 des Handbuchs IBS PC CB UM unter Aufteilung des MPMs beschrieben. 0097hex ne ERR_INVLD_DATA_CONS nt s. co m Bedeutung: Für die Datenkonsistenz (1,2,4 oder 6 Bytes) wurde ein unzulässiger Wert angegeben. Abhilfe: Legen Sie eine zulässige Datenkonsistenz durch Angabe einer der folgenden Konstanten fest: DTI_DATA_BYTE : Byte-Datenkonsistenz (1 Byte) DTI_DATA_WORD : Word-Datenkonsistenz (2 Byte) DTI_DATA_LWORD : Longword-Datenkonsistenz (4 Byte) DTI_DATA_48BIT : 48 Bit-Datenkonsistenz (6 Byte) in ec om po Ursache: on l 7.2.6 Fehlermeldungen unter DOS ERR_TSR_NOT_LOADED Ursache: Abhilfe: 7-10 008Bhex Der Device-Driver ist noch nicht geladen, trotzdem wurde versucht, auf ihn zuzugreifen. Laden Sie als Device-Driver auf dem Host das TSR-Programm IBSPCCB.EXE bzw. auf den Coprozessorboard das TSR-Programm IBSCOP.EXE. 5086A InterBus-S Fehlermeldungen unter Microsoft Windows 7.2.7 Fehlermeldungen unter Microsoft Windows ERR_NODE_IN_USE Ursache: 00B0hex Sie haben versucht, den Notification-Mode für einen Node zu aktivieren, für den der Notification-Mode bereits eingeschaltet war. ERR_INVLD_HWND 00D1hex Sie haben einen ungültigen Windows-Handle (hWnd) verwendet Ursache: Der angewandte Windows-Handle stimmt nicht mit dem beim Einschalten des Notification verwendeten überein. Abhilfe: Verwenden Sie den korrekten Windows-Handle. Bemerkung: Bei Angabe eines falschen Windows- oder Node-Handles wird der NotificationMode nicht deaktiviert. co m Ursache: s. ERR_BOARD_NOT_PRES 00D2hex Sie haben beim Öffnen oder Schließen eines Datenkanals (Funktion DDI_DevOpenNode oder DDI_DevCloseNode) mit dem Parameter DeviceName eine ungültige Boardnummer ausgewählt. Eine Anschaltbaugruppe mit dieser Boardnummer ist laut dem Eintrag BoardInUseFlag=False in der Datei IBSPCCB.INI nicht vorhanden. Abhilfe: Überprüfen Sie, ob eine Anschaltbaugruppe mit der von Ihnen angesprochenen Boardnummer vorhanden ist. Falls dies der Fall ist, korrigieren Sie in der Datei IBSPCCB.INI den Eintrag auf BoardInUseFlag=True. om po ne nt Ursache: Ursache: 00D3hex Ein Parameter in der der Datei IBSPCCB.INI ist nicht gültig. Überprüfen Sie die Einträge in der Datei IBSPCCB.INI. on l Abhilfe: in ec ERR_INVLD_INI_PARAM 5086A 7-11 InterBus-S Diagnose zur Treibersoftware 7.2.8 Fehlermeldungen unter OS/2 ERR_INVLD_PID 00C0hex Ursache: Sie haben einen falschen Process-Identifier angegeben. Abhilfe: Verwenden Sie beim Deaktivieren des Notification-Modes die gleichen Parameter (nodeHd, processId), die auch beim Aktivieren des Notification-Modes verwendet wurden. ERR_BLK_MODE_IS_ENBLD 00C1hex Der Blocked-Mode ist für diesen Node bereits eingeschaltet. Abhilfe: Bevor sich ein neuer Prozeß anmelden kann, muß die Funktion DDI_ClrMsgNotification aufgerufen werden. co m Ursache: ERR_THREAD_IS_WAITING 00C2hex Ein anderer Thread wartet bereits auf Messages von diesem Node und befindet sich dabei im Modus Sleep. Während ein Thread auf Messages von einem Node wartet, kann von diesen Node generell kein anderer Thread Messages lesen. Abhilfe: Beenden Sie gegebenenfalls den Notification-Mode für den schon länger wartenden Thread. po ne nt s. Ursache: in ec Abhilfe: Der an die Funktion DDI_MXI_RcvMessage übergebene Empfangspuffer ist nicht gültig, d. h. er kann nicht zum Abspeichern einer Nachricht verwendet werden. Andernfalls meldet OS/2 eine Schutzverletzung. Überprüfen Sie den für den Emfangspuffer zur Verfügung gestellten Speicherbereich. on l Ursache: ERR_INVLD_NOTIFY_MODE Ursache: Abhilfe: 00C9hex om ERR_INVLD_MEMORY 00CAhex Es wurde versucht, einen unzulässigen Notification-Mode zu aktivieren. Die Treibersoftware-Versionen 0.9 und 0.91 unterstützen nur den Blocked-Mode. Verwenden Sie einen Notification-Mode, den ihre Treibersoftware unterstützt. ERR_BLOCK_TIMEOUT 00CBhex Ursache: Bei der Aktivierung des Notification-Modes für einen Thread haben Sie in das Strukturelement timeout die Zeit eingetragen, welche ein Thread maximal auf eine Message warten soll. Da innerhalb dieser Zeit keine Message empfangen worden ist, wurde der Thread mit der Fehlermeldung ERR_BLOCK_TIMEOUT (00CBhex) beendet. Abhilfe: Stellen Sie durch Überprüfen von Anwenderprogramm und Anlage fest, warum eine zu erwartende Nachricht nicht rechtzeitig eingetroffen ist. Erhöhen Sie gegebenenfalls die Wartezeit. 7-12 5086A Anhang A Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3 co A m Anhang zum Dokument Abbildungsverzeichnis . . . . . . . . . . . . . . . . A-3 Tabellenverzeichnis . . . . . . . . . . . . . . . . . A-4 Stichwortverzeichnnis. . . . . . . . . . . . . . . . . A-5 on l in ec om po ne nt s. A.1 A.1 A.1 5086A A-1 A-2 5086A s. nt ne po om in ec on l co m InterBus-S Anhang A Anhang A.1 Abbildungsverzeichnis Kapitel 2 Realisierung der Treibersoftware unter Microsoft-DOS für C . . . . . 2-3 Realisierung der Treibersoftware für C auf dem COP . . . . . . . . 2-3 Kapitel 3 Kapitel 3 m Realisierung der Treibersoftware unter Microsoft-DOS für Pascal . . . 3-3 s. co Realisierung der Treibersoftware für Pascal auf dem COP . . . . . . 3-3 Kapitel 4 nt Realisierung der IBS-Treibersoftware unter Microsoft-Windows . . . . 4-3 ne Notification-Mode unter Microsoft Windows . . . . . . . . . . . . 4-4 po Beispieleinträge in der DateiIBSPCCB.INI . . . . . . . . . . . . 4-6 om Kapitel 5 Realisierung der IBS-Treibersoftware für IBM OS/2 . . . . . . . . 5-3 Kapitel 6 in ec Blocked-Mode unter OS/2 . . . . . . . . . . . . . . . . . . 5-4 on l Verwendung der Makros zur Datenkonvertierung . . . . . . . . . 6-3 5086A A-3 InterBus-S Anhang A.2 Tabellenverzeichnis Kapitel 1 Betriebssysteme . . . . . . . . . . . . . . . . . . . . . . 1-3 Compiler . . . . . . . . . . . . . . . . . . . . . . . . . 1-3 Kombinationen von Compiler und Betriebsystem auf dem Host . . . . 1-4 Kombinationen von Compiler und Betriebsystem auf dem COP . . . . 1-4 Kapitel 2 . . . . . . . . . . . 2-5 co Übersicht über die DDI-Funktionen für DOS m Libraries und Include-Dateien . . . . . . . . . . . . . . . . . 2-4 s. Übersicht über die Funktionen zur Kontrolle der Hardware . . . . . . 2-5 nt Kapitel 3 Kapitel 3 ne Übersicht über die DDI-Funktionen für DOS . . . . . . . . . . . 3-5 po Übersicht über die Funktionen zur Kontrolle der Hardware . . . . . . 3-5 om Kapitel 4 Übersicht über die DDI-Funktionen für Microsoft Windows . . . . . . 4-7 Kapitel 5 in ec Übersicht über die Funktionen zur Kontrolle der Hardware . . . . . . 4-7 on l Library und Include-Dateien . . . . . . . . . . . . . . . . . . 5-6 Übersicht über die DDI-Funktionen für OS/2 . . . . . . . . . . . 5-8 Übersicht über die Funktionen zur Kontrolle der Hardware . . . . . . 5-8 Kapitel 6 Übersicht über die Makros zur Datenkonvertierung . . . . . . . . . 6-4 Kapitel 7 Übersicht über die Meldungen des DDI . . . . . . . . . . . . . 7-3 A-4 5086A InterBus-S Stichwortverzeichnnis A.3 Stichwortverzeichnnis L Library 2-4 A M Access-Permission 2-6, 3-6 Makros zur Datenkonvertierung 6-3 Message-Block 2-8, 3-8 Message-Length 2-8, 3-8 Microsoft Windows 4-3 Motorola-Format 6-3 MPM, Daten-Adresse 2-11 B Blocked-Mode 5-3, 5-10 C Compileroption für OS/2 5-7 CONFIG.SYS für OS/2 5-6 Controller-Fehler 2-18, 3-18 co Node-Handle 2-6, 3-6 Notification-Mode 4-3, 4-9, 5-3 Notification-Mode für OS/2 5-3 Notification-Mode für Windows 4-3, 4-9 nt O po ne OS/2 5-3 in ec om Data-Interface 2-10, 3-10 Datenkanal 2-6, 3-6 Datenkonsistenz 2-10, 3-10 Device-Name 2-6, 3-6 Diagnosefunktion 2-18, 3-18 DIP-Schalter 2-13, 3-13 DTI-Adresse 2-10, 2-11, 3-10, 3-11 Dynamic- Link-Library für OS/2 5-5 Dynamic-Link-Library 5-5 Dynamic-Link-Library für Windows 4-5 s. D F on l Fehlermeldungen des DDI 7-3, 7-4 Fernbusfehler 2-18, 3-18 G m N GetIBSDiagnostic 2-18, 3-18 P Pascal-Interface 4-6 Peripheriebusfehler 2-18, 3-18 Prozeßabbild 6-3 S Speichermodell 2-4 SRAM 2-14, 3-14 SysFail-Register 2-14, 3-14 T Teilnehmerfehler 2-18, 3-18 TSR-Programm 2-3, 3-3 I IBSPCCB.INI 4-6 Include-Datei 2-4, 4-5 Include-Datei für DOS 2-4 Include-Datei für OS/2 5-5 Include-Datei für Windows 4-5 Intel-Format 6-3 IPMS 6-3 K U Unit 3-4 W Watchdog 2-16, 3-16 Windows-Handle 4-9 Windows-Message 4-3 Karten-Code 7-5 5086A A-5 on l in ec om po ne nt s. co m InterBus-S Anhang A-6 5086A Ihre Meinung interessiert uns! Geben Sie uns die Möglichkeit, Ihre Anregungen, Wünsche und Kritikpunkte zum vorliegenden InterBusHandbuch zu erfahren. Aus diesem Grund beantworten Sie bitte den Fragebogen auf der Rückseite. Jeder noch so kleine Hinweis oder Kommentar wird von uns bearbeitet. Dieses Antwortschreiben können Sie als FAX-Vorlage, im Fensterbrief oder auch - gefaltet (1. / 2.) und zusammengeklebt (mit Tesafilm) - direkt versenden. Falls Sie einen Briefumschlag verwenden, kennzeichnen Sie diesen im rechten, oberen Teil der Vorderseite mit dem Vermerk "Entgelt bezahlt Empfänger". m Vielen Dank ! .............. Entgelt bezahlt Empfänger po ne nt s. co ...............................................................................................................................................................................1. om Antwort on l in ec Phoenix Contact GmbH & Co. KG Produktmarketing InterBus/ME-DOK Flachsmarktstraße 8 - 28 D-32825 Blomberg ................................................................................................................................................................................2. .............. FAX-NR.: *49-(0)5235-331199 FAX-Antwort Phoenix Contact GmbH & Co. KG Produktmarketing InterBus/ME-DOK Datum: .............................. Anzahl Seiten: .................... Absender: Firma: ............................................................................. Name: ................................................................................ ............................................................................. Abteilung: ................................................................................ Straße: ............................................................................. Funktion: ................................................................................ Ort: .......................... ................................................ Tel.: ............................... / .............................................. Fax: ............................... / .............................................. Revision: ............. Art.-Nr.: ....................... co Typ: ...................................................................... m Angaben zum Handbuch: s. Meine Meinung zum Handbuch Gestaltung nt Ist das Inhaltsverzeichnis übersichtlich gestaltet? ne Sind die gewählten Bilder/Grafiken verständlich/aussagekräftig? Fördert die Seitengestaltung die schnelle Infosuche? po Ist die Kapitelinhaltsübersicht ausführlich? Sind die Texterklärungen zu den Bildern ausreichend? in ec Inhalt om Entspricht die Qualität der Bilder (Übersichtlichkeit/selbsterklärend) Ihren Erwartungen/Ansprüchen? Führen die Indexeinträge zu den informativen Stellen? Sind die gewählten Fachbegriffe verständlich/aussagekräftig? Sind die gewählten Formulierungen verständlich/aussagekräftig? Sind die gewählten Verzeichniseinträge verständlich/aussagekräftig? on l Welches Verzeichnis benutzen Sie am häufigsten, um Informationen zu suchen? ............................................................................................................. Fehlen wichtige Informationen? Wenn ja, welche? ............................................................................................................................... ............................................................................................................................... Sind die Beispiele praxisgerecht? Ist das Handbuch gut zu handhaben? Wünschen Sie mehr Platz für Notizen? Ja r r r r r r r z.Teil r r r r r r r Nein Ja z.Teil Nein r r r r r r r r r r r r r r r r r r r r r r r r r r r r Ich habe folgende Anregung(en)/Anmerkung(en): ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... 5050CF17 D N R 2 5 3 2