SoftSERCANS SERCOS interface Master
Transcrição
SoftSERCANS SERCOS interface Master
SoftSERCANS SERCOS interface Master-Anbindung für PC-basierende Steuerungssysteme Funktionsbeschreibung: Version 01 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Über diese Dokumentation Titel Art der Dokumentation interner Ablagevermerk DLL für Zugriffe auf SoftSERCANS Beschreibung der Funktionsbibliothek "SoftSERCANS.dll" Funktionsbeschreibung • SoftSERCANS99 • Dokument-Nr. 120-2000-B305-01/DE Zweck der Dokumentation? Diese Dokumentation dient • dem Anwender zur Einbindung der SoftSERCANS-DLL-Schnittstelle in neue Applikationen, • dem Kennenlernen von SoftSERCANS. Änderungsverlauf Verbindlichkeit Hinweis Dokukennzeichnung bisheriger Ausgaben Stand Bemerkung Version 1.01 21.05.99 Anpassungen SW Version 1.02 17.06.99 Anpassung an DLL V1.02, Kapitel Start_SoftSercans () und Probleme mit dem Echtzeitkern RTX Änderungen im Inhalt der Dokumentation und Liefermöglichkeiten der Produkte sind vorbehalten. Diese Dokumentation ist auf chlorfrei gebleichtem Papier gedruckt. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Inhaltsverzeichnis I Inhaltsverzeichnis 1 Allgemeines 1-1 Eine einfache und kostengünstige SERCOS interface-Anschaltung für die Bewegungssteuerung .............................................................................................................. 1-1 Nutzung von SoftSERCANS .................................................................................................... 1-2 SERCOS interface ................................................................................................................... 1-3 SERCANS................................................................................................................................ 1-4 SoftSERCANS ......................................................................................................................... 1-4 Vision für einen neuen Automatisierungsmarkt ....................................................................... 1-4 1.1 Systemvoraussetzungen................................................................................................................ 1-5 1.2 Komponenten von SoftSERCANS ................................................................................................. 1-5 Hardware.................................................................................................................................. 1-5 Software ................................................................................................................................... 1-6 Antriebshardware..................................................................................................................... 1-6 2 Installation der Hardware 2.1 2-1 ISA-Bus .......................................................................................................................................... 2-1 AUTOMATA SERCOS PC-Einsteckkarte................................................................................ 2-1 Serceb-Karte ............................................................................................................................ 2-3 3 Installation der Software 3-1 4 Übersicht, Grundeinstellungen 4-1 4.1 Benötigte Komponenten, Betriebssystem...................................................................................... 4-1 4.2 Verzeichnisstruktur......................................................................................................................... 4-1 4.3 Darstellung der DLL in der Entwicklungsumgebung...................................................................... 4-3 4.4 Inhalte der eingebundenen Headerdateien.................................................................................... 4-5 Headerdatei "SoftSERCANS.h" ............................................................................................... 4-5 Die Moduldefinitionsdatei "SoftSERCANS.def" ....................................................................... 4-6 Die Funktionsdefinitionsdatei "SoftSERCANSANSIC.h" ......................................................... 4-7 Die Lib-Datei "SoftSERCANSEXE.lib" und "SoftSERCANSRTX.lib" ...................................... 4-7 Die Moduldefinitionsdatei "Borland.def"................................................................................... 4-7 4.5 Prinzipielle Wege beim Funktionsaufruf aus einer Applikation ...................................................... 4-8 4.6 Wichtige Grundeinstellungen in Visual Studio .......................................................................... 4-10 Einstellungen in Visual Studio bei Echtzeitanwendungen *.rtss............................................ 4-16 Spezielle Einstellungen in der Entwicklungsumgebung von Visual C++ bezüglich RTX von VenturCom ............................................................................................................................. 4-16 4.7 Wichtige Grundeinstellungen in Borland C++ V5.02 ................................................................... 4-18 Projekteinstellungen in der Borland-IDE................................................................................ 4-19 DOK-SERCAN-SOFT-01VRS*-FK01-DE-P II Inhaltsverzeichnis 5 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS 5-1 5.1 Datenaustausch mit SoftSERCANS .............................................................................................. 5-1 5.2 Zyklischer Datenaustausch ............................................................................................................ 5-1 Synchronisation der zyklischen Daten..................................................................................... 5-1 Timing der zyklischen Daten.................................................................................................... 5-2 Überwachung von Interrupt-Jitter ............................................................................................ 5-2 Zugriff auf die zyklischen Daten............................................................................................... 5-3 Lifecounter ............................................................................................................................... 5-3 Austausch der Echtzeitdaten ................................................................................................... 5-4 Konfiguration des Sollwertkanals............................................................................................. 5-5 Konfiguration des Istwertkanals ............................................................................................... 5-5 5.3 Allgemeine Funktion der Systemparameter................................................................................. 5-13 Datenblockaufbau .................................................................................................................. 5-13 5.4 Betriebsphasen ............................................................................................................................ 5-17 Kommunikationsphase 0........................................................................................................ 5-17 Kommunikationsphase 1........................................................................................................ 5-17 Kommunikationsphase 2........................................................................................................ 5-17 Kommunikationsphase 3........................................................................................................ 5-18 Kommunikationsphase 4........................................................................................................ 5-18 5.5 Kommandokanal .......................................................................................................................... 5-19 Ablauf im Kommandokanal .................................................................................................... 5-19 6 Diagnose 6-1 6.1 Grundsätzliches ............................................................................................................................. 6-1 6.2 Fehler und Diagnosebeschreibung ................................................................................................ 6-2 6.3 Bedeutungen und Fehlerbehebung der Diagnosen....................................................................... 6-4 Fehler 1: SERCOS interface - Ringunterbrechung.................................................................. 6-4 Fehler 2: Ungültiger Interrupt eingestellt.................................................................................. 6-4 Fehler 3: Umschalten in Phase 3 nicht möglich....................................................................... 6-5 Fehler 4: Umschalten in Phase 4 nicht möglich....................................................................... 6-5 Fehler 5: SERCOS interface - Doppelter Antriebstelegramm-Ausfall ..................................... 6-6 Fehler 6: LWL-Ring nicht geschlossen .................................................................................... 6-6 Fehler 7: Antriebsadressen nicht korrekt (siehe Y-0-0002, Y-0-0024) .................................... 6-7 Fehler 8: Maximale Antriebsanzahl überschritten.................................................................... 6-7 Fehler 9: Notreaktion "SERCOS Phase 0" - Modusumschaltung unzulässig ......................... 6-8 Fehler 10: Falsche Anzahl von Übergabeargumenten ............................................................ 6-8 Fehler 11: SoftSERCANS Hardware-Version nicht korrekt ..................................................... 6-8 Fehler 12: SoftSERCANS Parameter außerhalb Min.-/Max-Wert (siehe Y-0-0021) .............. 6-9 Fehler 13: Fehler Lifecounter................................................................................................... 6-9 Fehler 14: SoftSERCANS Parameter Prüfsummenfehler (siehe Y-0-0021) ......................... 6-10 Fehler 15: SoftSERCANS Parameter nicht korrekt (siehe Y-0-0021) ................................... 6-10 Fehler 16: Ungültige Basisadresse eingestellt....................................................................... 6-11 Fehler 17: SoftSERCANS Hardware defekt .......................................................................... 6-11 Fehler 18: Konfigurationsfehler (Istwertkanal) ....................................................................... 6-11 Fehler 19: Konfigurationsfehler (Sollwertkanal)..................................................................... 6-12 Fehler 25: SoftSERCANS im Testmodus Nullbitstrom .......................................................... 6-12 Fehler 26: SoftSERCANS im Testmodus Dauerlicht ............................................................. 6-12 DOK-SERCAN-SOFT-01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Inhaltsverzeichnis III Fehler 61: Antrieb per Paßwort verriegelt (siehe S-0-0267).................................................. 6-13 Fehler 100: Antriebsfehler...................................................................................................... 6-13 Fehler 4000+n Betriebssystemfehler .................................................................................... 6-13 7 Beschreibung der DLL-Funktionen 7-1 7.1 Grundsätzliches ............................................................................................................................. 7-1 7.2 Die Klasse CSoftSERCANS........................................................................................................... 7-1 7.3 Unterschiede der DLL-Funktionen von Visual C++ zu anderen Programmiersprachen / Entwicklungsumgebungen ............................................................................................................. 7-7 Fazit ......................................................................................................................................... 7-8 7.4 Programmkontrollfunktionen .......................................................................................................... 7-8 Der Konstruktor CSoftSERCANS() .......................................................................................... 7-8 Der Pseudokonstruktor SoftSERCANSInitObject() ............................................................... 7-10 Die Initialisierung Start_SoftSERCANS()............................................................................... 7-12 Statusabfrage der laufenden Initialisierung SoftSERCANS_State() ..................................... 7-14 Beenden von SoftSERCANS Terminate_SoftSERCANS() ................................................... 7-16 Versionskontrolle GetDLLVersion() ....................................................................................... 7-16 Der Destruktor ∼CSoftSERCANS()........................................................................................ 7-18 Der Pseudodestruktor SoftSERCANSUnInitObject()............................................................. 7-19 7.5 Parameterfunktionen der DLL ...................................................................................................... 7-19 Kodierung des Übergabeparameter "usIdentnr" für die folgenden Funktionen..................... 7-19 Name des A-Parameters Read_A_Name() ........................................................................... 7-20 Attribut des A-Parameters Read_A_Attribute()...................................................................... 7-20 Einheit des A-Parameters Read_A_Unit() ............................................................................. 7-21 Minimum des A-Parameters Read_A_Minimum() ................................................................. 7-21 Maximum des A-Parameters Read_A_Maximum() ............................................................... 7-22 Datum des A-Parameters Read_A_Parameter() ................................................................... 7-22 Datum des A-Parameters schreiben Write_A_Parameter() .................................................. 7-27 Flußdiagramm zur Parameterbehandlung ............................................................................. 7-28 Name des Y-Parameters Read_Y_Name() ........................................................................... 7-29 Attribut des Y-Parameters Read_Y_Attribute()...................................................................... 7-29 Einheit des Y-Parameters Read_Y_Unit() ............................................................................. 7-30 Minimum des Y-Parameters Read_Y_Minimum() ................................................................. 7-30 Maximum des Y-Parameters Read_Y_Maximum() ............................................................... 7-31 Datum des Y-Parameters Read_Y_Parameter() ................................................................... 7-31 Datum des Y-Parameters schreiben Write_Y_Parameter() .................................................. 7-32 Name des S/P-Parameters Read_SP_Name() ..................................................................... 7-32 Attribut des S/P-Parameters Read_SP_Attribute()................................................................ 7-33 Einheit des S/P-Parameters Read_SP_Unit() ....................................................................... 7-33 Minimum des S/P-Parameters Read_SP_Minimum() ........................................................... 7-34 Maximum des S/P-Parameters Read_SP_Maximum() ......................................................... 7-34 Datum des S/P-Parameters Read_SP_Parameter() ............................................................. 7-35 Datum des S/P-Parameters schreiben Write_SP_Parameter()............................................. 7-35 7.6 Spezielle Funktionen für die Visualisierung von Parameterdaten ............................................... 7-36 Schreiben eines Parameters Write_ServiceParameter()....................................................... 7-36 Lesen eines Parameters Read_ServiceParameter()............................................................. 7-38 Datum einer Liste in einen Listenstring konvertieren DatumToListe()................................... 7-39 DOK-SERCAN-SOFT-01VRS*-FK01-DE-P IV Inhaltsverzeichnis DLL für Zugriffe auf SoftSERCANS Listenstring in ein Listendatum konvertieren ListToData() .................................................... 7-42 7.7 Direkte Behandlung der Parameter über ULONG-Wert .............................................................. 7-46 Kodierung des Übergabeparameters ulParameter ................................................................ 7-46 Die Funktion ReadElement() ................................................................................................. 7-47 7.8 Funktionen zum Schalten der Betriebsphasen ............................................................................ 7-48 Flußdiagramm zur Phasenumschaltung mit DLL-Funktionen ............................................... 7-48 Die Funktion ChangeSoftSERCANSPhase()......................................................................... 7-49 Die Funktion GetSoftSERCANSPhase() ............................................................................... 7-49 7.9 Der Kommandokanal, Write_Command().................................................................................... 7-54 7.10 Die Diagnosefunktionen ............................................................................................................... 7-55 Die Funktion Read_Actual_Diagnosis()................................................................................. 7-55 Die Funktion Get_Bad_Drives() ............................................................................................. 7-57 Die Funktion Clear_Error()..................................................................................................... 7-57 7.11 Funktionen für die Behandlung der Echtzeitdaten....................................................................... 7-57 Überwachung der ISR-Routinen ............................................................................................ 7-58 Die Echtzeitfunktionen ........................................................................................................... 7-59 7.12 Erklärung der Fehlercodierung der DLL....................................................................................... 7-63 7.13 Fehlercodes bei der Parameterbehandlung................................................................................. 7-66 8 Parameterbeschreibung 8-1 8.1 Liste der im Antrieb vorausgesetzten Parameter........................................................................... 8-1 8.2 Übersicht Y-Parameter................................................................................................................... 8-2 8.3 Übersicht A-Parameter................................................................................................................... 8-2 8.4 Beschreibung Y-Parameter............................................................................................................ 8-3 Y-0-0001 Einschaltverzögerungszeit ....................................................................................... 8-3 Y-0-0002 Adressen projektierte Antriebe................................................................................. 8-3 Y-0-0003 Synchron-Master...................................................................................................... 8-3 Y-0-0004 SERCOS-Zykluszeit................................................................................................. 8-4 Y-0-0005 NC-Zykluszeit........................................................................................................... 8-4 Y-0-0006 Zugriffszeitpunkt NC ................................................................................................ 8-5 Y-0-0007 LWL-Länge............................................................................................................... 8-5 Y-0-0008 Zugriffszeit SoftSERCANS....................................................................................... 8-6 Y-0-0009 Lifecounter Differenz................................................................................................ 8-6 Y-0-0010 Prozess ID................................................................................................................ 8-7 Y-0-0011 SoftSERCANS beenden .......................................................................................... 8-7 Y-0-0012 Kopierzeitpunkt SoftSERCANS ............................................................................... 8-7 Y-0-0013 Verschiebung Zugriffszeitpunkt NC ......................................................................... 8-8 Y-0-0014 Fehlerzähler SYNC .................................................................................................. 8-8 Y-0-0015 SoftSERCANS - Hardware-Version ......................................................................... 8-9 Y-0-0016 SoftSERCANS - Firmware-Version.......................................................................... 8-9 Y-0-0017 SERCOS interface - Konfiguration........................................................................... 8-9 Y-0-0018 SoftSERCANS Fehler löschen............................................................................... 8-10 Y-0-0019 SoftSERCANS - Phasenvorgabe........................................................................... 8-11 Y-0-0020 Systemparameter speichern .................................................................................. 8-11 Y-0-0021 Liste der ungültigen A-/Y-Parameter...................................................................... 8-11 Y-0-0022 SoftSERCANS - Aktueller Modus .......................................................................... 8-12 Y-0-0023 SoftSERCANS - Sprachumschaltung .................................................................... 8-13 DOK-SERCAN-SOFT-01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Inhaltsverzeichnis V Y-0-0024 Adressen deaktivierte Antriebe .............................................................................. 8-13 Y-0-0025 Adressen erkannte Antriebe .................................................................................. 8-14 Y-0-0026 Adressen betreibbare Antriebe .............................................................................. 8-14 Y-0-0027 Liste aller Y-Parameter .......................................................................................... 8-15 Y-0-0028 Liste aller A-Parameter .......................................................................................... 8-15 Y-0-0029 SoftSERCANS - Hochlauf Zielmodus .................................................................... 8-16 Y-0-0030 SoftSERCANS Basisparameter laden ................................................................... 8-16 Y-0-0031 SoftSERCANS Systemdiagnosetext...................................................................... 8-17 Y-0-0032 SoftSERCANS Systemfehlernummer .................................................................... 8-17 8.5 Beschreibung A-Parameter.......................................................................................................... 8-18 A-0-0001 Achsart ................................................................................................................... 8-18 A-0-0002 Sollwertkonfigurationsliste ..................................................................................... 8-18 A-0-0003 Istwertkonfigurationsliste........................................................................................ 8-19 A-0-0004 Sollwert Header...................................................................................................... 8-19 A-0-0005 Istwert Header........................................................................................................ 8-20 A-0-0006 Antriebsdeaktivierung............................................................................................. 8-20 A-0-0007 Telegrammart......................................................................................................... 8-20 A-0-0008 Antriebstyp ............................................................................................................. 8-21 A-0-0009 Fehlerzähler AT...................................................................................................... 8-22 9 Inbetriebnahmehilfsmittel 9-1 9.1 Allgemeines zu DriveTop ............................................................................................................... 9-1 9.2 Systemvoraussetzungen................................................................................................................ 9-2 9.3 Installation von DriveTop................................................................................................................ 9-2 Softwareinstallation von DriveTop ........................................................................................... 9-2 DriveTop starten ...................................................................................................................... 9-2 9.4 Funktionen...................................................................................................................................... 9-3 Menü Datei............................................................................................................................... 9-3 Menü Parameter ...................................................................................................................... 9-3 Menü Inbetriebnahme .............................................................................................................. 9-4 Menü Ansicht ........................................................................................................................... 9-4 Menü Extras ............................................................................................................................. 9-4 Menü Optionen ........................................................................................................................ 9-4 Menü Hilfe ................................................................................................................................ 9-4 Menü Rechte Maustaste .......................................................................................................... 9-5 9.5 Hilfsmittel "SoftSERCANSTest.exe" .............................................................................................. 9-5 10 Beispielprogramme 10-1 10.1 Microsoft Beispiele ....................................................................................................................... 10-1 RTX Umgebung ..................................................................................................................... 10-1 Windows NT Umgebung ........................................................................................................ 10-1 10.2 Borland Beispiele ......................................................................................................................... 10-2 RTX Umgebung ..................................................................................................................... 10-2 Windows NT Umgebung ........................................................................................................ 10-2 11 Aufgetretene Probleme 11-1 11.1 Probleme beim Start von SoftSERCANS..................................................................................... 11-1 DOK-SERCAN-SOFT-01VRS*-FK01-DE-P VI Inhaltsverzeichnis DLL für Zugriffe auf SoftSERCANS 11.2 Probleme mit dem Echtzeitkern RTX........................................................................................... 11-2 Probleme beim Deinstallieren von VenturCom RTX ............................................................. 11-3 Probleme mit ServicePacks von Microsoft ............................................................................ 11-3 Schreibschutz in der Imagedatei des RTSS-Prozesses........................................................ 11-4 Andere Startprobleme von RTSS-Prozessen ........................................................................ 11-5 Auslösen einer RTX "Green Screen" Exception .................................................................... 11-7 11.3 Probleme mit dem Debugger Softice von Numega ..................................................................... 11-8 11.4 Probleme mit Visual Studio und Visual C++ ................................................................................ 11-9 11.5 Probleme mit Borland C++ V5.02 .............................................................................................. 11-10 Einbindung einer Microsoft-DLL in ein Borland Projekt ....................................................... 11-12 11.6 Generelle Probleme beim Erstellen eigener Applikationen ....................................................... 11-13 12 Index 12-1 DOK-SERCAN-SOFT-01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS 1 Allgemeines 1-1 Allgemeines Die Anwendung digital geregelter Antriebe in numerisch gesteuerten Maschinen erfordert eine eigene digitale Schnittstelle zur numerischen Steuerung, die neben der Soll- und Istwertübertragung auch zusätzliche Funktionen erlaubt. Neben zukunftsweisenden Leistungsdaten muß die Schnittstelle fortschrittliche Betriebsarten mit erweitertem Datenumfang ermöglichen, Parametrierung und Diagnose unterstützen und vor allem ein problemloses Zusammenwirken der Produkte unterschiedlicher Hersteller gewährleisten. SERCOS interface, ein serielles Echtzeit-Kommunikationssystem, ist eine vereinbarte Spezifikation über Übertragungsmedium, Topologie, Anschlußtechnik, Signalpegel, Prozeduren, Telegramminhalte, Datenformate und Wichtungen. Damit wird ein Zusammenwirken von unterschiedlichen numerischen Steuerungen und Antrieben verschiedener Hersteller unter Nutzung der jeweiligen Produkteigenschaften sichergestellt. Beim SERCOS interface werden die Daten zwischen Steuerung und Antrieben über Lichtwellenleiter ausgetauscht. Dadurch wird jegliche gegenseitige Störbeeinflussung vermieden. Typisch ist der Anschluß von bis zu 8 Antrieben an einem Lichtwellenleiterring bei den üblichen Betriebsarten und bei 2 mSec Zykluszeit. Die genaue Anzahl der maximal je Ring bedienbaren Antriebe ist von der Zykluszeit, dem gewählten Datenumfang und der Datenrate abhängig. Eine einfache und kostengünstige SERCOS interface-Anschaltung für die Bewegungssteuerung SoftSERCANS macht die SERCOS interface Implementierung für die Steuerung einfach und kostengünstig. SoftSERCANS ist eine Masteranschaltung der SERCOS interface, die eine einfache und übersichtliche Softwareschnittstelle zwischen dem SERCOS interface Ring und der Steuerung erlaubt. Die Softwareschnittstelle ermöglicht eine bedeutende Vereinfachung der Implementierung der SERCOS interface. Dabei werden die Kenntnisse über die Hardware der SERCOS interface Anschaltung nicht vorausgesetzt. Die Hardware der SERCOS interface Anschaltung kann für den CNC-Entwickler anonym bleiben. SoftSERCANS baut auf eine bewährte Technologie, die als SERCANS seit 1996 zur Verfügung steht. SERCANS organisiert die Funktionen eines SERCOS interface Masters in einer aktiven SERCOS interfaceMasterkarte. SERCANS hat sich in mehr als 70 Steuerungen bewährt und stellt eine felderprobte stabile Technologie dar. SoftSERCANS ist eine Weiterentwicklung von SERCANS. Die Schnittstelle zwischen der Steuerung von dem SERCOS interface Ring ist nun auf der Ebene der Software. Dadurch konnten die Schnittstellenanforderungen wesentlich reduziert werden. SoftSERCANS benötigt anstatt einer aktiven SERCOS interface-Masterkarte eine passive SERCOS interface-Karte. Diese ist wesentlich kostengünstiger als die aktive Karte und damit eine wirtschaftlich und technisch attraktive Lösung auf Basis SERCOS interface. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 1-2 Allgemeines DLL für Zugriffe auf SoftSERCANS Diese bedeutende Vereinfachung in der Entwicklung einer Steuerung ist aus zwei Gründen möglich geworden: • SERCOS interface hat eine klar ausgebildete Struktur und eine sehr ausführliche Beschreibung der Anforderungen der Antriebstechnik. Dazu wurden mehrere Hundert Standardparameter definiert. Diese Voraussetzung ermöglicht eine Abbildung der SERCOS interface Schnittstelle auf eine Software-Ebene ohne den Verlust des Charakters eines Standards. Andere bekannte Protokolle verfügen nicht über eine ähnlich ausführliche Beschreibung, so daß eine ähnliche Abstraktion nur mit Hilfe eines proprietären Profils möglich ist, das keineswegs den Charakter eines Standards besitzt. • Das Aufkommen der leistungsfähigen Echtzeiterweiterung der Windows und die Aussicht, daß in naher Zukunft ein Standard der Betriebssysteme auf Basis der Echtzeiterweiterung von Windows geben wird, ermöglicht die Entwicklung der SoftSERCANS. Nutzung von SoftSERCANS Freie Software SoftSERCANS wird vom Entwickler und Inhaber des Sourcecodes, Rexroth Indramat GmbH, gepflegt und weiterentwickelt. Der Objectcode von SoftSERCANS wird als ein kostenloses Softwaremodul über Homepage von VenturCom (www.vci.com) , Interessengemeinschaft SERCOS interface (www.sercos.de) und SERCOS Nordamerika (www.sercos.com) zum Download zur Verfügung gestellt. Die Nutzung von SoftSERCANS setzt die Anerkennung der Lizenzvereinbarung voraus, ohne die die Installation von SoftSERCANS nicht fortgesetzt werden kann. In den Lizenzvereinbarungen werden die Rechte und Pflichten des SoftSERCANS-Anwenders dokumentiert. Dokumentation und weitere Produktinformationen Die Dokumentation von SoftSERCANS, Application Note und weitere Informationen werden auf der Homepage der Interessengemeinschaft SERCOS interface (IGS) bzw. SERCOS Nordamerika (SNA) veröffentlicht und regelmäßig aktualisiert. Kompetenzzentren Technische Unterstützungen werden nicht vom Inhaber des Sourcecodes gegeben. Für diese Dienstleistung stehen unabhängige Organisationen zur Verfügung, die als Kompetenzzentren Beratungen gegen Entgelt leisten. Die Liste der Kompetenzzentren wird auf der Homepage der Interessengemeinschaft SERCOS interface (IGS) bzw. SERCOS Nordamerika (SNA) aufgeführt. Fehler von SoftSERCANS werden an Kompetenzzentren gemeldet und geprüft. Die Fehler, die vom Kompetenzzentrum geprüft und anerkannt wurden, werden dem Inhaber des Sourcecodes gemeldet. Der Inhaber des Sourcecode beseitigt den Fehler zu einem frühstmöglichen Zeitpunkt. Auf der Website von IGS und SNA wird der Fehler und dessen Beseitigung bekanntgegeben. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Allgemeines 1-3 DLL für Zugriffe auf SoftSERCANS SERCOS interface SERCOS interface entstand aus der Notwendigkeit, eine digitale Standardschnittstelle für den Antrieb zu entwickeln, die die analoge ± 10 V Schnittstelle ersetzt. Die Entwicklung von SERCOS interface wurde 1987 initiiert. Die Spezifikation in der ersten Fassung wurde 1991 fertiggestellt. 1995 avancierte die SERCOS interface zur internationalen Norm IEC61491, 1998 zur europäischen Norm EN61491. Bei der Entwicklung von SERCOS interface wurde bewußt darauf verzichtet, den Anspruch auf eine Universalschnittstelle zu erheben. Man zielte strikt darauf ab, umfassend den antriebstechnischen Anforderungen zu genügen. Dabei standen folgende Ziele im Vordergrund: • Hochwertiger Determinismus und die Synchronisierungsgenauigkeit • Umfassende Beschreibung der antriebstechnischen Anforderungen Um eine hoch präzise Güte des Determinismus und der Synchronisierung zu erzielen, entwickelte man Mechanismen, die die Güte des Determinismus von der Übertragungsrate und der gewählten Zykluszeit entkoppeln. Der Determinismus von SERCOS interface im Bereich kleiner 1 µs wird von der Taktfrequenz der Quarzuhr der SERCOS interface-Anschaltung bestimmt. Auf diesem Weg kann man bei SERCOS interface die Zykluszeit der Übertragung frei wählen, ohne die Qualität des Determinismus und der Synchronisierung einzubüßen. Um eine Standardisierung der Antriebstechnik zu realisieren, benötigt man umfassende Vereinbarungen. Ein herstellerübergreifender Standard läßt sich bei der Komplexität der Antriebsschnittstelle ohne umfassende Beschreibungen der Mechanismen nicht realisieren. So entstanden im Verlaufe der Entwicklung der SERCOS interface mehrere Hunderte von normierten Parametern. Die Industrie reagierte zunächst abweisend. Die Komplexität und die große Anzahl der Parameter wurden zunächst der Kritikpunkt der SERCOS interface. Heute weiß man, daß die große Anzahl der herstellerübergreifend definierten Parametern eine Stärke von SERCOS interface ist. Die Antriebstechnik hat in Zukunft zwei wesentliche Aufgaben zu erfüllen: • Beschreibung und getreue Ausführung der vorprogrammierten Bewegungen. • Funktion der Informationsquelle in einer vernetzten Produktion. Gerade aus der Sicht der Informationstechnologie ist es wertvoll, daß alle wesentlichen Antriebsdaten herstellerübergreifend normiert sind. Das umfassende und in jahrelangen Felderprobungen ausgereifte Protokoll von SERCOS interface stellt sich als eine der kostbarsten Eigenschaften der SERCOS interface heraus. Ohne detailliertes Protokoll wäre die Abstraktion der Schnittstelle auf eine Softwareebene wie SoftSERCANS nicht möglich gewesen. Heute, wo wir vor einer umfassenden Verflechtung der Automatisierungstechnik und der Informationstechnologie stehen, ist SERCOS interface wertvoller denn je. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 1-4 Allgemeines DLL für Zugriffe auf SoftSERCANS SERCANS SoftSERCANS ist ein Ergebnis der natürlichen Evolution, die mit SERCANS 1994 begann. SERCOS interface hat umfassende Mechanismen, die die Funktionsfähigkeit der Systeme aus herstellerübergreifenden Produkten sicherstellen. Ein Master des SERCOS interface Ringes muß bei der Initialisierung unter anderem diverse Daten von den Ringteilnehmern anfordern und eine Zeitschlitzrechnung durchführen. Die Komplexität des Initialisierungsprozesses verursachte eine relativ hohe Schwelle für jeden Entwickler, der SERCOS interface einführen wollte. So entstand die Idee, daß man mit SERCANS die Komplexität des Initialisierungsprozesses anonym macht. SERCANS ist eine aktive SERCOS interface-Masterkarte. Die installierte Software initialisiert und managt den SERCOS interface Ring selbständig. Die Schnittstelle zwischen SERCOS interface Ring und der CNC-Steuerung reduziert sich auf eine DPR-Schnittstelle. SERCANS kennt keine Einschränkung des Betriebssystems der CNC-Steuerung. Der Steuerungsentwickler benötigt nun nur eine kleine Anzahl von Vereinbarungen. Die Einhaltung des Zeitrasters, der durch den zyklischen Interrupt definiert wird, und die Kenntnis der DPR-Adressen und deren Bedeutungen genügen, um SERCOS interface zu implementieren. SERCANS wird seit 1996 in mehr als 70 Steuerungen weltweit eingesetzt und hat eine Reife erreicht. SoftSERCANS Die Beobachtung, daß die Echtzeiterweiterung von Windows in Zukunft der Quasi-Standard des Betriebssystems sein wird, führte zur Entscheidung, SoftSERCANS zu entwickeln. Nach einer Untersuchung des Marktes der Echtzeiterweiterungen von Windows wurde RTX von VenturCom als das Betriebssystem für SoftSERCANS ausgewählt. SoftSERCANS benötigt anstatt einer aktiven SERCOS interfaceMasterkarte eine passive SERCOS interface-Karte. Die passive SERCOS interface-Karte hat einen einfacheren Aufbau und ist deutlich kostengünstiger als eine aktive SERCOS interface-Karte. Somit wird die Realisierung der SERCOS interface-Masteranschaltung preiswerter. Die Funktionalitäten des SERCOS interface-Masters wird nun vom PCProzessor ausgeführt. SoftSERCANS bietet der CNC-Steuerung eine DLL-Schnittstelle. Damit ist die Hardware der Masteranschaltung für die CNC-Entwickler anonym. Die Abstraktion auf einer Software-Ebene reduziert den Aufwand der SERCOS interface-Implementierung für eine Steuerung auf ein Minimum. Vision für einen neuen Automatisierungsmarkt Auf SoftSERCANS können modulare offene CNC-Softwarekomponenten entwickelt werden, wie das Modell von OSACA vorsieht. Werden solche Bausteine auf dem Markt angeboten, so kann der Entwicklungsaufwand einer CNC-Steuerung in Zukunft bedeutend reduziert werden. So können in Zukunft für CNC-Grundfunktionalitäten und HMI Standardbausteine, die auf dem Markt angeboten werden, eingesetzt werden. Die Entwicklung kann auf Umsetzung des applikationsspezifischen Know-How des Entwicklers beschränkt werden. So läßt sich mit einem wesentlich kleineren Aufwand eine vollwertige CNC-Steuerung mit einem vertrauten Look und Feel realisieren. Die neue Infrastruktur wird den Endanwendern neue Möglichkeiten bieten. Bisher war man auf CNC-Steuerungen von einer kleinen Anzahl von Herstellern angewiesen. Die Produkte waren ausgerichtet ein möglichst breites Spektrum der Anwendungen abzudecken. Sie waren nicht in der Lage, auf verfahrenstechnische Bedürfnisse der jeweiligen Fertigung einzugehen. Die neue Infrastruktur erlaubt es einer Vielzahl der neuen CNC-Hersteller Produkte wirtschaftlich zu entwickeln, die auf spezielle Bedürfnisse eines kleinen Marktsegments ausgerichtet sind, und diese zu vertreiben. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Allgemeines 1-5 DLL für Zugriffe auf SoftSERCANS 1.1 Systemvoraussetzungen Für die Nutzung von SoftSERCANS müssen folgende Komponenten installiert werden: Software Hardware: 1.2 • Microsoft Windows NT 4.0, mindestens 32MB RAM (64 MB empfohlen) • Echtzeit-Betriebssystem-Erweiterung VenturCom RTX ab Version 4.2 • empfohlen: Microsoft Visual C++ ab Version 5.0 (für Testzwecke) • empfohlen: Debugger Numega Softice ab Version 3.2 • Testprogramm SoftSERCANSTest ab V1.0, Hilfsmittel zur Funktionsüberprüfung von SoftSERCANS ohne Echtzeitzugriffe. • Motherboards der neuesten Generation (ab Pentium II) • PC-Einsteckkarte (siehe Kap. 2, "Installation der Hardware") Komponenten von SoftSERCANS Hardware SoftSERCANS benötigt eine passive SERCOS interface Karte. ISA-Bus und PCI-Bus Karten sind zur Zeit verfügbar. Es wird empfohlen, Karten einzusetzen, die vom Inhaber des Sourcecodes im Labor auf Eignung geprüft wurden. Die Hardware, die geprüft worden sind, und deren empfohlene Konfigurationen, werden auf der Homepage der Interessengemeinschaft SERCOS interface (IGS) bzw. SERCOS Nordamerika (SNA) veröffentlicht. Zur Zeit werden folgende passive SoftSERCANS Karten unterstützt: SERCOS ISA-Bus PC-Einsteckkarte Version 1.0 AUTOMATA GmbH & Co. KG Industrial & Robotic Controls Waldstraße 7 D-85757 Karlsfeld/Rothschwaige (+49-(0)8131-98146 2+49-(0)8131-97690 [email protected] www.automata.de SERCEB PC-Einsteckkarte mit ISA-Bus Version 1.0 IAM F&E GmbH Richard-Wagner-Straße 1 D-38106 Braunschweig (+49-(0)531-3802-0 2+49-(0)531-3802-110 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 1-6 Allgemeines DLL für Zugriffe auf SoftSERCANS Software Die Systemsoftware SoftSERCANS beinhaltet alle zum Betrieb vom zertifizierten SERCOS interface Antrieben notwendigen Komponenten. SoftSERCANS ermöglicht: • den Betrieb von bis zu 40 SERCOS interface Antrieben im Ring, • den einfachen Austausch von Echtzeitdaten zwischen SoftSERCANS und Windows oder RTX Prozessen, • eine leichtverständliche Telegrammkonfiguration, • direkt zugängliche Diagnose aller Antriebe, • parallel aktivierbare Kommandokanäle, • Zugriff auf alle Parameter im System, • Multi-Prozessing, d.h. es können beliebig viele Prozesse gleichzeitig mit SoftSERCANS kommunizieren. Antriebshardware SoftSERCANS stellt den Anspruch, alle Aspekte der SERCOS interface zu genügen. Es gibt grundsätzlich keine Präferenz für eingesetzte Produkte, sofern das Produkt von IGS zertifiziert ist. Es wird empfohlen, von IGS zertifizierte Hardware einzusetzen. Sowohl die Kompetenzzentren als auch der Inhaber von Sourcecode können nur für Probleme, die beim Einsatz der von IGS zertifizierten Produkten entstanden sind, Hilfe und Lösungen bereitstellen. Die Produkte, die den Anspruch erheben, SERCOS interface kompatibel zu sein, aber keine Zertifizierung von IGS hat, haben in der Regel Probleme im Bereich der Konformität, die nicht notwendigerweise mit SoftSERCANS zu tun hat. Diese Probleme lassen sich oft beheben, wenn das Produkt die Konformitätsprüfung von IGS mit Erfolg besteht. So wird von den Kompetenzzentren und dem Inhaber der Sourcecode abgelehnt, sich mit Problemen der nicht zertifizierten Produkte zu beschäftigen. Der Hersteller des nicht zertifizierten Produktes ist zunächst in Nachweispflicht der SERCOS interface-Konformität des Produktes. Der einzige Nachweis, den die Kompetenzzentren und der Inhaber des Sourcecodes anerkennen, ist die Zertifizierungsprüfung der IGS. Die Liste der von IGS zertifizierten Produkte finden Sie auf der Homepage von IGS bzw. SNA. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Installation der Hardware 2-1 DLL für Zugriffe auf SoftSERCANS 2 Installation der Hardware 2.1 ISA-Bus AUTOMATA SERCOS PC-Einsteckkarte Auf der Einsteckkarte befinden sich 2 Schalterreihen (S0 und S1) die vom Benutzer eingestellt werden müssen. Alle anderen Einstellungen müssen in der werkseitigen Einstellung belassen werden. Die werkseitige Einstellung ist wie unten dargestellt. Diese Einstellung entspricht einer Basisadresse 0xD8000. bestück_plan.tif Abb. 2-1: Bestückungsplan der AUTOMATA SERCOS PC-Einsteckkarte Einstellung der Kartenadresse Folgende Einstellungen sind vor dem Einbau eventuell durchzuführen: • Mit der Schalterreihe S0 sind folgende Einstellungen möglich: Schalter 8 7 6 5 Bedeutung -- -- -- -- 4 3 2 ADR ADR ADR 23 22 21 1 ADR 20 • Mit der Schalterreihe S1 sind folgende Einstellungen möglich: Schalter Bedeutung 8 7 6 5 4 3 ADR ADR ADR ADR ADR ADR 19 18 17 16 15 14 Schalterstellung ON: Adressbit = 0 Schalterstellung OFF Adressbit = 1 2 1 ADR 13 ADR 12 Die Karte belegt einen Adressbereich von 16kB. Übliche Adressbereiche liegen im Adressbereich 0xC8000 bis 0xD8000. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 2-2 Installation der Hardware Beispiele der Adresseinstellung DLL für Zugriffe auf SoftSERCANS Beispiel 1: Kartenadresse 0xD0000 S0 S1 8 7 6 5 4 3 2 1 - - - - ON ON ON ON 8 7 6 5 4 3 2 1 OFF OFF ON OFF ON ON ON ON Beispiel 2: Kartenadresse 0xC0000 S0 S1 8 7 6 5 4 3 2 1 - - - - ON ON ON ON 8 7 6 5 4 3 2 1 OFF OFF ON ON ON ON ON ON Einstellung der Interrupts Der benötigte Interrupt wird während der Installation (siehe Kap. 3, "Installation der Software") erfragt und in der Karte eingestellt. Für den zyklischen Interrupt (Synchronisation Soll-/Istwerte) sollte ein möglichst hochpriorer (empfohlen IRQ 10) freier Interrupt ausgewählt werden. Dieser Interrupt bestimmt den zyklischen Datenaustausch und erfordert damit einen möglichst niedrigen Jitter. Hinweis: Ein Anpassen dieses Interrupts nach erfolgter Installation ist mit dem Programm ...\bin\SoftSERCANSTest.exe möglich. Einbau der Einsteckkarte • Schalten Sie Ihren Rechner aus und öffnen Sie das Gehäuse nach den Anweisungen des Herstellers. • Entfernen Sie die Blechabdeckung hinter einem freien 16 Bit-ISASteckplatz. • Nehmen Sie die Interface - Karte aus der Antistatik-Hülle. Vermeiden Sie, daß die Karte mit elektrostatisch aufgeladenen Teilen in Berührung kommt. • Überprüfen Sie die Einstellungen der Schalter S0 und S1. Notieren Sie sich diese Einstellungen gegebenenfalls. • Stecken Sie die Karte auf den gewählten Steckplatz und verschrauben Sie die Frontplatte mit dem Rechnergehäuse. • Verschrauben Sie das Rechnergehäuse und schließen Sie Ihren PC wieder an. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Installation der Hardware 2-3 Serceb-Karte Von der Firma IAM F & E GmbH Richard-Wagner-Straße 1 D-38106 Braunschweig Tel. 0531/3802-0 Fax 0531/3802-110 kann eine 16 bit-ISA-Karte bezogen werden. Die notwendigen Einstellungen sind der Beschreibung zu entnehmen. serceb.tif Abb. 2-2: Serceb-Karte DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 2-4 Installation der Hardware DLL für Zugriffe auf SoftSERCANS DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Installation der Software 3-1 DLL für Zugriffe auf SoftSERCANS 3 Installation der Software VORSICHT Installation von Disketten Es liegt in der Verantwortung des Benutzers, alle Anwenderdaten zu archivieren bevor die Installation vorgenommen wird. Desweiteren ist darauf zu achten, daß immer nur eine Version von SoftSERCANS auf dem Zielsystem installiert wird. ⇒ Bei der Installation von Disketten legen Sie die 1. Diskette in das entsprechende Laufwerk (normalerweise Laufwerk A) Ihres PCs ein. Hinweis: Zur weiteren Beschreibung wird davon ausgegangen, daß im Falle der Disketteninstallation das Laufwerk A verwendet wird. Zum Betrieben Voraussetzung. von SoftSERCANS ist das installierte RTX Um die Installation des Inbetriebnahme-Tools zu starten, gehen Sie wie folgt vor: ⇒ Klicken Sie auf Start und dann auf die Option "Ausführen". ⇒ Geben Sie im Textfeldbereich der Dialogbox "A:\Setup.exe" ein. ⇒ Klicken Sie anschließend auf die <OK>-Schaltfläche und die Installation des Inbetriebnahme-Tools wird gestartet. AusführenSetup.jpg Abb. 3-1: Dialogfeld "Ausführen" von Windows NT: Disketteninstallation DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 3-2 Installation der Software DLL für Zugriffe auf SoftSERCANS Im ersten Dialog können Sie die Sprache des InstallShield® Assistenten, auswählen. ⇒ Klicken Sie hierzu auf den Pfeil rechts neben der Standardeinstellung "Deutsch" und wählen Sie die gewünschte Sprache des Installationsprogramms durch Anklicken aus. ⇒ Klicken Sie anschließend auf die <OK>-Schaltfläche. Sprachauswahl.jpg Abb. 3-2: Auswahl der Sprache des InstallShield Assistenten Nach Auswahl der Sprache erscheint der Hauptbildschirm des Installationsprogramms, in dem ein Fenster mit Informationen des Installationsprogramms für ca. drei Sekunden anzeigt wird. Setup1.jpg Abb. 3-3: 1. Meldung des Installationsprogramms DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Installation der Software 3-3 Anschließend erscheint ein Fenster, das Sie zur Installation des Inbetriebnahme-Tools willkommen heißt. Hinweis: Beachten Sie bitte die Anweisungen, die Ihnen hier gegeben werden. Durch das Klicken auf die <Abbrechen>-Schaltfläche wird das Installationsprogramm abgebrochen. ⇒ Klicken Sie auf die <Weiter>-Schaltfläche um das Installationsprogramm fortzusetzen. Setup2.jpg Abb. 3-4: Willkommen-Bildschirm des Installationsprogramms Im nächsten Fenster wird der Softwarelizenzvertrag angezeigt. Mit der Nach-Unten-Taste (Cursor-Taste) können Sie sich den kompletten Lizenzvertrag anzeigen lassen. Hinweis: Für die Installation von SoftSERCANS müssen Sie diesem Lizenzvertrag zustimmen. Durch Klicken auf die <Nein>Schaltfläche wird die Installation abgebrochen. Mit der <Zurück>-Schaltfläche können Sie zum vorhergehenden Fenster zurückkehren. ⇒ Wenn Sie allen Bedingungen des Softwarelizenzvertrags zu stimmen, dann klicken Sie auf die <Ja>-Schaltfläche. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 3-4 Installation der Software DLL für Zugriffe auf SoftSERCANS Setup3.jpg Abb. 3-5: Bedingungen des Softwarelizenzvertrages Im nächsten Fenster sehen Sie noch einige allgemeine Informationen zum Inbetriebnahmetool. Setup4.jpg Abb. 3-6: Allgemeine Informationen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Installation der Software 3-5 Hardware.bmp Abb. 3-7: Hardware In den 2 folgenden Fenstern werden Sie aufgefordert, kartenspezifische Parameter einzugeben. ⇒ Geben Sie bitte die Parameter ein, die Sie auf der PC-Einsteckkarte eingestellt haben bzw. auf Ihrem PC zur Verfügung stehen. ⇒ Klicken Sie anschließend jeweils auf die <Weiter>-Schaltfläche um die Installation fortzusetzen. Setup5.jpg Abb. 3-8: Eingabe der Kartenresourcen (Interrupt) ⇒ Dieser zyklische Interrupt sollte ein möglichst hochpriorer Interrupt sein. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 3-6 Installation der Software DLL für Zugriffe auf SoftSERCANS Hw_adr.bmp Abb. 3-9: Kartenadresse Die Kartenadresse muß mit der auf der Hardware eingestellten Adresse übereinstimmen. Wenn Sie die Einstellungen vorgenommen haben, erscheint zur Bestätigung ein entsprechendes Fenster: Resource.bmp Abb. 3-10: Bestätigung der eingegebenen Kartenresourcen Hinweis: Die bestätigten Einstellungen werden wie folgt in die Registrierung des Rechners übernommen und zur Kontrolle beim Programmstart von der DLL ausgelesen. Ohne diese Installation fehlen diese Einträge und der Echtzeitkern kann nicht gestartet werden! Einträge in der Registrierung: Reg.bmp Abb. 3-11: Registrierungseinträge von SoftSERCANS DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Installation der Software 3-7 In dem anschließenden Fenster können Sie den Zielpfad wählen. Bei der Standardinstallation wird der Zielpfad "C:\SoftSERCANSTest" vorgeschlagen. Hinweis: Es wird empfohlen, diese Bezeichnung zu wählen, eventuell auf einem anderen Laufwerk. Beachten Sie hierbei, daß immer nur eine Version des Inbetriebnahme-Tools auf dem Zielsystem installiert wird. Um den Standardpfad zu ändern, klicken Sie auf die <Durchsuchen>-Schaltfläche. Wählen Sie dann das entsprechende Laufwerk und das Verzeichnis aus. ⇒ Durch Klicken auf die <Weiter>-Schaltfläche können Sie die Installation fortsetzen. Abb311.bmp Abb. 3-12: Auswahl des Installationszielpfades Im nächsten Installationsschritt wird ein neuer Programmordner angelegt Sie haben hier aber auch die Möglichkeit einen vorhandenen Programmordner zu verwenden. ⇒ Um in einen vorhandenen Programmordner Symbole hinzuzufügen, klicken Sie den Ordner an, ansonsten geben Sie den Namen des neuen Programmordners im Textfeldbereich "Programmordner:" ein. ⇒ Durch Klicken auf die <Weiter>-Schaltfläche wird die Installation fortgesetzt. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 3-8 Installation der Software DLL für Zugriffe auf SoftSERCANS Setup10.jpg Abb. 3-13: Auswahl des Programmordners Die folgende Abbildung stellt den Kopiervorgang dar. Im linken Bereich werden drei Balken für Installationsstatus der aktuell kopierten Inbetriebnahme-Tool Komponente sowie der Kopierstatus vom eingelegten Medium (Diskette, CD-ROM) und die freie Festplattenkapazität angezeigt. Falls die Kapazität Ihrer Festplatte für die Installation nicht ausreichend ist, wird das Installationsprogramm mit einer entsprechenden Meldung abgebrochen. Das Statusfenster in der Mitte stellt anhand eines Balkens den Fortschritt der Gesamtinstallation in Prozent dar. Setup_Fortschritt.jpg Abb. 3-14: Statusinformationen zum Kopiervorgang DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Installation der Software 3-9 Hinweis: Durch Klicken auf die <Abbrechen>-Schaltfläche wird die Installation abgebrochen. Bei der Disketteninstallation werden Sie aufgefordert weitere Disketten einzulegen. ⇒ Legen Sie die entsprechende Diskette in das Laufwerk und klicken Sie auf die <OK>-Schaltfläche um mit der Installation fortzufahren. Diskette2.jpg Abb. 3-15: Einlegen der nächsten Diskette Es erfolgt der Hinweis, daß die Rechnerneustart ist nicht notwendig. Installation beendet ist. Ein Setup11.jpg Abb. 3-16: Setup abgeschlossen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 3-10 Installation der Software DLL für Zugriffe auf SoftSERCANS DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Übersicht, Grundeinstellungen 4-1 4 Übersicht, Grundeinstellungen 4.1 Benötigte Komponenten, Betriebssystem Für die Nutzung von SoftSERCANS müssen folgende Komponenten installiert und verwendet werden: • Microsoft Windows NT 4.0, mindestens 32MB RAM (64 MB empfohlen) • Echtzeit-Betriebssystem-Erweiterung Ventur Com RTX ab Version 4.2 • empfohlen: Microsoft Visual C++ ab Version 5.0 • alternativ ohne Echtzeitkern (nur Testphase): Borland C++ ab Version 5.0 • optional: Debugger Numega Softice ab Version 3.2, für Debuggen der eigenen Echtzeitanwendungen • Testprogramm SoftSERCANSTest ab V1.0. Hilfsmittel zur Funktionsüberprüfung von SoftSERCANS ohne Echtzeitzugriffe. Hardware: • Motherboards der neuesten Generation (ab Pentium II) z.B. ASUS P5A-B (getestet) • PC-Einsteckkarte SoftSERCANS 4.2 Verzeichnisstruktur empfohlene Arbeitsverzeichnisstruktur: Dir.bmp Abb. 4-1: Verzeichnisstruktur für die Programmentwicklung DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-2 Übersicht, Grundeinstellungen DLL für Zugriffe auf SoftSERCANS Die nachfolgend aufgelisteten Programme sind für eigene Anwendungsentwicklungen unbedingt erforderlich. Verzeichnis Bin: Dieses Verzeichnis enthält alle Programme die für die Ausführung der Anwendung erforderlich sind: • SoftSERCANSEXE.Dll (die hier beschriebene DLL) • SoftSERCANSRTX.rtss (der Echtzeitkern von SoftSERCANS) • SoftSERCANSTest.exe (Programm zur Funktionskontrolle während der eigenen Programmentwicklung) • Anwender.exe (Ihr Anwendungsprogramm) • alle Beispielprogramme als ausführbare Datei Hinweis: Eigene Anwendungen müssen im gleichen Verzeichnis (hier Bin), in dem sich die DLL "SoftSERCANS.DLL" und "SoftSERCANS.rtss" befinden, gestartet werden! Verzeichnis include: • SoftSERCANS.h wicklung) (Headerdatei • SoftSERCANSANSIC.h wicklung) für (Headerdatei C++/Pascal++ für ANSIC ProgrammentProgramment- • SoftSERCANSdefs.h (Definitionsdatei für Fehlercodes und Strukturen) • SoftSERCANSReg.h (Datei für die DLL-Versionsverwaltung) • SoftSERCANS.def (einzubindende Definitionsdatei für Entwicklungen unter Pascal++) • SoftSERCANS.lib (einzubindende Bibliotheksdatei für ANSIC und C++ Programmentwicklungen) • Borland.def (Moduldefinitionsdatei für Borland C/C++ Applikationen) Verzeichnis MicrosoftSamples: Verzeichnis BorlandSamples: Verzeichnis lib: Verzeichnis für Beispiele, eigene Entwicklungen mit Visual C++ Verzeichnis für Beispiele, eigene Entwicklungen BorlandC • SoftSERCANSEXE.lib (Funktions-Bibliothek zum Einbinden in eine Windows-Anwendung) • SoftSERCANSRTX.lib (Funktions-Bibliothek zum Einbinden in eine RTX-Anwendung) DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Übersicht, Grundeinstellungen 4-3 DLL für Zugriffe auf SoftSERCANS 4.3 Darstellung der DLL in der Entwicklungsumgebung :LQGRZV &$SSOLNDWLRQ :LQGRZV $16,&$SSOLNDWLRQ 57;$16,& $SSOLNDWLRQ +HDGHUGDWHLHQ +HDGHUGDWHLHQ +HDGHUGDWHLHQ 6RIW6(5&$16K 6RIW6(5&$16$16,&K 6RIW6(5&$16$16,&K 6RIW6(5&$16GHIVK 6RIW6(5&$16GHIVK 6RIW6(5&$16GHIVK 6RIW6(5&$16UHJK 6RIW6(5&$16UHJK 6RIW6(5&$16UHJK 3URJUDPPHQWZLFNOXQJVVFKLFKW /LEGDWHL /LEGDWHL /LEGDWHL 6RIW6(5&$16(;(OLE 6RIW6(5&$16(;(OLE 6RIW6(5&$1657;OLE '//6RIW6(5&$16'DWHL 6RIW6(5&$16(;(GOO $16,&)XQNWLRQHQIU=XJULII DXI5766LQGHU'DWHL 6RIW6HUF57;UWVV 6\VWHPVFKLFKW 5W)XQNWLRQHQV\QFKURQLVLHUWHU =XJULIIDXI6KDUHG0HPRU\ 5HDO7LPH6XE6\VWHP 6RIW6(5&$16+DUGZDUH (FKW]HLWVFKLFKW XQDEKlQJLJYRQ :LQGRZV17 /LFKWZHOOHQOHLWHUULQJ DLLÜbersicht.wmf Abb. 4-2: Übersicht DLL und Umgebung DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-4 Übersicht, Grundeinstellungen DLL für Zugriffe auf SoftSERCANS Für Compilerläufe müssen die in der Programmentwicklungsschicht angeführten Dateien mit in das Projekt eingebunden werden. Im ANSIC-Sourcecode: // extern declared functions from library #include "..\include\SoftSERCANSANSIC.h" im Microsoft C++-Sourcecode: // include DLL header #include "..\include\SoftSERCANS.h" im Borland C/C++-Sourcecode: // include DLL header #include "..\include\SoftSERCANSANSIC.h" Anpassung der Projektdateien: Im Microsoft ANSIC/C++Sourcecode: im Borland C/C++-Sourcecode: Bibliotheksdatei "SoftSERCANS.lib" Projektdateien hinzufügen (im lib-Verzeichnis) zu den Moduldatei Borland.def zu den Projektdateien hinzufügen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Übersicht, Grundeinstellungen 4-5 DLL für Zugriffe auf SoftSERCANS 4.4 Inhalte der eingebundenen Headerdateien Headerdatei "SoftSERCANS.h" Diese Datei enthält alle für C++ und Pascal++ erforderlichen Klassendefinitionen bzw. für Pascal die entsprechenden Wrapperfunktionen. Für C++: // please define _EXPORTING in projektoptions of DLL // as preprocessor #ifdef _EXPORTING // from DLL #define CLASS_DECLSPEC __declspec(dllexport) #else // from Delphi/C++ application #define CLASS_DECLSPEC __declspec(dllimport) #endif class CLASS_DECLSPEC CSoftSERCANS { public: ///////////////////////////////////////////////////////////////////////////////////////// // here all functions are declared for access in C++ // ///////////////////////////////////////////////////////////////////////////////////////// CSoftSERCANS(); // meets InitObject(), therefor no "virtual" ///////////////////////////////////////////////////////////////////////////////////////// // program control // ///////////////////////////////////////////////////////////////////////////////////////// // RTSS initialize virtual ULONG Start_SoftSERCANS(); für Pascal ++: // start up RTSS, checks card and returns errorcode inline ULONG CLASS_DECLSPEC Start_SoftSERCANS( CSoftSERCANS* p_CCpointer) { if(p_CCpointer!=NULL) return p_CCpointer->Start_SoftSERCANS(); else return DLL_NO_CLASS; } Diese sogenannte Wrapperfunktion greift über den p_CCpointer auf die Klasse CSoftSERCANS in C++ zu. Hilfszeiger Somit muß diese Datei lediglich mittels #include in den C++-Sourcecode eingebunden werden. In Pascal hingegen werden die Einsprungadressen in die Wrapperfunktionen mittels der Definitionsdatei generiert. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-6 Übersicht, Grundeinstellungen DLL für Zugriffe auf SoftSERCANS Die Moduldefinitionsdatei "SoftSERCANS.def" Diese Datei muß in das Pascal-Projekt mit aufgenommen werden und dient dem Compiler als Einsprungadresstabelle für die dort eingebundenen DLL-Wrapperfunktionen. Die Datei sieht wie folgt aus: // Originaldatei: LIBRARY SoftSERCANS DESCRIPTION "DLL calls from Borland Delphi" EXPORTS SoftSERCANSInitObject @1 Start_SoftSERCANS @2 Terminate_SoftSERCANS @3 SoftSERCANSUnInitObject @4 GetDLLVersion @6 Write_ServiceParameter @10 Read_ServiceParameter @11 Data2List @12 List2Data @13 Read_A_Name @20 Read_A_Attribute @21 Read_A_Unit @22 Read_A_Minimum @23 Read_A_Maximum @24 Read_A_Parameter @25 Write_A_Parameter @26 Read_Y_Name @40 Read_Y_Attribute @41 Read_Y_Unit @42 Read_Y_Minimum @43 Read_Y_Maximum @44 Read_Y_Parameter @45 Write_Y_Parameter @46 Read_SP_Name @60 Read_SP_Attribute @61 Read_SP_Unit @62 Read_SP_Parameter @63 Read_SP_Minimum @64 Read_SP_Maximum @65 Write_SP_Parameter @66 Read_Actual_Diagnosis @80 Die Nummern hinter den Funktionen können beliebig vergeben werden, sie dürfen jedoch nicht doppelt verwendet werden. Dabei ist folgendes zu beachten: Die Datei muß innerhalb des DLL-Projekts gepflegt werden. Sie wird beim Compilerlauf auf korrekte Syntax geprüft. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Übersicht, Grundeinstellungen 4-7 Die Funktionsdefinitionsdatei "SoftSERCANSANSIC.h" Diese Datei muß in alle ANSIC-Projekte mittels der #include-Direktive eingebunden werden. Dabei ist folgendes zu beachten: Die Datei wird innerhalb des DLL-Projekts gepflegt, sie kann jedoch nur durch Einbindung in ein ANSIC-Testprogramm auf Richtigkeit der Syntax geprüft werden. Der Compiler im DLL-Projekt checkt diese Datei nicht. Die Lib-Datei "SoftSERCANSEXE.lib" und "SoftSERCANSRTX.lib" Diese Datei dient ANSIC- und C++-Projekten ähnlich der Definitionsdatei als Einsprungadresstabelle für die Bibliotheksfunktionen. Die Moduldefinitionsdatei "Borland.def" Diese Datei muß in alle Borlandentwicklungen eingebunden werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-8 Übersicht, Grundeinstellungen 4.5 DLL für Zugriffe auf SoftSERCANS Prinzipielle Wege beim Funktionsaufruf aus einer Applikation Hier werden kurz die Wege aufgezeigt, welche beim Funktionsaufruf einer DLL-Funktion durchlaufen werden. 9LVXDO& $16,& 57;$16,& %RUODQG&& )XQNWLRQVDXIUXI )XQNWLRQVDXIUXI )XQNWLRQVDXIUXI )XQNWLRQVDXIUXI GHILQH%25/$1' +HDGHUGDWHL 6RIW6(5&$16K +HDGHUGDWHL +HDGHUGDWHL 6RIW6(5&$16 6RIW6(5&$16 +HDGHUGDWHL $16,&K $16,&K 6RIW6(5&$16 $16,&K ]XU&RPSLOLHU]HLW /LEGDWHL /LEGDWHL /LEGDWHL 6RIW6(5&$16 6RIW6(5&$16 6RIW6(5&$16 (;(OLE (;(OLE 57;OLE 'HILQLWLRQVGDWHL %RUODQGGHI :LQ$SSOLNDWLRQ $SSOLFDWLRQH[HUWVV &RPSLOHUSURGXNW 9HU]HLFKQLV%LQ ]XU/DXI]HLW '//$XIUXILQ 6RIW6(5&$16(;(GOO 9HU]HLFKQLV%LQ )XQNWLRQVDXIUXILQ (FKW]HLWNHUQ57;9 6RIW6(5&$1657;UWVV (FKW]HLWNHUQ IHWWJHGUXFNWEHQ|WLJWH'DWHLHQIUGHQMHZHLOLJHQ&RPSLOHU DLLAufrufe.wmf Abb. 4-3: Ablauf bei der Erstellung verschiedener Applikationen Für Pascalprogramme ergibt sich ein Nachteil: Die in der Datei "SoftSERCANS.h" bzw. "SoftSERCANSANSIC.h" eingebundenen Definitionsdateien "SoftSERCANSdefs.h" und "SoftSERCANSreg.h" können in Pascal nicht verwendet werden. Deshalb müssen die dort definierten Strukturen, Fehlercodes und Konstanten 1:1 in Pascal neu erstellt werden (Datei "SoftSERCANS.pas"). Es ist sehr wichtig, daß Strukturen bei Funktionsaufrufen korrekt nachgebildet werden, da sonst Exception-Fehler entstehen können. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Übersicht, Grundeinstellungen 4-9 DLL für Zugriffe auf SoftSERCANS Auszug aus einer Pascaldefinitionsdatei ("SoftSERCANS.pas"): type //--------------------------------------------------------------------// Types for PicDrv.Pas //--------------------------------------------------------------------CSoftSERCANS = class // Empty Class as Object-Pointer end; p_CSoftSERCANS = ^CPicDrv; // Object-Pointer for driver-object // in interface because for using // in PicTest.Pas, not for application // DLL version // ATTENTION: // read DLL version, must be exactly the same structures // as declared in file "SoftSERCANSdefs.h" DLL_Version = record strVersion : array[1..31] of char; strDate : array[1..31] of char; strName : array[1..31] of char; end; Struktur in der C++-Datei "SoftSERCANSdefs.h": /////////////////////////////////////// // DLL-Version // /////////////////////////////////////// typedef struct { } DOK-SERCAN-SOFT*01VRS*-FK01-DE-P char strVersion[31]; // "1.02" char strDate[31]; char strName[31]; DLL_VERSION; // "erstellt am 22.12.1998" // "SOFTSERCANS DLL, Indramat GmbH" 4-10 Übersicht, Grundeinstellungen 4.6 DLL für Zugriffe auf SoftSERCANS Wichtige Grundeinstellungen in Visual Studio Der Arbeitsbereich einer Visual C++ - Anwendung sieht wie folgt aus: Abb44.bmp Abb. 4-4: Arbeitsbereich einer Visual C++ - Anwendung DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Übersicht, Grundeinstellungen 4-11 Das Einbinden der Datei "SoftSERCANS.h" (siehe vorheriges Bild) hat den Vorteil, daß die Bibliotheksklasse CSoftSERCANS im Arbeitsbereich als Klasse sichtbar ist. Die DLL-Funktionen sind so im Projekt übersichtlich dargestellt: Abb45.bmp Abb. 4-5: Die DLL-Klasse CSoftSERCANS in einem Visual C++-Projekt DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-12 Übersicht, Grundeinstellungen DLL für Zugriffe auf SoftSERCANS In den Projekteinstellungen von Visual Studio muß für C++- und ANSICProjekte folgende Einstellung vorgenommen werden: Hinweis: Alle Laufzeitbibliotheken müssen multithreaded generiert werden. Die Strukturzuordnung muß byteorientiert sein. Ist dies nicht der Fall kann es beim Programmstart eigener Applikationen zu Rebootvorgängen des Rechners führen! Abb46.bmp Abb. 4-6: Projekteinstellung in Visual Studio Damit mit der DLL gearbeitet werden kann, muß auf dem Zielrechner zuvor RTX (Firma VenturCom) ab Version 4.2 aufwärts installiert sein. Anwendungsprogramme können ohne RTX nicht kompiliert werden. Die korrekte Funktion ist zuvor sicherzustellen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Übersicht, Grundeinstellungen 4-13 Die Verzeichnisse von RTX bezüglich Bibliotheken und Headerdateien müssen in Visual Studio eingetragen werden: Abb47.bmp Abb. 4-7: Includeverzeichnis für RTX Abb48.bmp Abb. 4-8: Libverzeichnis für RTX DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-14 Übersicht, Grundeinstellungen DLL für Zugriffe auf SoftSERCANS Die Klassenbibliotheken der Foundationklassen (MFC) sollten für zu erstellende Applikationen statisch eingebunden werden, da diese nicht immer auf den Zielrechnern installiert sind! Abb49.bmp Abb. 4-9: Statische Einbindung der MFC in C++-Applikationen Hinweis: Für Debuggerläufe muß als Arbeitsverzeichnis das BinVerzeichnis eingestellt werden, da sonst der Echtzeitkern nicht gefunden wird. Bitte beachten: Das Arbeitsverzeichnis muß nach jedem Öffnen von Visual C++ aktualisiert werden! DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Übersicht, Grundeinstellungen 4-15 Abb410.bmp Abb. 4-10: Arbeitsverzeichnis für Debugger-Anwendungen unter Visual C++ Das gleiche Verzeichnis muß im Linker angegeben werden: Abb411.bmp Abb. 4-11: Verzeichnisangabe im Linker von Visual C++ Hinweis: DLL und Anwendung müssen im gleichen Verzeichnis stehen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-16 Übersicht, Grundeinstellungen DLL für Zugriffe auf SoftSERCANS Einstellungen in Visual Studio bei Echtzeitanwendungen *.rtss Folgende Bibliotheken sind im Projekt für Echtzeitanwendungen (Zieldatei Typ *.rtss) einzubinden: Setting2.bmp Abb. 4-12: Einzubindende Bibliotheken im Projekt für Echtzeitanwendungen Spezielle Einstellungen in der Entwicklungsumgebung von Visual C++ bezüglich RTX von VenturCom Es werden hier kurz die wichtigsten Einstellungen für Echtzeitprojekte in Visual C++ dargestellt. Des weiteren wird auf die entsprechende Dokumentation von VenturCom RTX V4.2, User Guide Seiten 25 ff. verwiesen. ABB718.BMP Abb. 4-13: Einstellungen Umgebungsvariable _SERCRTSS für SoftSERCANS DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Übersicht, Grundeinstellungen 4-17 ABB719.BMP Abb. 4-14: Einstellung der Einsprungadresse Name der ausführbaren Datei: ABB720.BMP Abb. 4-15: Dateiname für eine RTX-Applikation DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-18 Übersicht, Grundeinstellungen 4.7 DLL für Zugriffe auf SoftSERCANS Wichtige Grundeinstellungen in Borland C++ V5.02 Für die DLL-Einbindung in Borland ergeben sich folgende wesentliche Nachteile: 1. Die in der DLL definierte Klasse CSoftSERCANS ist in Borland C++ nicht zugänglich. 2. Die von Visual C++ erzeugte LIB-Datei ist nicht zu Borland C++ kompatibel. 3. Alle DLL-Funktionsaufrufe müssen mit dem Aufruf CALLBACK erfolgen. 4. Echtzeitanwendungen können aufgrund der DLL-Unterschiede zu Microsoft-DLLs nicht erzeugt werden (siehe auch Kapitel 6.3, "Bedeutungen und Fehlerbehebung der Diagnosen"). CALLBACK Ø Anstelle von FAR PASCAL in Anwendungsrückruf-Routinen, wie Fensterprozeduren und Dialogprozeduren, zu verwenden (Originalhilfe Microsoft) Borland Hilfe: Das Makro WINAPI von windows.h definiert die Aufrufkonventionen. WINAPI wird zu der für die Zielplattform geeigneten Aufrufkonvention. WINAPI sollte anstelle von FAR PASCAL verwendet werden. Das folgende Beispiel zeigt, daß für die Definitionen von Fensterprozeduren wichtige Änderungen nötig sind. Der folgende Code ist für 16-Bit-Windows geschrieben: LONG FAR PASCAL WindowProc(HANDLE hWnd, unsigned message WORD wParam, LONG lParam) Die Win32-Version lautet folgendermaßen: LONG WINAPI WindowProc(HWND hWnd, UINT message UINT wParam, LONG lParam) Wenn Sie WINAPI verwenden, können Sie alternative Aufrufkonventionen angeben. Gegenwärtig verwendet Win32 _stdcall. Der elementare Typ unsigned wird durch UINT ersetzt, der einfacher portiert werden kann. WORD wird ebenfalls durch UINT ersetzt und zeigt in diesem Fall die Erweiterung von wParam zu 32 Bits. Bliebe wParam unerweitert, würde das bei der initialen Erstellung der Fenster zu einem Anwendungsfehler führen. Verwenden Sie die Aufrufkonvention CALLBACK in die Deklarationen der Callback-Funktionen. Sie ersetzt FAR PASCAL. (Borland C++-Programmierhandbuch) Hinweis: Der CALLBACK-Aufruf beeinflusst die Reihenfolge der Stackfreigabe der Aufrufadressen von Funktionen im BorlandC-Compiler. Wird CALLBACK nicht verwendet, so kann aus Unterroutinen, welche DLL-Funktionen verwenden, nicht in die Hauptroutine zurückgesprungen werden, da die Stackrücksprungadresse bereits in der DLL-Funktion gelöscht wird. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Übersicht, Grundeinstellungen 4-19 DLL für Zugriffe auf SoftSERCANS Für ANSIC ergeben sich bis auf die Einbindung der Definitionsdatei "Borland.def" keine wesentlichen Unterschiede zu Microsoft ANSIC. Folgende Definitionsdatei muß bei Verwendung von DLL-Funktionen mit in das jeweilige Projekt aufgenommen werden: Anpassung in SoftSERCANSANSIC.h: ////////////////////////////////////////// // Prototypen: // ////////////////////////////////////////// // calling convention is standard C (the sequence the parameters are pushed to stack) #ifdef __cplusplus extern "C" { #endif ULONG CALLBACK SoftSERCANSInitObject(LPVOID* *p_CCpointer); Projekteinstellungen in der Borland-IDE Die Strukturausrichtung aller Projekte muß byteorientiert sein (Defaulteinstellung): Abb414.jpg Abb. 4-16: Byteorientierte Ausrichtung Hinweis: Weiterhin sollte die ausführbare Datei (das Ergebnis des Compilerlaufs) in ein Verzeichnis kopiert werden, indem alle zur Ausführung erforderlichen Dateien abgelegt sind (hier das "..\..\Bin"-Verzeichnis). Benötigte Dateien sind unter anderem: SoftSERCANSEXE.lib, SoftSERCANSRTX.rtss und die in Borland erstellte EXE-Datei. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-20 Übersicht, Grundeinstellungen DLL für Zugriffe auf SoftSERCANS ABB415.JPG Abb. 4-17: Einstellung des Verzeichnisses für die Includes und die ausführbare Datei Zusätzlich zur eingebundenen DLL-Headerdatei SoftSERCANSANSIC.h werden noch zwei in dieser Datei eingebundene Dateien benötigt: 1. die Datei SoftSERCANSdefs.h, in der alle Strukturen und Fehlercodes abgelegt sind, 2. die Datei SoftSERCANSreg.h, in der die aktuelle Version der DLL, welche auch durch Eigenschaften der Datei "SoftSERCANSEXE.dll" sichtbar gemacht werden kann, abgelegt ist. Die aktuelle Version der DLL kann mittels der Funktion C_GetDLLVersion abgefragt werden. Um diese Dateien fehlerfrei mit einzubinden müssen in Borland C++ weitere Projektanpassungen vorgenommen werden. Es muß ein entsprechendes include-Verzeichnis mit in das Projekt aufgenommen werden: Die Headerdateien der DLL sind im Unterverzeichnis "..\..\include" abgelegt. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Übersicht, Grundeinstellungen 4-21 Bei Windows-Anwendungen sollten alle Borland-DLLs statisch eingebunden werden, da nicht sicher gestellt ist, daß die verwendeten DLLs auf dem Zielrechner vorhanden sind (das gleiche gilt auch für Projekte unter Visual C++). Abb416.jpg Abb. 4-18: Statische Bibliothekseinbindung Für eine Windowsanwendung ergibt sich folgende (einfachste) Projektstruktur: Abb417.jpg Abb. 4-19: Projektstruktur für Win-Applikation in Borland C++ V5.02 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 4-22 Übersicht, Grundeinstellungen DLL für Zugriffe auf SoftSERCANS Für eine Borland-ANSIC Anwendung ergibt sich diese Projektstruktur: Abb418.jpg Abb. 4-20: Borland ANSIC-Projektstruktur DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Kommunikation mit SoftSERCANS 5-1 5 Kommunikation mit SoftSERCANS 5.1 Datenaustausch mit SoftSERCANS Prinzipiell ist die Kommunikation mit SoftSERCANS in zwei Möglichkeiten unterteilt: • Zyklische Kommunikation • Nichtzyklische Kommunikation Diese beiden Möglichkeiten sind parallel betreibbar. Zyklische Kommunikation Die zyklische Kommunikation dient dem Austausch von Echtzeitdaten (z.B. Soll-/Istwerte) und wird in jedem Kommunikationszyklus (z.B. SERCOS interface-Zyklus) einmal durchgeführt. Die Konfiguration dieses Kanals muß in Betriebsphase 2 festgelegt werden und ist danach fest. D.h. die Steuerungssoftware muß in der Betriebsphase 2 die Konfiguration der zyklischen Kommunikation festlegen. Nichtzyklische Kommunikation Die nichtzyklische Kommunikation dient dem Parametrieren von SoftSERCANS und allen Antrieben im Ring. Die nichtzyklische Kommunikation wird von SoftSERCANS gesteuert. Über diesen Kanal sind alle Parameter im System erreichbar, auch die Parameter die zyklisch konfiguriert sind. 5.2 Zyklischer Datenaustausch Synchronisation der zyklischen Daten SoftSERCANS ermöglicht eine Synchronisation des Bearbeitungszykluses der Steuerung mit der Datenübertragung und dem Regelungszyklus im Antrieb. Hierdurch treten zwischen diesen einzelnen Zyklen keine Schwebungen auf und in den Regelkreisen entsteht eine minimale Totzeit. Weiterhin bedeutet es, daß in allen Antrieben die neuen Sollwerte zum selben Zeitpunkt wirksam werden und daß alle Antriebe die Meßwerte zum selben Zeitpunkt erfassen, die sie dann als Istwerte zu SoftSERCANS senden. Dies erfordert eine strenge Äquidistanz der Übertragungszyklen. Die zyklischen Daten müssen sowohl korrekt, als auch pünktlich sein (unpünktliche Daten sind wertlos). Nach einem durch SoftSERCANS festgestellten Übertragungsfehler kann für einen Kommunikationszyklus mit den letzten gültigen Daten oder einem erwarteten Wert weitergearbeitet werden. Einen Wiederholung der fehlerhaft übertragenen Daten (zum Zwecke der Fehlerkorrektur) wird nicht durchgeführt, da im nächsten Kommunikationszyklus (z.B. 1 ms später) neue Sollwerte gesendet werden. Bei aufeinander folgenden Übertragungsfehlern wird eine Fehlerreaktion durchgeführt. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-2 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Timing der zyklischen Daten Ein Kommunikationszyklus von SERCOS interface wird durch das sog. MST (Master-Synchronisationstelegramm) eingeleitet. Dieses MST wird von der Steuerung gesendet. Darauffolgend senden die Antriebe ihre Istwerte in den ATs (Antriebstelegramme) an die Steuerung. Der Zyklus wird abgeschlossen mit dem Senden der Sollwerte für alle Antriebe in dem Sendetelegramm MDT (Master-Daten-Telegramm). Der nächste Zyklus beginnt dann wieder mit dem Aussenden des MSTs. Das Senden und Empfangen der Telegramme wird von SoftSERCANS übernommen. Nach dem Empfang aller ATs werden die Telegrammdaten von SoftSERCANS kopiert. Das Timing des Zugriffszeitpunkt der NC kann vom Anwender gesteuert werden. Durch die Vorgabe der "Verschiebung Zugriffszeitpunkt NC" (Y-0-0013) durch die Steuerung oder über die Bedienoberfläche besteht die Möglichkeit den Zeitpunkt der Soll-/Istwertübergabe im Zwischenspeicher zu verschieben und somit optimal einzustellen. Die "Verschiebung Zugriffszeitpunkt NC" (Y-0-0013) darf nicht größer als die "SERCOSZykluszeit" (Y-0-0004) programmiert werden. Folgende Parameter werden abhängig von der zyklischen Konfiguration und der "Verschiebung Zugriffszeitpunkt NC" (Y-0-0013) berechnet und können ab der Kommunikationsphase 3 zur Kontrolle von Zugriffskonflikten ausgelesen werden. • Y-0-0006 "Zugriffszeitpunkt NC" • Y-0-0008 "Zugriffszeit SoftSERCANS" • Y-0-0012 "Kopierzeitpunkt SoftSERCANS" ATn Zugriff SoftSERCANS MST AT1 AT2 Zugriff NC MDT MST S-0-0006 Y-0-0012 Y-0-0008 Y-0-0006 Y-0-0013* S-0-0089 S-0-0008 Y-0-0004 * Y-0-0005 * Abb. 5-1: Timing SoftSERCANS - Alle Parameter die mit "*" gekennzeichnet sind, müssen von der NC gesetzt werden. Überwachung von Interrupt-Jitter Durch Interrupt - Jitter kann es zu Zugriffskonflikten zwischen SoftSERCANS (Y-0-0012 und Y-0-0008) und dem Sendezeitpunkt MDT (S-0-0089) kommen. Jede Überschneidung dieser Zugriffe inkrementiert den Parameter "Fehlerzähler SYNC" (Y-0-0014) um Eins. Der Fehlerzähler muß von der Bedienoberfläche oder von der Steuerung gelöscht werden, bevor ein Test erfolgt. Der Parameter "SERCOS-Zykluszeit" (Y-0-0004) ist nicht schreibgeschützt und kann (muß) von der NC jederzeit gelöscht werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Kommunikation mit SoftSERCANS 5-3 DLL für Zugriffe auf SoftSERCANS Zugriff auf die zyklischen Daten Benutzer NC NC-Prozess vom Benutzer Beispiel: cyclicData read / write Der Zugriff zum Zeitpunkt Y-0-0006 wird über die Funktion sync_Cycle_Data synchronisiert Interner Telegrammbuffer (Shared Memory) Der interne Telegrammbuffer wird zum Datenaustausch zwischen SoftSERCANS und NC benutzt. Von der NC wird über die Funktionen - sync_Cycle_Data - Open_MDT_Channel - Open_AT_Channel auf diesen Buffer zugegriffen read / write Die Telegramme werden zum Zeitpunkt Y-0-0012 aus dem internen Telegrammbuffer gelesen oder geschrieben SoftSERCANSEinsteckkarte SERCON410B Der ASIC erzeugt aus dem internen DPR die Telegramme zu den Zeitpunkten S-0-0006 (für jeden Antrieb) und S-0-0089 (einmal jeden SERCOS-Zyklus) Abb. 5-2: Zugriff auf die zyklischen Daten Lifecounter Mit Hilfe der Lifecounter-Funktion sind Steuerung und SoftSERCANS in der Lage, sich gegenseitig zu überwachen. Dafür ist ein Parameter vorhanden: • Y-0-0009 "Lifecounter Differenz" Die Steuerung und SoftSERCANS besitzen je einen Lifecounter. Mit der Lifecounter Differenz wird die Überwachung auf SoftSERCANS entweder ausgeschaltet (Eingabe = 0) oder die maximal zulässige Differenz zwischen beiden Lifecountern festgelegt. Ist eine Differenz programmiert (z. B. Eingabe = 5), so wird die Überwachung auf SoftSERCANS einmal in jedem NC-Zyklus in der Phase 4 durchgeführt. SoftSERCANS: Nach dem Kopieren der Soll-/Istwerte (Y-0-0012) erhöht SoftSERCANS den Lifecounter SoftSERCANS um 1 und vergleicht ihn danach mit dem Lifecounter NC. Ist die Differenz größer als die Lifecounter Differenz, so schaltet SoftSERCANS in die Phase 0 und generiert den Systemfehler 13 (siehe Kap. 6.3, "Bedeutungen und Fehlerbehebung der Diagnosen"). NC: Die NC muß nach dem Übertragen der Soll- und Istwerte (Y-0-0013) die Funktion Trigger Lifecounter ausführen. Damit wird der NC-Lifecounter erhöht. Ist die Differenz größer als die Lifecounter Differenz, so kann die Steuerung aufgrund des generierten Systemfehler Nummer 13 eine eigene Fehlerroutine aktivieren. Hinweis: Die Anwendung des Lifecounters ist im Beispielprogramm CyclicData.rtss im Verzeichnis \Bin\MicroSoftSamples\Rtx verdeutlicht. (siehe Kap. "Überwachung der ISR-Routinen", Seite 7-58) DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-4 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Austausch der Echtzeitdaten Die Echtzeitdaten setzen sich aus den zyklisch übertragenen Soll- und Istwerten zusammen. Für jeden der maximal 40 Antriebe steht ein Sollwertkanal und ein Istwertkanal zur Verfügung. Die Echzeitdaten in diesen Kanälen werden über die Konfigurationslisten oder über fest definierte Echtzeit-Konfigurationen festgelegt. In den Echtzeitdaten können bis zu acht verschiedene Betriebsdaten konfiguriert werden. Mit dem Parameter "Telegrammart" (A-0-0007) kann aus verschiedenen fest definierten Echzeitdaten-Konfigurationen gewählt werden (Vorzugstelegramme von SERCOS interface) Es stehen folgende Vorzugstelegramme zur Verfügung: Eingabe in A-0-0007 Inhalt Sollwertkanal Inhalt Istwertkanal Vorzugstelegramm 0 0 Keine zyklischen Daten Keine zyklischen Daten Vorzugstelegramm 1 1 S-0-0080 Keine zyklischen Daten Vorzugstelegramm 2 2 S-0-0036 S-0-0040 Vorzugstelegramm 3 3/11 S-0-0036 S-0-0051/53 Vorzugstelegramm 4 4/12 S-0-0047 S-0-0051/53 Vorzugstelegramm 5 5/13 S-0-0047 S-0-0036 S-0-0051/53 S-0-0040 Vorzugstelegramm 6 6 S-0-0036 Keine zyklischen Daten Vorzugstelegramm 7 7 frei konfigurierbar über A-0-0002 frei konfigurierbar über A-0-0003 Telegrammart Abb. 5-3: Übersicht Vorzugstelegramme Mit Auswahl von Vorzugstelegrammen 0 bis 6 werden alle Echtzeitdaten automatisch konfiguriert. Das Vorzugstelegramm 7 (Defaultwert im Parameter A-0-0007) erfordert weitere Einstellungen, die nachfolgend erläutert werden. In die Parameter "Sollwertkonfigurationsliste" (A-0-0002) und "Istwertkonfigurationsliste" (A-0-0003) trägt die Steuerung oder die Bedienoberfläche die Identnummern für die zyklisch auszutauschenden Echtzeitdaten ein. SoftSERCANS liest die Längenangabe der Betriebsdaten aus dem Attribut und trägt sie in den Parameter "Sollwert Header" (A-0-0004) und "Istwert Header" (A-0-0005) entsprechend ein. Die Konfigurationslisten fassen bis zu acht Einträge. In der Kommunikationsphase 4 tauschen die vorhandenen Antriebe und SoftSERCANS die konfigurierten Echtzeitdaten zyklisch über SERCOS interface aus. Mit jedem SERCOS interface-Synchronisationszyklus kopiert SoftSERCANS die Echtzeitdaten aus den Empfangspuffern des SERCON410 in die Istwertkanäle und aus den Sollwertkanälen in die Sendepuffer des SERCON410. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Kommunikation mit SoftSERCANS 5-5 Konfiguration des Sollwertkanals Die Reihenfolge der Sollwert-Identnummern in der "Sollwertkonfigurationsliste" (A-0-0002) legt die Reihenfolge der Sollwerte im Sollwertkanal fest. Es können nur Sollwerte konfiguriert werden, die der Antrieb auch unterstützt. Diese Sollwert-Identnummen stehen entweder im Antrieb in der Identnummer S-0-0188 oder sie sind dem Handbuch des Antriebs zu entnehmen. Zusätzlich zu den Sollwerten befindet sich auch das antriebsspezifische Steuerwort im Sollwertkanal. Im "Sollwert Header" (A-0-0004) trägt SoftSERCANS noch zusätzlich die Länge der konfigurierten Sollwerte entsprechend ein. A-0-0002 Sollwertkonfiguration Sollwertkanal Datenlänge (Byte) Sollwert Header Steuerwort 2 IDN Sollwert 1 =>=> Sollwert 1 2 oder 4 IDN Sollwert 2 =>=> Sollwert 2 2 oder 4 IDN Sollwert 3 =>=> Sollwert 3 2 oder 4 IDN Sollwert 4 =>=> Sollwert 4 2 oder 4 IDN Sollwert 5 =>=> Sollwert 5 2 oder 4 IDN Sollwert 6 =>=> Sollwert 6 2 oder 4 IDN Sollwert 7 =>=> Sollwert 7 2 oder 4 IDN Sollwert 8 =>=> Sollwert 8 2 oder 4 Abb. 5-4: Konfiguration des Sollwertkanals Konfiguration des Istwertkanals Die Reihenfolge der Istwert-Identnummern in der "Istwertkonfigurationsliste" (A-0-0003) legt die Reihenfolge der Istwerte im Istwertkanal fest. Es können nur Istwerte konfiguriert werden, die der Antrieb auch unterstützt. Diese Istwert-Identnummen stehen entweder im Antrieb in der Identnummer (S-0-0187) oder sie sind dem Handbuch des Antriebs zu entnehmen. Zusätzlich zu den Istwerten befindet sich auch der Antriebsstatus im Istwertkanal. Im "Istwert Header" (A-0-0005) trägt SoftSERCANS noch zusätzlich die Länge der konfigurierten Istwerte entsprechend ein. A-0-0003 Istwertkonfiguration Istwertkanal Datenlänge (Byte) Istwert Header Antriebsstatus 2 IDN Istwert 1 =>=> Istwert 1 2 oder 4 IDN Istwert 2 =>=> Istwert 2 2 oder 4 IDN Istwert 3 =>=> Istwert 3 2 oder 4 IDN Istwert 4 =>=> Istwert 4 2 oder 4 IDN Istwert 5 =>=> Istwert 5 2 oder 4 IDN Istwert 6 =>=> Istwert 6 2 oder 4 IDN Istwert 7 =>=> Istwert 7 2 oder 4 IDN Istwert 8 =>=> Istwert 8 2 oder 4 Abb. 5-5: Konfiguration des Istwertkanals DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-6 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Die folgenden Abbildungen zeigen an einem Beispiel den Zusammenhang zwischen der Soll- bzw. Istwert-Konfigurationsliste und dem Sollbzw. Istwertkanal: Sollwertkanal Struktur T_CYC_DATA usNbr_data_bytes usControl 10 Steuerwort 2 Byte Data 4 Byte Data usData[] 4 Byte Data Sollwert Konfigurationsliste A-0-0002 (max. 16 Byte) 1 Lage-Sollwert S-0-0047 Drehmoment-Sollwert S-0-0080 Geschwindigkeits-Sollwert S-0-0036 0 Endemarkierung x x x 8 x Sollwert Header A-0-0004 15 8 0 0 0 0 0 0 0 0 7 # # # # # 1 0 1 0 - Sollwert 1 = 2 Byte 1 - Sollwert 1 = 4 Byte 0 - Sollwert 2 = 2 Byte 1 - Sollwert 2 = 4 Byte 0 - Sollwert 8 = 2 Byte 1 - Sollwert 8 = 4 Byte Abb. 5-6: Konfiguration der Echtzeitdaten (am Beispiel der Sollwerte) DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Kommunikation mit SoftSERCANS 5-7 DLL für Zugriffe auf SoftSERCANS Istwertkanal Struktur T_CYC_DATA usNbr_data_bytes usControl 10 Antriebsstatus 2 Byte Data 4 Byte Data usData[] 4 Byte Data Istwert Konfigurationsliste A-0-0003 (max. 16 Byte) 1 Lage-Istwert 1 S-0-0051 Drehmoment-Istwert S-0-0084 Geschwindigkeits-Istwert S-0-0040 0 Endemarkierung x x x 8 x Istwert Header A-0-0005 15 8 0 0 0 0 0 0 0 0 7 # # # # # 1 0 1 0 - Istwert 1 = 2 Byte 1 - Istwert 1 = 4 Byte 0 - Istwert 2 = 2 Byte 1 - Istwert 2 = 4 Byte 0 - Istwert 8 = 2 Byte 1 - Istwert 8 = 4 Byte Abb. 5-7: Konfiguration der Echtzeitdaten (am Beispiel der Istwerte) DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-8 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Die folgende Abbildungen konfigurationen. 2 Byte Sollwertkanal Beispiele für Soll-/Istwert- 4 Byte Steuerwort Sollwert Konfigurationsliste z.B. A-0-0002 (Achse 1) S-0-0047 Lage-Sollwert 47 0 x x x x x x Endekennung (0x0000) x = don’t care 4 Byte 2 Byte Istwertkanal zeigen Antriebsstatus S-0-0051 Istwert-Konfigurationsliste z.B. A-0-0003 (Achse 1) 51 0 x x x x x x Lage-Istwert 1 (Motorgeber) Inhalt der Betriebsarten-Parameter: S-0-0032 = 0x03 Lageregelung (Motorgeber) Abb. 5-8: Beispiel 1 für Soll-/Istwertkonfiguration Sollwertkanal 2 Byte 4 Byte Steuerwort Sollwert Konfigurationsliste z.B. A-0-0002 (Achse 1) 36 0 x x x x x x S-0-0036 Geschwindigkeits-Sollwert Endekennung (0x0000) x = don’t care 2 Byte Istwertkanal Antriebsstatus 4 Byte S-0-0051 Istwert-Konfigurationsliste z.B. A-0-0003 (Achse 1) 51 0 x x x x x x Lage-Istwert 1 (Motorgeber) Inhalt der Betriebsarten-Parameter: S-0-0032 = 0x02 Geschwindigkeitsregelung Abb. 5-9: Beispiel 2 für Soll-/Istwertkonfiguration DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Kommunikation mit SoftSERCANS 5-9 DLL für Zugriffe auf SoftSERCANS Sollwertkanal 2 Byte 4 Byte Steuerwort Sollwert Konfigurationsliste z.B. A-0-0002 (Achse 1) S-0-0047 4 Byte S-0-0036 Lage-Sollwert 47 92 36 0 x x x x Drehmoment/Kraft-Grenzwert bipolar Geschwindigkeits-Sollwert Endekennung (0x0000) x = don’t care 4 Byte 2 Byte Istwertkanal 2 Byte S-0-0092 Antriebsstatus 4 Byte S-0-0051 4 Byte S-0-0053 S-0-0040 Istwert-Konfigurationsliste z.B. A-0-0003 (Achse 1) 51 53 40 0 x x x x Lage-Istwert 1 (Motorgeber) Lage-Istwert 2 (ext. Geber) Geschwindgkeits-Istwert Inhalt der Betriebsarten-Parameter: S-0-0032 = 0x03 Lageregelung (Motorgeber) S-0-0033 = 0x04 Lageregelung (ext. Geber) S-0-0034 = 0x02 Geschwindigkeitsregelung Abb. 5-10: Beispiel 3 für Soll-/Istwertkonfiguration Sollwertkanal 2 Byte 4 Byte Steuerwort Sollwert Konfigurationsliste z.B. A-0-0002 (Achse 1) S-0-0047 Lage-Sollwert 47 36 0 x x x x x Geschwindigkeits-Sollwert Endekennung (0x0000) x = don’t care 2 Byte Istwertkanal 4 Byte S-0-0036 Antriebsstatus 4 Byte S-0-0051 4 Byte 4 Byte S-0-0040 S-0-0189 Istwert-Konfigurationsliste z.B. A-0-0003 (Achse 1) 51 40 189 0 x x x x Lage-Istwert 1 (Motorgeber) Geschwindigkeits-Istwert Schleppabstand Inhalt der Betriebsarten-Parameter: S-0-0032 = 0x0B Lageregelung ohne Schleppabstand S-0-0033 = 0x02 Geschwindigkeitsregelung Abb. 5-11: Beispiel 4 für Soll-/Istwertkonfiguration DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-10 Kommunikation mit SoftSERCANS 2 Byte Sollwertkanal 4 Byte Steuerwort Sollwert Konfigurationsliste z.B. A-0-0002 (Achse 1) S-0-0047 Lage-Sollwert 47 0 x x x x x x Endekennung (0x0000) x = don’t care 4 Byte 2 Byte Istwertkanal DLL für Zugriffe auf SoftSERCANS Antriebsstatus 4 Byte S-0-0051 S-0-0040 2 Byte 4 Byte S-0-0084 S-0-0130 Istwert-Konfigurationsliste z.B. A-0-0003 (Achse 1) 51 40 84 130 0 x x x Lage-Istwert 1 (Motorgeber) Geschwindigkeits-Istwert Schleppabstand Meßwert 1 positiv Inhalt der Betriebsarten-Parameter: S-0-0032 = 0x03 Lageregelung Abb. 5-12: Beispiel 5 für Soll-/Istwertkonfiguration Sollwertkanal 2 Byte 4 Byte Steuerwort Sollwert Konfigurationsliste z.B. A-0-0002 (Achse 1) S-0-0258 Zielposition Positionier-Geschwindigkeit 258 259 0 x x x x x Endekennung (0x0000) x = don’t care 2 Byte Istwertkanal 4 Byte S-0-0259 Antriebsstatus 4 Byte S-0-0051 4 Byte S-0-0040 Istwert-Konfigurationsliste z.B. A-0-0003 (Achse 1) 51 40 0 x x x x x Lage-Istwert 1 (Motorgeber) Geschwindigkeits-Istwert Inhalt der Betriebsarten-Parameter: S-0-0032 = 0x13 Antriebsinterne Interpolation mit Schleppabstand S-0-0033 = 0x1B Antriebsinterne Interpolation ohne Schleppabstand Abb. 5-13: Beispiel 6 für Soll-/Istwertkonfiguration DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Kommunikation mit SoftSERCANS 5-11 DLL für Zugriffe auf SoftSERCANS Steuerwort 15 8 # # # r # # # # 7 0 # # x x x x x x r = reserviert Bits 5-0 werden von SoftSERCANS bedient (Servicekanal) Bit 6: 0/1 - Echtzeitsteuerbit 1 (S-0-0300) Bit 7: 0/1 - Echtzeitsteuerbit 2 (S-0-0302) Bit 11, 9, 8: Sollbetriebsart 0 0 0 - Hauptbetriebsart (S-0-0032) 0 0 1 - Nebenbetriebsart 1 (S-0-0033) 0 1 0 - Nebenbetriebsart 2 (S-0-0034) 0 1 1 - Nebenbetriebsart 3 (S-0-0035) ... 1 1 1 - Nebenbetriebsart 7 Bit 10: IPOSYNC 0/1 - NC toggelt Bit, wenn neue Sollwerte übertragen werden (I t l t t kt) Bit 13: Antrieb Start/Stopp 0 - Antrieb Stopp: Beim Wechsel von 1 auf 0 hält der Antrieb unter Berücksichtigung der Beschleunigungs-Parameter (S-0-0137 oder S-0-0138) oder der aktiven Beschleunigung (S-0-0042, S-0-0260) an und bleibt in Regelung (nur möglich, wenn Bit 14 und 15 = 1). 1 - Antrieb Start: Beim Wechsel von 0 auf 1 wird die ursprüngliche Funktion unter Beibehaltung der Beschleunigungs-Parameter (S-0-0136 oder S-0-0138) fortgesetzt. Bei Lageregelung muss die Steuerung den entsprechenenden Lagesollwert dem Lageistwert nachführen, bevor Bit 13 gesetzt wird. Bit 14: Antrieb Freigabe 0 - keine Freigabe: Beim Wechsel von 1 auf 0 erfolgt unverzögerte Abschaltung des Drehmoments und Sperren der Endstufe (unabhängig von Bit 15 und 13). 1 - Antrieb Freigabe: Beim Wechsel von 0 auf 1 wird im Antrieb die Freigabe um die "Wartezeit Antrieb Freigabe" (S-0-0295) verzögert, die Freigabeverzögerung ist erforderlich bei Benutzung eines Schützes in der Motorzuleitung. Bit 15: Antrieb Ein/Aus 0 - Antrieb Aus: Beim Wechsel von 1 auf 0 wird der Antrieb bestmöglichst stillgesetzt, anschließende Abschaltung des Drehmoments bei der Drehzahl nmin, nach Ablauf der "Wartezeit Antrieb AUS" (S-0-0207), Endstufe kann aktiviert bleiben (nur möglich, wenn Bit 14 = 1). 1 - Antrieb Ein: Beim Wechsel von 0 auf 1 folgt der Antrieb nach Ablauf der "Wartezeit AUS" (S-0-0206) den Sollwerten der Steuerung. Bit 15 - 13: 1 1 1 - Antrieb soll dem Sollwert folgen Abb. 5-14: Aufbau Steuerwort DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-12 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Antriebsstatus 15 8 # # # # # # # # 7 0 # # # r r x x x r = reserviert Bits 2-0 werden von SoftSERCANS bedient (Servicekanal) Bit 5: Kommando-Änderungsbit (wird im Kommandokanal von SoftSERCANS bedient) 0 - keine Änderung in der Kommandoquittung 1 - Änderung in der Kommandoquittung Bit 6: 0/1 - Echtzeitstatusbit 1 (S-0-0304) Bit 7: 0/1 - Echtzeitstatusbit 2 (S-0-0306) Bit 10, 9, 8: Istbetriebsart 0 0 0 - Antrieb arbeitet in der Hauptbetriebsart (S-0-0032) 0 0 1 - Antrieb arbeitet in der Nebenbetriebsart 1 (S-0-0033) 0 1 0 - Antrieb arbeitet in der Nebenbetriebsart 2 (S-0-0034) 0 1 1 - Antrieb arbeitet in der Nebenbetriebsart 3 (S-0-0035) ... 1 1 1 - Antrieb arbeitet in der Nebenbetriebsart 7 Bit 11: Änderungsbit Zustandsklasse 3 (S-0-0013) 0 - Antriebsmeldungen nicht geändert 1 - Antriebsmeldungen geändert Bit 12: Änderungsbit Zustandsklasse 2 (S-0-0012) 0 - Antriebswarnungen nicht geändert 1 - Antriebswarnungen geändert Bit 13: Änderungsbit Zustandsklasse 1 (S-0-0011) 0 - kein Fehler 1 - Antrieb ist infolge einer Fehlersituation abgeschaltet Bit 15-14: Betriebsbereit 0 0 - Antrieb noch nicht bereit zur Leistungszuschaltung, da die internen Überprüfungen noch nicht erfolgreich abgeschlossen sind. 0 1 - Antrieb bereit zur Leistungszuschaltung 1 0 - Antriebssteuerteil betriebsbereit und Leistungsversorgung eingeschaltet, Antrieb ist drehmomentfrei und Endstufe gesperrt 1 1 - Antrieb ist betriebsbereit, "Antrieb Freigabe" ist gesetzt und wirksam, Endstufe ist aktiv. Abb. 5-15: Aufbau Antriebsstatus DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Kommunikation mit SoftSERCANS 5-13 DLL für Zugriffe auf SoftSERCANS 5.3 Allgemeine Funktion der Systemparameter Systemparameter legen Einstellungen für den Normalbetrieb von SoftSERCANS und die Ringkonfiguration fest. Sie können von der Steuerung über die DLL verändert werden. Es gibt drei Arten von Parameter: • Y-Parameter werden für die Konfiguration von SoftSERCANS gebraucht. Diese Parameter gibt es jeweils einmal in SoftSERCANS. Beispiel: "Einschaltverzögerungszeit" (Y-0-0001). Ein Y-Parameter wird von SoftSERCANS gespeichert. • A-Parameter geben die Eigenschaften von SERCOS interface Antrieben an. Ein Parameter des Typs A gibt es für jede Achse einmal. Beispiel "Telegrammart" (A-0-0007). Ein A-Parameter wird von SoftSERCANS gespeichert. • S-Parameter und P-Parameter definieren und steuern Eigenschaften eines SERCOS interface Antriebs. Beispiel: "Lagesollwert" (S-0-0047). S- und P-Parameter werden in den Antrieben gespeichert. Hinweis: Änderungen von Y- und A-Parametern werden beim Beenden von SoftSERCANS im File "Serc.par" abgespeichert. Diese Parametereinstellungen werden beim Starten von SoftSERCANS automatisch geladen. Das Speichern der Y- und A-Parameter kann auch manuell über den Parameter "Systemparameter speichern" (Y-0-0020) ausgeführt werden (siehe Kapitel 8.4, "Beschreibung YParameter"). Datenblockaufbau Unter jeder Parameternummer ist ein Datenblock vorhanden, der die Zusatzinformationen zu den unterschiedlichen Datentypen liefert. Dadurch ist es der Steuerung möglich auch anonyme Daten mittels einer universellen Routine anzuzeigen und zu verändern. In einem Datenblock sind die Elemente 1, 3 und 7 Pflicht und müssen immer vorhanden sein. Die Elemente 2, 4, 5 und 6 sind Option und werden je nach Bedarf unterstützt. Elementnummer Bezeichnung Länge Element 1 Parameternummer oder Identnummer 4 Byte 2 Byte Element 2 Name 60 Byte Element 3 Attribut 4 Byte Element 4 Einheit 12 Byte Element 5 Minimaler Eingabewert wie Element 7 Element 6 Maximaler Eingabewert wie Element 7 Element 7 Betriebsdatum 2 Byte 4 Byte oder variabel Abb. 5-16: Datenblockaufbau DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-14 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Aufbau der Parameternummer (Element 1) Die IDN-Nummer bezeichnet den Datenblock. Es ist folgendes Anzeigeformat vereinbart: X - 0 - X X X X Parameter-Nummer 1...4095 Parametersatz 0...7 möglich (bei Y- und A-Parametern immer 0) Kennbuchstabe für System-Parameter Y: Steuerungsbezogene Parameter in der Steuerung A: Antriebsbezogene Parameter in der Steuerung S, P: Antriebsbezogene Parameter im Antrieb Abb. 5-17: Anzeigeformat der Parameternummer Aufbau des Namens (Element 2) Der Name besteht aus maximal 60 ASCII-Zeichen (60 Byte). Aufbau des Attributs (Element 3) Das Attribut enthält alle Informationen die benötigt werden, um das Betriebsdatum verständlich darzustellen. Das Attribut ermöglicht die Umwandlung des übertragenen Betriebsdatums in eine verständliche Darstellung und umgekehrt. Die Umwandlung hat keinen Einfluß auf das Datum selbst. 31 19 r # # # # # # # 16 15 r # # # # # # # 11 # # # # # # # # 0 # # # # # # # # r = reserviert Bits 0-15: Bewertungsfaktor Bits 18-16: Datenlänge Bit 19: Funktion Bits 22-20: Datentyp und Anzeigeformat Bits 27-24: Nachkommastellen Bits 30-28: Schreibschutz Abb. 5-18: Aufbau des Attributs Attribut Bit 0-15: Der Bewertungsfaktor ist eine vorzeichenlose ganze Zahl, die dazu dient numerische Daten in ein Anzeigeformat umzuwandeln. Der Bewertungsfaktor ist auf den Wert 1 gesetzt, wenn er für die Datenanzeige nicht benötigt wird (z.B. bei Text). DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Kommunikation mit SoftSERCANS 5-15 Attribut Bit 18-16 Die Datenlänge wird beim Schreiben der Daten von der Steuerung benötigt. 0 0 0 - reserviert 0 0 1 - Betriebsdatum ist 2 Byte lang 0 1 0 - Betriebsdatum ist 4 Byte lang 0 1 1 - reserviert 1 0 0 - variable Länge mit 1-Byte-Daten 1 0 1 - variable Länge mit 2-Byte-Daten 1 1 0 - variable Länge mit 4-Byte-Daten 1 1 1 - reserviert Attribut Bit 19: Die Funktion zeigt an, daß es sich bei dieser Identnummer um ein Kommando handelt. Attribut Bit 22-20: Datentyp und Anzeigeformat wird benutzt, um das Betriebsdatum sowie den minimalen und maximalen Eingabewert in das richtige Anzeigeformat umzuwandeln. Datentyp Anzeigeformat 0 0 0 - Binärzahl binär 0 0 1 - vorzeichenlose ganze Zahl Dezimalzahl ohne Vorzeichen 0 1 0 - ganze Zahl Dezimalzahl mit Vorzeichen 0 1 1 - vorzeichenlose ganze Zahl hexadezimal 1 0 0 - erweiterter Zeichensatz Text 1 0 1 - vorzeichenlose ganze Zahl Identnummer (2 Byte) 1 1 0 - Gleitkommazahl (einfache Genauigkeit) nach ANSI/IEEE Std 754-1985 Dezimalzahl mit Vorzeichen und Exponent (Nachkommastelle nicht relevant) 1 1 1 - vorzeichenlose ganze Zahl Parameternummer (4 Byte) Abb. 5-19: Datentyp und Anzeigeformat Attribut Bit 27-24: Die Nachkommastellen legen die Stellung des Kommas für die Anzeige und Eingabe des betreffenden Betriebsdatums fest. Es ist eine zusätzliche Anzeigeinformation. 0 0 0 0 - keine Nachkommastellen ... 1 1 1 1 - 15 Nachkommastellen (Maximum). Attribut Bit 30-28 Bit 30 Schreibschutz in CP4: 0 - Betriebsdatum ist schreibbar 1 - Betriebsdatum ist schreibgeschützt Bit 29 Schreibschutz in CP3: 0 - Betriebsdatum ist schreibbar 1 - Betriebsdatum ist schreibgeschützt Bit 28 Schreibschutz in CP2: 0 - Betriebsdatum ist schreibbar 1 - Betriebsdatum ist schreibgeschützt DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-16 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Aufbau der Einheit (Element 4) Die Einheit besteht aus maximal 12 ASCII-Zeichen (12 Byte). Aufbau des Minimalen Eingabewertes (Element 5) Der minimale Eingabewert ist der kleinste verarbeitbare numerische Wert für dieses Betriebsdatum. Wenn beim Schreiben der Wert des Betriebsdatums kleiner ist als der minimale Eingabewert, dann wird das Betriebsdatum nicht verändert. Das Betriebsdatum hat keinen minimalen Eingabewert, wenn es sich um eine Binärzahl oder den Zeichensatz handelt. Der minimale Eingabewert hat die gleiche Länge wie das Betriebsdatum und wird auch wie das Betriebsdatum angezeigt. Bei Listen besitzt der Min-Wert die gleiche Länge wie die einzelnen Listenelemente. Aufbau des Maximalen Eingabewertes (Element 6) Der maximale Eingabewert ist der größte verarbeitbare numerische Wert für dieses Betriebsdatum. Wenn beim Schreiben der Wert des Betriebsdatums größer ist als der maximale Eingabewert, dann wird das Betriebsdatum nicht verändert. Das Betriebsdatum hat keinen maximalen Eingabewert, wenn es sich um eine Binärzahl oder den Zeichensatz handelt. Der maximale Eingabewert hat die gleiche Länge wie das Betriebsdatum und wird auch wie das Betriebsdatum angezeigt. Bei Listen besitzt der Min-Wert die gleiche Länge wie die einzelnen Listenelemente. Aufbau des Betriebsdatums (Element 7) Die Länge des Betriebsdatums ist in drei Gruppen untergliedert: • feste Länge mit 2 Byte • feste Länge mit 4 Byte • variable Länge bis 65532 Byte Alle geschwindigkeits- und lageabhängigen Daten haben eine Länge von 4 Byte. Alle drehmomentabhängigen Daten haben eine Länge von 2 Byte. Dateien oder Tabellen können von der Steuerung zu den Antrieben oder umgekehrt, durch die Übertragung von Betriebsdaten mit variabler Länge erfolgen (z.B. Parameterlisten). DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Kommunikation mit SoftSERCANS 5-17 DLL für Zugriffe auf SoftSERCANS 5.4 Betriebsphasen Nach dem Starten wird SoftSERCANS versuchen die Kommunikationsphase die im Parameter "SoftSERCANS - Hochlauf Zielmodus" (Y-0-0029) steht zu erreichen. D. h. nicht in jedem Fall wird der unten beschriebene Verlauf bis zum Ende durchlaufen, sondern nur bis zur Phase im Parameter "SoftSERCANS - Hochlauf Zielmodus" (Y-0-0029). Kommunikationsphase 0 SoftSERCANS versucht den LWL-Ring zu schließen. Ist der LWL-Ring nicht geschlossen: • "Systemstatus" = 0x10000 • "Diagnosenummer" = 6 • "Diagnosetext" = LWL-Ring ist nicht geschlossen. Ist der LWL-Ring geschlossen, Kommunikationsphase 1. schaltet SoftSERCANS in die Kommunikationsphase 1 In der Kommunikationsphase 1 wird das Vorhandensein der Antriebe überprüft. Alle gefundenen Antriebe werden in den Parameter "Adressen erkannte Antriebe" (Y-0-0025) eingetragen. Danach werden alle Antriebe abgefragt, deren Adresse in dem Systemparameter "Adressen projektierter Antriebe" (Y-0-0002) eingetragen sind. Antriebe mit denen vorübergehend nicht gearbeitet werden soll, können im Parameter "Antriebsdeaktivierung" (A-0-0006) vom Betrieb ausgeschlossen werden. Sind alle programmierten Antriebsadressen (d.h. alle im Y-0-0021 nicht deaktivierten Antriebe) am Ring vorhanden, schaltet SoftSERCANS in die Kommunikationsphase 2. Stellt SoftSERCANS einen Unterschied zwischen den programmierten und den am Ring vorhandenen Antriebsadressen fest, so wird die Systemdiagnose gesetzt. • "Systemstatus" = 0x10000 • "Diagnosenummer" = 7 • "Diagnosetext" = Antriebsadressen nicht korrekt (siehe Y-0-0002, Y-0-0024 Kommunikationsphase 2 Ab der Kommunikationsphase 2 können von der NC alle S-/P-Parameter gelesen bzw. geschrieben werden. (Y- und A-Parameter können schon ab Kommunikationsphase 0 gelesen und geschrieben werden.) Bei Hochschalten von Phase 2 in Phase 3 werden von SoftSERCANS die folgenden Aktionen durchgeführt: • In der Phase 2 müssen von der Steuerung oder über die Bedienoberfläche die Betriebsarten und die Wichtungsparameter in den Antrieben entsprechend der Anwendung eingestellt werden. Hierbei handelt es sich z.B. um folgende Identnummern: Betriebsarten: S-0-0032, S-0-0033, S-0-0034, S-0-0035 Lage-Wichtung: S-0-0076, S-0-0077, S-0-0078, S-0-0079 Geschwindigkeits-Wichtung: S-0-0044, S-0-0045, S-0-0046 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-18 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Drehmom./Kraft-Wichtung: S-0-0086, S-0-0093, S-0-0094 Beschleunigungs-Wichtung: S-0-0160, S-0-0161, S-0-0162 Polaritäten-Parameter: S-0-0055, S-0-0043, S-0-0085 Hinweis: Die Programmierung dieser Parameter ist dem Handbuch des Antriebs zu entnehmen! Speichert der Antrieb die S-/P-Parameter, so brauchen diese Parameter nur einmalig gesetzt werden. • Für die Zeitschlitzberechnung werden die notwendigen Daten (Identnummern) von allen Antrieben gelesen: S-0-0003 t1min S-0-0004 tATMT S-0-0005 t5 S-0-0088 tMTSY S-0-0090 tMTSG • Die Sollwertkonfigurationslisten und die Istwertkonfigurationslisten werden überprüft. • Die Telegrammsendezeiten der ATs und des MDTs werden von SoftSERCANS berechnet. • Die berechneten Kommunikationsparameter werden an die Antriebe übertragen. S-0-0006 t1 S-0-0089 t2 S-0-0008 t3 S-0-0007 t4 S-0-0001 tNcyc S-0-0002 tScyc • Die Parameter für den Telegrammaufbau werden von SoftSERCANS an die Antriebe übertragen (S-0-0009, S-0-0010, S-0-0015, S-0-0016, S-0-0024). • Das Kommando "Reset Zustandsklasse 1" (S-0-0099) wird in allen Antrieben ausgeführt. • Das Umschaltkommando (S-0-0127) wird in allen Antrieben ausgeführt. War die Umschaltung Phase 2 -> 3 nicht möglich, so wird der Systemzustand entsprechend gesetzt (siehe Kap. 6, "Diagnose"). Kommunikationsphase 3 Beim Hochschalten von Phase 3 in Phase 4 werden von SoftSERCANS folgende Aktionen durchgeführt: • Das Umschaltkommando (S-0-0128) wird in allen Antrieben ausgeführt. War die Umschaltung Phase 3 -> 4 nicht möglich, so wird der Systemzustand entsprechend gesetzt (siehe Kap. 6, "Diagnose"). Kommunikationsphase 4 Nur in dieser Betriebsphase ist der Zyklische Datenaustausch möglich. Es kann die Lifecounter-Funktion aktiviert werden um eine Funktionsüberwachung zu erhalten. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Kommunikation mit SoftSERCANS 5-19 DLL für Zugriffe auf SoftSERCANS 5.5 Kommandokanal Die Steuerung kann über den Kommandokanal Kommandos bzw. Funktionen aktivieren. antriebsinterne Ablauf im Kommandokanal Jedem Antrieb steht ein Kommandokanal zur Verfügung, d.h. in jedem Antrieb kann gleichzeitig ein Kommando aktiviert werden. Über den Kommandokanal können folgende Teilschritte bei einzelnen Antrieben oder einfach bei allen Antrieben im Ring ausgelöst werden. 1. Kommando setzen und freigeben 2. Kommando setzen, freigeben und Bearbeitung abwarten 3. Kommando löschen 4. Laufendes Kommando abbrechen 5. Zustand eines Kommandos abfragen (nur Einzelantrieb) 6. Alle Teilschritte ohne Unterbrechung Der Kommandoablauf für die einzelnen Abläufe stellt sich wie folgt dar: Kommando setzen und freigeben .RPPDQGR VHW]HQXQG IUHLJHEHQ ,VW QHLQ 3DUDPHWHUHLQ .RPPDQGR" MD 5HWXUQFRGH 5HWXUQFRGH [ [& CMD_SET_ENABLE.wmf Abb. 5-20: Kommando setzen und freigeben DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-20 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Kommando setzen, freigeben und Bearbeitung abwarten .RPPDQGR VHW]HQXQG IUHLJHEHQ ,VW QHLQ 3DUDPHWHUHLQ .RPPDQGR" MD .RPPDQGR EHDUEHLWHW" QHLQ MD .RPPDQGR QHLQ IHKOHU" MD 5HWXUQFRGH 5HWXUQFRGH 5HWXUQFRGH 6 [ [& CMD_execute.wmf Abb. 5-21: Kommando setzen, freigeben und Bearbeitung abwarten Kommando löschen Kommando löschen Returncode 0x0000 Abb. 5-22: Kommando löschen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Kommunikation mit SoftSERCANS 5-21 DLL für Zugriffe auf SoftSERCANS Zustand eines Kommandos abfragen .RPPDQGR =XVWDQG DEIUDJHQ QHLQ .RPPDQGR IHKOHU" MD 5HWXUQFRGH 5HWXUQFRGH 6 [ CMD_polling.wmf Abb. 5-23: Zustand eines Kommandos abfragen Alle Teilschritte ohne Unterbrechung .RPPDQGR VHW]HQXQG IUHLJHEHQ ,VW QHLQ 3DUDPHWHUHLQ .RPPDQGR" MD .RPPDQGR EHDUEHLWHW" QHLQ MD .RPPDQGR QHLQ IHKOHU" MD .RPPDQGR O|VFKHQ 5HWXUQFRGH 5HWXUQFRGH 5HWXUQFRGH 6 [ [& CMD_all.wmf Abb. 5-24: Alle Teilschritte ohne Unterbrechung DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 5-22 Kommunikation mit SoftSERCANS DLL für Zugriffe auf SoftSERCANS Hinweis: Bei Ausführung aller Teilschritte eines Kommandos wird bei Kommandofehlern das Kommando nicht gelöscht, um das Auslesen einer Diagnosemeldung über den Parameter "Diagnose" (S-0-0095) zu ermöglichen. Alle Kommandoschritte können an einzelne oder alle Antriebe im Ring durchgeführt werden. Hinweis: Die Anwendung ist näher im Beispielprogramm ...\MicrosoftSamples\Win32\Command.C erläutert. SoftSERCANS zeigt den Zustand des Kommandos nach Beendigung des jeweiligen Teilschritt im Rückgaberegister usQuittierung an. Es werden folgende Kommandoquittierungen generiert: Kommando-Quittung usQuittung 15 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 # # # # 0 - Kommando nicht gesetzt 1 - Kommando gesetzt 0 - Kommando unterbrochen 1 - Kommando freigegeben 0 - Kommando ordnungsgemäß ausgeführt 1 - Kommando noch nicht ausgeführt 0 - Kein Kommandofehler 1 - Kommandoausführung nicht möglich Abb. 5-25: Kommando-Quittierung z.B. • Kommando in Bearbeitung (Kommando-Quittierung 0x0007). • Kommando 0x0003). ordnungsgemäß ausgeführt (Kommando-Quittierung • Kommando nicht ausführbar (Fehler) Kommando-Quittierung 0x000F. Der Fehlercode (S-0-0390) wird in diesem Fall von Write_Command() als Return-Code zurückgegeben. Siehe auch DLL Funktion "Write_Command()", Kommandokanal, Write_Command()". Kap. 7.9, "Der DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Diagnose 6-1 DLL für Zugriffe auf SoftSERCANS 6 Diagnose 6.1 Grundsätzliches Beim Auftreten bestimmter Fehler- oder Ausnahmesituationen verzweigt das Programm in spezifische Fehler-Routinen mit definierten Reaktionen. Die dazu gehörenden Diagnosemeldungen werden in einem Strukturfeld abgelegt (siehe Kap. 7.10, "Die Diagnosefunktionen"). Diese Struktur kann mit der Funktion "Read_Actual_Diagnosis()" ausgelesen werden. Jede der Diagnosestrukturen beinhaltet folgende Information: Systemdiagnose Index 0 DwDiagnosestatus 0x10000=Systemdiagnose 0x20000=Achsdiagnose Das Strukturfeld mit DwDiagnose = TRUE beinhaltet die Achsdiagnose Achsdiagnose Index = Achsadresse FALSE = Diese Achsstruktur beinhaltet keine Diagnose TRUE = Diese Achse meldet eine Diagnose UsZustandsklasse_1 -- Inhalt S-0-0011 UsDiagnosenummer Fehlernummer Inhalt S-0-0390/P-0-0009 UsDiagnose_laenge Länge des Diagnosetextes Länge des Diagnosetextes in Byte in Bytes ChDiagnosetext[] Diagnose in Klartext Inhalt von Y-0-0031 oder S-0-0095 Abb. 6-1: Diagnosestruktur Der Index für die Systemdiagnose ist 0. Für die Antriebsdiagnose ist die Antriebsadresse als Index zu verwenden. Hinweis: Der Zugriff auf die Diagnosen ist näher im Beispielprogramm ...\MicrosoftSamples\Win32\Diagnose.C erläutert. Interne Fehler Bei internen Fehlern (z. B. unklare Programmzustände usw.) erzeugen diese Routinen über die Systemdiagnose eine Fehlermeldung. Weiterhin wird ein spezieller Fehlercode im Log-File "SoftSERCANS.LOG" im RootVerzeichnis eingetragen. Hinweis: Das Log-File wird bei jedem Start von SoftSERCANS gelöscht. Systemfehler Bei Systemfehlern wird die Systemdiagnose entsprechend gesetzt und dies der Steuerung über den Diagnosestatus mit dem Wert 0x10000 mitgeteilt. Bei Systemfehlern schaltet SoftSERCANS immer in die Phase 0 und ermöglicht die Fehlerbehebung. Nach dem Löschen des Fehlers startet SoftSERCANS einen erneuten Phasenhochlauf. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 6-2 Diagnose DLL für Zugriffe auf SoftSERCANS Achsspezifische Fehler Bei achsspezifischen Fehlern wird der Diagnosestatus der Systemdiagnose auf 0x20000 gesetzt und gleichzeitig der Diagnosestatus der Achsdiagnose auf 1. Damit kann die betroffene Achse ermittelt werden. Bei achsspezifischen Fehlern bleibt SoftSERCANS in der aktuellen Phase und ermöglicht die Fehlerbehebung. Nach Löschen des Fehlers muß die Steuerung oder die Bedienoberfläche ein Hochschalten der Phase aktivieren. 6.2 Fehler und Diagnosebeschreibung Nachfolgend werden die Diagnose- und Fehlermeldungen in der Diagnosestruktur aufgeführt: S Systemdiagnose A Achsdiagnose Index in der Diagnosestruktur Fehlernummer Reaktion Fehlertext S 0 0 Keine SoftSERCANS im Initialisierungsmodus S 0 0 Keine SERCOS interface - Phase 1 S 0 0 Keine SoftSERCANS im Parametriermodus S 0 0 Keine SERCOS interface - Phase 3 S 0 0 Keine SoftSERCANS im Betriebsmodus S 0 1 Phase 0 SERCOS interface – Ringunterbrechung S 0 2 Keine Ungültiger Interrupt eingestellt A Antriebsadresse 3 Keine Umschalten in Phase 3 nicht möglich (zusätzl. Fehlertext in Achsdiagnose) A Antriebsadresse 4 Keine Umschalten in Phase 4 nicht möglich (zusätzl. Fehlertext in Achsdiagnose) S 0 5 Phase 0 SERCOS interface – Doppelter Antriebstelegramm-Ausfall S 0 6 Keine LWL-Ring nicht geschlossen S 0 7 Phase 0 Antriebsadressen nicht korrekt (siehe Y-0-0002, Y-0-0024) S 0 8 Phase 0 Maximale Antriebsanzahl überschritten S 0 9 Keine Notreaktion "SERCOS Phase 0" – Modusumschaltung unzulässig S 0 10 Keine Falsche Anzahl von Uebergabeargumenten S 0 11 Keine SoftSERCANS Hardware-Version nicht korrekt S 0 12 Keine SoftSERCANS Parameter außerhalb Min.-/Max.-Wert (siehe Y-0-0021) S 0 13 Phase 0 Fehler Lifecounter DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Diagnose 6-3 DLL für Zugriffe auf SoftSERCANS S 0 14 Keine SoftSERCANS Parameter Prüfsummenfehler (siehe Y-0-0021) S 0 15 Keine SoftSERCANS Parameter nicht korrekt (siehe Y-0-0021) S 0 16 Keine Ungültige Basisadresse eingestellt S 0 17 Keine SoftSERCANS Hardware defekt S 0 18 Keine Konfigurationsfehler (Istwertkanal) S 0 19 Keine Konfigurationsfehler (Sollwertkanal) S 0 25 Keine SoftSERCANS im Testmodus Nullbitstrom S 0 26 Keine SoftSERCANS im Testmodus Dauerlicht S 0 61 Keine Antrieb per Paßwort verriegelt (siehe S-0-0267) A Antriebsadresse 100 Keine Antriebsfehler (zusätzl. Fehlertext in Achsdiagnose) S 0 4000 + n Keine Betriebssystemfehler Abb. 6-2: Diagnose- und Fehlermeldungen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 6-4 Diagnose 6.3 DLL für Zugriffe auf SoftSERCANS Bedeutungen und Fehlerbehebung der Diagnosen Fehler 1: SERCOS interface - Ringunterbrechung Der LWL-Ring wurde unterbrochen, nachdem bereits erkannt wurde, daß er geschlossen war. Reaktion von SoftSERCANS Phasenrückschaltung in Kommunikationsphase 0. Ursache • Defekter Lichtwellenleiterring. • Datenraten der Antriebe und von SoftSERCANS verschieden eingestellt. • Die optische Sendeleistung (bei SoftSERCANS siehe Parameter Y-0-0007) eines Teilnehmers am SERCOS interface-Ring ist zu niedrig eingestellt. • Defekter Antrieb. Abhilfe • Alle Lichtwellenleiter überprüfen. • Datenraten überprüfen, SoftSERCANS: siehe Parameter Y-0-0017, Antriebe: siehe Anwendungsbeschreibung des Antriebsherstellers • Optische Sendeleistung aller Teilnehmer am SERCOS interface-Ring der tatsächlichen Länge anpassen. Fehler 2: Ungültiger Interrupt eingestellt SoftSERCANS benötigt einen Interrupt. Dieser muß auf der Hardware eingestellt werden (siehe Kap. 2, "Installation der Hardware"). Können diese Interrupts durch SoftSERCANS nicht eingestellt werden, wird dieser Fehler generiert. Reaktion von SoftSERCANS Nur eingeschränkte Kommunikation möglich (Diagnosekanal). Ursache • Interrupt bereits belegt Abhilfe • Interrupteinstellung korrigieren DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Diagnose 6-5 Fehler 3: Umschalten in Phase 3 nicht möglich SoftSERCANS kann die Phasenumschaltung von Phase 2 nach Phase 3 nicht durchführen. Reaktion von SoftSERCANS SoftSERCANS läßt das Umschaltkommando gesetzt und beendet den Phasenhochlauf. Die Diagnose des entsprechenden Antriebs wird in den Diagnosekanal geschrieben. Ursache Mindestens ein Antrieb verweigert die Umschaltung in die Phase 3. Abhilfe Fehler im entsprechenden Antrieb beheben (siehe Hilfe des Antriebsherstellers), z.B. Lesen des Parameters "IDN-Liste ungültige Betriebsdaten Phase 2" (S-0-0021). Fehler 4: Umschalten in Phase 4 nicht möglich SoftSERCANS kann die Phasenumschaltung von Phase 3 nach Phase 4 nicht durchführen. Reaktion von SoftSERCANS SoftSERCANS läßt das Umschaltkommando gesetzt und beendet den Phasenhochlauf. Die Diagnose des entsprechenden Antriebs wird in den Diagnosekanal geschrieben. Ursache Mindestens ein Antrieb verweigert die Umschaltung in die Phase 4. Abhilfe Fehler im entsprechenden Antrieb beheben (siehe Hilfe des Antriebsherstellers), z.B. Lesen des Parameters "IDN-Liste ungültige Betriebsdaten Phase 3" (S-0-0022). DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 6-6 Diagnose DLL für Zugriffe auf SoftSERCANS Fehler 5: SERCOS interface - Doppelter Antriebstelegramm-Ausfall Es wurden zwei aufeinanderfolgende Antriebstelegramme (AT) eines Antriebes von SoftSERCANS nicht empfangen. Reaktion von SoftSERCANS Phasenrückschaltung in Kommunikationsphase 0. Ursache • Lichtwellenleiter nicht korrekt aufgeschraubt. • Defekter Lichtwellenleiterring. • Defekter Antrieb. • Die optische Sendeleistung (bei SoftSERCANS siehe Parameter Y-0-0017) eines Teilnehmers am SERCOS interface-Ring ist zu niedrig eingestellt. Abhilfe • Alle Lichtwellenleiter überprüfen. • Optische Sendeleistung aller Teilnehmer am SERCOS interface-Ring der tatsächlichen Länge anpassen. Fehler 6: LWL-Ring nicht geschlossen Nach einem Start von SoftSERCANS wurde der SERCOS interface-Ring nicht geschlossen. SoftSERCANS kann keine 10 aufeinanderfolgenden MST-Telegramme der Phase 0 empfangen. Reaktion von SoftSERCANS SoftSERCANS bleibt im Zustand "LWL-Ring nicht geschlossen" bis der Lichtwellenleiter geschlossen ist und der Fehler gelöscht wurde. Ursache • Lichtwellenleiter vertauscht oder nicht korrekt aufgeschraubt. • Defekter Lichtwellenleiterring. • Datenraten der Antriebe und von SoftSERCANS verschieden eingestellt. • Die optische Sendeleistung (bei SoftSERCANS siehe Parameter Y-0-0007) eines Teilnehmers am SERCOS interface-Ring ist zu niedrig eingestellt. • Defekter Antrieb. Abhilfe • Alle Lichtwellenleiter überprüfen. • Datenraten überprüfen, SoftSERCANS: siehe Parameter Y-0-0017, Antriebe: siehe Anwendungsbeschreibung des Antriebsherstellers • Optische Sendeleistung aller Teilnehmer am SERCOS interface-Ring der tatsächlichen Länge anpassen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Diagnose 6-7 Fehler 7: Antriebsadressen nicht korrekt (siehe Y-0-0002, Y-0-0024) Die Phasenhochschaltung aus Phase 2 kann nicht durchgeführt werden, weil die in "Adressen projektierte Antriebe" (Y-0-0002) eingetragenen Antriebsadressen nicht mit den im Ring gefundenen übereinstimmt. (siehe auch Y-0-0024 oder Y-0-0025) Antriebe, die nicht betrieben werden sollen, können mit Hilfe des Parameters A-0-0006 deaktiviert werden. Reaktion von SoftSERCANS Phasenrückschaltung in Kommunikationsphase 0. Ursache • Die angeschlossenen Antriebsadressen entsprechen nicht den projektierten Antriebsadressen (Y-0-0002). • Nachdem SoftSERCANS erkannt hat, daß der LWL-Ring geschlossen ist, wurde der LWL-Ring in Phase 1 wieder unterbrochen. • Im Parameter "SERCOS interface - Konfiguration" (Y-0-0017) ist die falsche Übertragungsrate eingestellt. Abhilfe • Antriebsadressen im Y-0-0002 oder die eingestellten Antriebsadressen korrigieren. • LWL-Ring überprüfen. • Übertragungsraten überprüfen, SoftSERCANS: siehe Parameter Y-0-0017, Antriebe: siehe Anwendungsbeschreibung des Antriebsherstellers. • Antriebsadressen im Parameter A-0-0006 aktivieren bzw. deaktivieren. Fehler 8: Maximale Antriebsanzahl überschritten SoftSERCANS kann den Zeitschlitz für die gewünschte Anzahl von Antrieben und der zyklischen Konfiguration nicht einstellen. Reaktion von SoftSERCANS Phasenrückschaltung in Kommunikationsphase 0. Ursache • Parameter "SERCOS-Zykluszeit" (Y-0-0004) und "NC-Zykluszeit" (Y-0-0005) sind zu gering parametriert. • Zu viele zyklische Daten sind im Parameter "Sollwertkonfigurationsliste" (A-0-0002) oder "Istwertkonfigurationsliste" (A-0-0003) parametriert. Abhilfe • Y-0-0004 und Y-0-0005 der Anzahl von Antrieben anpassen. • Konfigurierte zyklische Daten verringern. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 6-8 Diagnose DLL für Zugriffe auf SoftSERCANS Fehler 9: Notreaktion "SERCOS Phase 0" - Modusumschaltung unzulässig Im Betriebsmodus ist zuvor ein schwerwiegender SERCOS interface Fehler aufgetreten. Als Notreaktion hat SoftSERCANS Phase 0 vorgegeben. Ursache • SERCOS interface - Ringunterbrechung • SERCOS interface - Doppelter Antriebstelegrammausfall (z. B. durch lose LWL - Verbindung, unzulässig enger Biegeradius, zu lange LWL Kabel....) Abhilfe • siehe Fehler 1 bzw. Fehler 5. Fehler 10: Falsche Anzahl von Übergabeargumenten Das Programm SoftSERCANS.rtss wurde mit einer ungültigen Anzahl von Argumenten gestartet. Ein beispielhafter Aufruf von der Kommando-Zeile sieht folgendermaßen aus: runrtss SoftSERCANSRTX.rtss 10 D0000 Ursache • Falsche Anzahl von Übergabeargumenten. Abhilfe • Übergabeargumente korrigieren. Fehler 11: SoftSERCANS Hardware-Version nicht korrekt SoftSERCANS überprüft nach jedem Start die Hardware. Nach diesem Start wurde eine defekte oder unbekannte Hardware entdeckt. Ursache • Hardware defekt. • Falsche Basisadresse eingestellt. Abhilfe • Hardware austauschen. • Basisadresse mit der tatsächlich eingestellten Adresse vergleichen und korrigieren. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Diagnose 6-9 Fehler 12: SoftSERCANS Parameter außerhalb Min.-/Max-Wert (siehe Y-0-0021) SoftSERCANS prüft die Einhaltung der Min/Max Grenzen aller Y und AParameter. Jeder Parameter, der diese Prüfung nicht besteht, wird in die "Liste der ungültigen A/Y-Parameter" (Y-0-0021) eingetragen. Reaktion von SoftSERCANS Keine Reaktion. Ursache • Einstellungen einiger oder eines Parameters können nicht durchgeführt werden (siehe Parameterbeschreibung des jeweiligen Parameters). Abhilfe • Parameter in der "Liste der ungültigen A/Y-Parameter" (Y-0-0021) mit sinnvollen Werten beschreiben. Fehler 13: Fehler Lifecounter Die NC und SoftSERCANS überwachen die Übergabe von neuen Sollund Istwerten in jedem NC-Zyklus. Dazu inkrementiert SoftSERCANS den "Lifecounter SoftSERCANS" und die NC den "Lifecounter NC". Die Differenz der beiden Lifecounter ist größer als die zulässige Lifecounter Differenz (Y-0-0009). Reaktion von SoftSERCANS Phasenrückschaltung in Kommunikationsphase 0. Ursache Die NC bedient den "Lifecounter NC" nicht ordnungsgemäß (siehe Kap.5, "Kommunikation mit SoftSERCANS"). Abhilfe • NC-Programm überprüfen. • Bei nicht aktivierter NC: Lifecounter-Überwachung abschalten, dazu Y-0-0009 mit 0 beschreiben. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 6-10 Diagnose DLL für Zugriffe auf SoftSERCANS Fehler 14: SoftSERCANS Parameter Prüfsummenfehler (siehe Y-0-0021) SoftSERCANS prüft alle Y und A-Parameter mittels einer Checksumme auf ihre Gültigkeit. Jeder Parameter, der diese Prüfung nicht besteht, wird in die "Liste der ungültigen A/Y-Parameter" (Y-0-0021) eingetragen. Reaktion von SoftSERCANS Keine Reaktion. Ursache • Neue SoftSERCANS-Software wurde installiert. • SoftSERCANS wurde das erste Mal gestartet. Abhilfe • Parameter in der "Liste der ungültigen A/Y-Parameter" (Y-0-0021) mit sinnvollen Werten beschreiben, oder Kommando "SoftSERCANS Basisparameter laden" (Y-0-0030) ausführen. Danach muß in jedem Fall "Systemparameter speichern" (Y-0-0020) ausgeführt werden (siehe auch Y-0-0030). Fehler 15: SoftSERCANS Parameter nicht korrekt (siehe Y-0-0021) SoftSERCANS prüft die Plausibilität aller Y- und A-Parameter. Jeder Parameter, der diese Prüfung nicht besteht, wird in die "Liste der ungültigen A/Y-Parameter" (Y-0-0021) eingetragen. Reaktion von SoftSERCANS Keine Reaktion. Ursache • Einstellungen einiger oder eines Parameters können nicht durchgeführt werden (siehe Parameterbeschreibung des jeweiligen Parameters) Abhilfe • Parameter in der "Liste der ungültigen A/Y-Parameter" (Y-0-0021) mit sinnvollen Werten beschreiben. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Diagnose 6-11 DLL für Zugriffe auf SoftSERCANS Fehler 16: Ungültige Basisadresse eingestellt SoftSERCANS benötigt einen 16 KByte großen Adressraum. Dieser muß auf der Hardware eingestellt werden und während dem Installieren korrekt eingegeben werden (siehe Kap. 3, "Installation der Software"). Kann dieser Speicher von SoftSERCANS nicht benutzt werden, wird dieser Fehler generiert. Reaktion von SoftSERCANS Nur eingeschränkte Kommunikation möglich (Diagnosekanal). Ursache • Speicher bereits belegt • Nicht unterstützter Speicherbereich ausgewählt • Eingestellte Adresse stimmt nicht mit der während der Installation eingegebenen überein. Abhilfe • Speichereinstellung korrigieren • Die bei der Installation getroffene Einstellung der Basisadresse kann mit dem Hilfsprogramm SoftSERCANSTest.exe geändert werden. Fehler 17: SoftSERCANS Hardware defekt Der Hardwaretest der SoftSERCANS Karte ergab einen Fehler. Abhilfe • SoftSERCANS Hardware tauschen. Fehler 18: Konfigurationsfehler (Istwertkanal) Bei der Konfiguration der zyklischen Telegrammdaten (A-0-0003) mit den Einträgen aus dem Istwertkanal ist ein Fehler aufgetreten. Reaktion von SoftSERCANS Phasenhochschaltung wird unterbrochen. Ursache • Es sind zu viele Istwerte konfiguriert. • Im A-0-0003 sind Parameter konfiguriert, die sich nicht zyklisch konfigurieren lassen. Abhilfe • Reduzieren Sie die Anzahl der zyklischen Daten (siehe Parameter S-0-0016 in den Antrieben). • Korrigieren (A-0-0003). DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Sie den Parameter in "Istwertkonfigurationsliste" 6-12 Diagnose DLL für Zugriffe auf SoftSERCANS Fehler 19: Konfigurationsfehler (Sollwertkanal) Bei der Konfiguration der zyklischen Telegrammdaten (A-0-0002) mit den Einträgen aus dem Sollwertkanal ist ein Fehler aufgetreten. Reaktion von SoftSERCANS Phasenhochschaltung wird unterbrochen. Ursache • Es sind zu viele Sollwerte konfiguriert. • Im A-0-0002 sind Parameter konfiguriert, die sich nicht zyklisch konfigurieren lassen. Abhilfe • Reduzieren Sie die Anzahl der zyklischen Daten (siehe Parameter "Konfig.-Liste Master-Daten-Telegramm", S-0-0024 in den Antrieben). • Korrigieren (A-0-0002). Sie den Parameter "Sollwertkonfigurationsliste" Fehler 25: SoftSERCANS im Testmodus Nullbitstrom Der Testbetrieb "Nullbitstrom" wurde ausgewählt. Reaktion von SoftSERCANS SoftSERCANS sendet Nullbitstrom und verhindert den Phasenhochlauf. Ursache Der Testbetrieb "Nullbitstrom" wurde im Parameter Y-0-0017 aktiviert. Abhilfe Testbetrieb im Parameter Y-0-0017 deaktivieren. Fehler 26: SoftSERCANS im Testmodus Dauerlicht Der Testbetrieb "Dauerlicht" wurde ausgewählt. Reaktion von SoftSERCANS SoftSERCANS sendet Dauerlicht und verhindert den Phasenhochlauf. Ursache Testbetrieb Dauerlicht wurde im Parameter Y-0-0017 aktiviert. Abhilfe Testbetrieb im Parameter Y-0-0017 deaktivieren. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Diagnose 6-13 Fehler 61: Antrieb per Paßwort verriegelt (siehe S-0-0267) Über den Parameter "Paßwort" (S-0-0267) kann der Antrieb gegen Parameterveränderung verriegelt werden. SoftSERCANS benötigt nicht verriegelte Antriebe. Abhilfe Paßwort in Phase 2 entriegeln, siehe Antriebsdokumentation "Paßwort" (S-0-0267). Fehler 100: Antriebsfehler Ein Antrieb meldet einen Antriebsfehler durch Setzen des statischen Zustandsbits für die Zustandsklasse 1 im Antriebsstatus. Die genaue Fehlermeldung ist der entsprechenden Diagnosestruktur zu entnehmen. Reaktion von SoftSERCANS Die Diagnose des entsprechenden Antriebs wird in den Diagnosekanal geschrieben. Ursache Im Antrieb ist ein Fehler aufgetreten. Abhilfe Entsprechenden Diagnosekanal auslesen und Antriebsfehler laut den Richtlinien des Antriebsherstellers beheben. Fehler 4000+n Betriebssystemfehler In SoftSERCANS ist ein interner Fehler aufgetreten. Reaktion von SoftSERCANS Phasenrückschaltung in Kommunikationsphase 0. Ursache Interne Hardware-Testroutinen wurden nicht ordnungsgemäß beendet. Abhilfe • Kontakt mit dem zuständigen Kundendienst aufnehmen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 6-14 Diagnose DLL für Zugriffe auf SoftSERCANS DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-1 DLL für Zugriffe auf SoftSERCANS 7 Beschreibung der DLL-Funktionen 7.1 Grundsätzliches Alle hier erklärten Funktionen beziehen sich mit Ausnahme von SoftSERCANSInitObject und SoftSERCANSUninitObject auf die Klasse CSoftSERCANS. Die für Borland C/ Borland C++ und ANSIC verwendeten Wrapperfunktionen haben zur Unterscheidung den Prefix C_. Weiterhin müssen diese Funktionen einen Hilfszeiger auf die Klasse CSoftSERCANS mitübergeben (siehe auch Kapitel "Der Pseudokonstruktor SoftSERCANSInitObject()"). Alle Funktionen der Klasse mit Ausnahme der Kon-/Destruktoren liefern einen in der Datei "SoftSERCANSdef.h" definierten Fehlercode zurück. Dieser wird in der DLL-Beschreibung nicht mit erläutert. 7.2 Die Klasse CSoftSERCANS Hier wird anhand einer Übersicht die Bibliotheksklasse CSoftSERCANS dargestellt. 3URJUDPPNRQWUROOIXQNWLRQHQ .ODVVH &6RIW6(5&$16 .RQVWUXNWRU&6RIW6(5&$16 $16,& 6RIW6(5&$16,QLW2EMHFW 6WDUWB6RIW6(5&$16 6RIW6(5&$16B6WDWH *HW'//9HUVLRQ 'LHIHWWJHGUXFNWHQ )XQNWLRQHQVLQGIUGHQ %HWULHEGHV(FKW]HLWNHUQV XQEHGLQJWHUIRUGHUOLFK 7HUPLQDWHB6RIW6(5&$16 'HVWUXNWRUa&6RIW6(5&$16 $16,& 6RIW6(5&$168QLQLW2EMHFW Programmkontrolle.wmf Abb. 7-1: Kontrollfunktionen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-2 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS 3DUDPHWHUNRQWUROOIXQNWLRQHQ $3DUDPHWHUEHKDQGOXQJ .ODVVH &6RIW6(5&$16 5HDGB$B1DPH 5HDGB$B$WWULEXWH 5HDGB$B8QLW 5HDGB$B0LQLPXP 5HDGB$B0D[LPXP 5HDGB$B3DUDPHWHU :ULWHB$B3DUDPHWHU A_Parameterkontrolle.wmf Abb. 7-2: Zugriff auf A-Parameter DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-3 DLL für Zugriffe auf SoftSERCANS 3DUDPHWHUNRQWUROOIXQNWLRQHQ <3DUDPHWHUEHKDQGOXQJ .ODVVH &6RIW6(5&$16 5HDGB<B1DPH 5HDGB<B$WWULEXWH 5HDGB<B8QLW 5HDGB<B0LQLPXP 5HDGB<B0D[LPXP 5HDGB<B3DUDPHWHU :ULWHB<B3DUDPHWHU C_Parameterkontrolle.wmf Abb. 7-3: Zugriff auf Y-Parameter DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-4 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS 3DUDPHWHUNRQWUROOIXQNWLRQHQ 633DUDPHWHUEHKDQGOXQJ .ODVVH &6RIW6(5&$16 5HDGB63B1DPH 5HDGB63B$WWULEXWH 5HDGB63B8QLW 5HDGB63B0LQLPXP 5HDGB63B0D[LPXP 5HDGB63B3DUDPHWHU :ULWHB63B3DUDPHWHU SP_Parameterkontrolle.wmf Abb. 7-4: Zugriff auf S/P-Parameter DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Beschreibung der DLL-Funktionen 7-5 9LVXDOLVLHUXQJVIXQNWLRQHQ .ODVVH &6RIW6(5&$16 5HDGB6HUYLFH3DUDPHWHU :ULWHB6HUYLFH3DUDPHWHU /LVW7R'DWD 'DWD7R/LVW hEHUZDFKXQJVIXQNWLRQHQ ,QLWB/LIHFRXQWHU 7ULJJHUB/LIHFRXQWHU Visualisierungsfunktionen.wmf Abb. 7-5: Visualisierung und Programmkontrolle der Echtzeitroutinen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-6 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS 'LDJQRVHNDQDOIXQNWLRQHQ .ODVVH &6RIW6(5&$16 5HDGB$FWXDOB'LDJQRVLV *HWB%DGB'ULYHV &OHDUB(UURU 6\QFKURQLVLHUXQJ ,QLWB6\QF 6\QFB&\FOHB'DWD 3KDVHQXPVFKDOWXQJ &KDQJH6RIW6(5&$163KDVH *HW6RIW6(5&$163KDVH (FKW]HLWGDWHQ 2SHQB0'7B&KDQQHO 2SHQB$7B&KDQQHO &ORVHB0'7B&KDQQHO &ORVHB$7B&KDQQHO Sonstige.wmf Abb. 7-6: Sonstige Funktionen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS 7.3 Beschreibung der DLL-Funktionen 7-7 Unterschiede der DLL-Funktionen von Visual C++ zu anderen Programmiersprachen / Entwicklungsumgebungen Für andere Programmiersprachen ist es erforderlich, die Headerdatei "SoftSERCANSANSIC.h" einzubinden und über einen Hilfszeiger auf Funktionen der Klasse CSoftSERCANS zuzugreifen: Vergleich der Zugriffe auf Klassenfunktionen: 9LVXDO& 'HNODUDWLRQGHU.ODVVH &6RIW6(5&$16 PB&6RIW6(5&$16 %RUODQG&&$16,& 392,' SB&&6RIW6(5&$16 18// 6RIW6(5&$16,QLW2EMHFW SB&&6RIW6(5&$16 .RQVWUXNWRUDXIUXI &6RIW6(5&$16&6RIW6(5&$16 ]%)XQNWLRQVDXIUXI PB&6RIW(5&$16:ULWHB<B 3DUDPHWHU ]%:UDSSHUIXQNWLRQVDXIUXI &B:ULWHB<B3DUDPHWHU SB&&6RIW6(5&$16 $QZHQGXQJWHUPLQLHUHQ 6SHLFKHUGHU'//ZLUGYRP 6\VWHPDXWRPDWLVFK IUHLJHJHJHEHQ $QZHQGXQJWHUPLQLHUHQ 6RIW6(5&$168QLQLW2EMHFW SB&&6RIW6(5&$16 YHUDQODVVW)UHLJDEHGHV '//6SHLFKHUV 'HVWUXNWRUDXIUXI &6RIW6(5&$16a&6RIW6(5&$16 DLL_VisualCppToBorlandCpp.wmf Abb. 7-7: Unterschiede von VisualC++ zu anderen Programmiersprachen bei Zugriffen auf die DLL DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-8 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Fazit Aufrufe mit anderen Programmiersprachen müssen bei allen DLLFunktionen einen Hilfszeiger als Zusatzparameter mit übergeben. Dieser wird mit der Funktion SoftSERCANSInitObject adressiert (Übergabe des Zeigers mit dem Adreßoperator &). Bei der Deklaration dieses Zeigers muß dieser mit dem NULL-Pointer initialisiert werden! Weiterhin erhält die zugehörige Funktion zur Unterscheidung das Präfix C_. Hinweis: Durch den Zeiger p_CCSoftSERCANS wird die Startadresse der Klasse CSoftSERCANS in der DLL für ANSICApplikationen festgelegt 7.4 Programmkontrollfunktionen Hier werden alle Funktionen beschrieben, die zur Kontrolle von SoftSERCANS erforderlich sind. Hierzu gehören auch Funktionen, welche den aktuellen Status der Initialisierung oder die Terminierung des Echtzeitkerns bestimmen. An wichtigen Stellen werden die erforderlichen Schritte durch Flußdiagramme veranschaulicht. Der Konstruktor CSoftSERCANS() Übergabeparameter: keine Rückgabeparamter: keine Funktionsbeschreibung: Der Konstruktor der DLL führt alle notwendigen Initialisierungen der Klassenvariablen durch und wird beim Deklarieren der Klasse CSoftSERCANS in der jeweiligen Applikation aufgerufen (in der Regel beim Programmstart der Applikation). Anmerkung: In ANSIC oder Pascal gibt es keine Klassen, deshalb wird hier der Konstruktor indirekt über die Funktion SoftSERCANSInitObject() aufgerufen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-9 DLL für Zugriffe auf SoftSERCANS Beispielcode in C++: ///////////////////////////////////////////////////////////////////////////// // CSoftSERCANSTestDlg dialog class CSoftSERCANSTestDlg : public CDialog { // Construction public: CSoftSERCANSTestDlg(CWnd* pParent = NULL); //standard constructor // Dialog Data //{{AFX_DATA(CSoftSERCANSTestDlg) enum { IDD = IDD_SoftSERCANSTEST_DIALOG }; CListBox m_CLBStatus; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CSoftSERCANSTestDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); DDX/DDV support // //}}AFX_VIRTUAL public: // Init BOOL m_bInit, m_bWin32; // Implementation protected: CMenu m_CMenu; HICON m_hIcon; // aus DLL, WICHTIG: es darf nur einen geben CSoftSERCANS m_gCSoftSERCANS; Beim Deklarieren des Dialoges CSoftSERCANSTestDlg (Hauptfenster der Anwendung, da es zur Laufzeit einmalig gestartet und einmalig beendet wird) wird der Konstruktor der Klasse CSoftSERCANS durchlaufen und dort alle Variablen dieser Klasse initialisiert. Der Aufruf im übergeordneten Applikationsrahmen sieht so aus: // 1. Konstruktoraufruf des Dialogs: CSoftSERCANSTestDlg CSoftSERCANSDlg; // 2. Basisdialog aufbauen, Zeigerzuweisung: // Hauptfenster=CSoftSERCANSDlg m_pMainWnd = &CSoftSERCANSDlg; // 3. Bildaufbau, leitet Karteninitialisierung ein: int nResponse = CSoftSERCANSDlg.DoModal(); Durch obige Deklaration wird zuerst der Konstruktor der Klasse CSoftSERCANS in der DLL und im Applikationscode der von CSoftSERCANSTestDlg durchlaufen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-10 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Hinweis: Die Klasse CSoftSERCANS darf innerhalb einer Applikation nur einmal deklariert werden. Alle untergeordneten Dialoge müssen mit einem Zeiger auf die globale Klasse m_gCSoftSERCANS arbeiten. Begründung: Jede Klasse beansprucht einen Echtzeitkern des Rechners, dieser darf aber von der zugehörigen Applikation nur einmal belegt werden! Innerhalb der Klasse CSoftSERCANS darf das Schlüsselwort virtual nicht verwendet werden, d.h. doppelte namensgleich deklarierte Funktionen sind nicht erlaubt, da diese bei Aufrufen aus RTX V4.2 nicht mehr unterschieden werden. Der Pseudokonstruktor SoftSERCANSInitObject() Übergabeparameter: Parametername Datentyp Bereich Beschreibung *p_CCpointer LPVOID* (ANSIC) keine Angabe Hilfszeiger für Zugriff auf Funktionen der Klasse CSoftSERCANS CSoftSERCANS* (Pascal++) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung nicht deklariert ULONG SUCCESS, DLL_NO_CLASS Fehlercode für aufrufende Applikation Funktionsbeschreibung: Dieser Pseudokonstruktor dient dazu, C++ fremden Programmiersprachen Einsprünge in die Klasse CSoftSERCANS zu ermöglichen. Auf diese Weise wird durch Aufruf dieses Pseudokonstruktors das gleiche erreicht wie im vorherigen Kapitel beschrieben (der Konstruktor wird aufgerufen). Vor Aufruf des Pseudokonstruktors darf die Anwendung keine DLL-Funktionen aufrufen, da der zugehörige Speicher noch nicht allokiert wurde. VORSICHT Der zugehörige Zeiger muß vor Aufruf mit NULL initialisiert werden Hinweis: Der Pseudokonstruktor darf in einer Anwendung nur einmal aufgerufen werden! DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-11 DLL für Zugriffe auf SoftSERCANS Beispiel für ANSIC: #include <windows.h> #include <stdio.h> /* general notes: // this warning means ’SoftSERCANSANSIC.h’: that function isn’t declared in warning C4013: ’function’ undefined; assuming extern returning int // solution: declare function 1:1 from ’SoftSERCANS.h’ */ // extern declared functions from library #include "..\include\SoftSERCANSANSIC.h" // ANSI C Test int main() { // our pointer to C++ (the connection from ANSI C to C++) LPVOID* pSoftSERCANS=NULL; ULONG ulTest=0xFFFF, ulDatum=0; char chName[60]; ulTest=printf("\neinfacher Test des RTSS"); // init pointer and C++ class, write the address of class SoftSERCANSInitObject(&pSoftSERCANS); Dieser Aufruf in ANSIC bewirkt in der DLL folgenden Ablauf: ANSIC DLL-Code: ULONG CLASS_DECLSPEC SoftSERCANSInitObject(CSoftSERCANS* *p_CCpointer) { // dies ist DER CSoftSERCANS Zeiger für public Memberzugriffe der Klasse // in ANSIC/Delphi // Speicher allokieren (the good old way), ruft CSoftSERCANS() auf: // pointer von Delphi/ANSIC -> class CSoftSERCANS CSoftSERCANS* p_CANSIC = new CSoftSERCANS; // success? if(p_CANSIC!=NULL) { *p_CCpointer = p_CANSIC; return SUCCESS; } // sonst nichts: *p_CCpointer = NULL; return DLL_NO_CLASS; } Der fett geduckte Ausschnitt bewirkt einen Aufruf des Konstruktors der C++-Klasse CSoftSERCANS und die damit verbundene Initialisierung aller Variablen der Klasse. Ein wesentlicher Unterschied zum Standardkonstruktor der Klasse ist hier die Rückgabe eines Fehlercodes. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-12 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Die Initialisierung Start_SoftSERCANS() Übergabeparameter: Parametername Datentyp bWin32 BOOL Bereich Beschreibung Diese Variable muß 0 sein. Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error (Variablenname in der DLL) ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode DLL_NO_RTSS, DLL_RTSS_SYSTEM_ERROR, DLL_RTSS_HARDWARE_ERROR, DLL_RTSS_INIT_TIMEOUT Funktionsbeschreibung: Diese Funktion dient dem Start und der Initialisierung des Echtzeitkerns aus der WindowsNT-Umgebung heraus. Sie ist Voraussetzung für die Kommunikation mit SoftSERCANS. Die Funktion sucht in der Registrierung die entsprechenden Kartenresourcen, die während der Installation des Testprogramms eingetragen wurden. Dies bedeutet, daß ohne eine Installation des Testprogramms ein Start der Echtzeitanwendung nicht möglich ist. Die entsprechenden Strings der Registrierung sind in der Datei "SoftSERCANSreg.h" definiert. Diese Datei ist auch im Projekt des Setupprogramms eingebunden, um für einheitliche Verhältnisse zu sorgen. Wichtig: Diese Funktion ist in der Echtzeitumgebung ungültig und darf nur in Win32-Anwendungen verwendet werden! Auszug aus der Datei "SoftSERCANSreg.h": // wird verwendet von: SoftSERCANSDLL, SoftSERCANSTest und Setup (Installshield V5.1) // Einträge der Resourcen in der Registrierung (definiert in und via Setup!!!!) #define REGID_STRING "SOFTWARE\\Indramat GmbH\\Testprogramm für SoftSERCANS\\1V09" #define CYCLE_IRQ_STRING "iCycleIRQ" #define BASEADDRESS_STRING "iBaseAddress" DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-13 DLL für Zugriffe auf SoftSERCANS 6WDUWGHV(FKW]HLWNHUQV6RIW6(5&$16 6RIW6(5&$16 EHUHLWVJHVWDUWHW" MD XQNULWLVFKHU)HKOHU '//B5766B$&7,9( )XQNWLRQEHHQGHQ QHLQ 5HJLVWULHUXQJVHLQWUlJHOHVHQ .DUWHQUHVRXUFHQ (LQWUlJHJHIXQGHQ" QHLQ NULWLVFKHU)HKOHU '//B:521*B5(*,675< MD 6SHUUHQDOOHU'//)XQNWLRQHQ 6RIW6(5&$16 JHVWDUWHW" QHLQ NULWLVFKHU)HKOHU '//B12B5766 ZDUWHQELV5766UXQWHUPLQLHUW 6SHUUHQDOOHU'//)XQNWLRQHQ ZXUGH ]\NOLVFKH$EIUDJH 6RIW6(5&$16B6WDWH NULWLVFKHU7LPHRXWIHKOHU 7LPHRXWDEJHODXIHQ" '//B5766B,1,7B7,0(287 6SHUUHQDOOHU'//)XQNWLRQHQ 5FNJDEHZHUW! 5FNJDEHZHUW! $XVZHUWXQJ)HKOHUFRGHZLH EHL6RIW6(5&$16B6WDWH 5FNJDEHZHUW -D +DUGZDUHIHKOHU DOOHVULFKWLJDXVJHIKUW 1HLQ 6SHUUHQDOOHU'//)XQNWLRQHQ ELVDXI'LDJQRVHNDQDOXQG 6SHUUHQDOOHU'//)XQNWLRQHQ 7HUPLQDWHB6RIW6(5&$16 SoftSercansStart.wmf Abb. 7-8: Grundsätzlicher Aufbau beim Aufruf von Start_SoftSERCANS DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-14 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Statusabfrage der laufenden Initialisierung SoftSERCANS_State() Übergabeparameter: Parametername Datentyp Bereich Beschreibung ULONG* pulState 0..3 Status der Initialisierung von SoftSERCANS: 3 Ø Init läuft 2 Ø Systemfehler 1 Ø Hardwarefehler 0 Ø Init beendet, betriebsbereit Hinweis: fett: normale Betriebszustände Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: Diese Funktion muß unmittelbar nach Start des Echtzeitkerns "SoftSERCANSRTX.rtss" aufgerufen werden und zyklisch abgefragt werden, bis der Wert 0 zurückgeliefert wird. Hinweis: Für die Statuswerte > 0 sind alle DLL-Funktionen, die auf den Echtzeitkern zugreifen mit Ausnahme von Terminate_SoftSERCANS() gesperrt! Für den Statuswert 1 (Hardware nicht gefunden) ist außerdem die Funktion Read_Actual_Diagnosis() freigegeben. Wird diese Funktion nicht mindestens einmal aufgerufen, so sind keine weiteren DLL-Zugriffe möglich. Ausnahme: Start_SoftSERCANS() funktioniert immer! DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-15 DLL für Zugriffe auf SoftSERCANS Folgender Ablauf muß in der RTX-Umgebung unbedingt eingehalten werden: (LQULFKWHQGHU.ODVVH &6RIW6(5&$16YLD .ODVVHQGHILQLWLRQLQ9LVXDO& .RQVWUXNWRUE]Z 6RIW6(5&$16,QLW2EMHFW $XIUXIGHU6WDWXVDEIUDJH 6RIW6(5&$16B6WDWH QXULQ57;8PJHEXQJ +LQZHLV9RUGHP$XIUXIYRQ 6RIW6(5&$16B6WDWHVLQGDOOH '//)XQNWLRQHQPLW$XVQDKPH YRQ7HUPLQDWHB6RIW6(5&$16 XQG6RIW6(5&$168Q,QLW2EMHFW JHVSHUUW 1HLQ]%VZDUWHQXQG HUQHXWDEIUDJHQ 6RIW6(5&$16B6WDWH ! -D )HKOHULQ $SSOLNDWLRQ VLJQDOLVLHUHQ 6RIW6(5&$16B6WDWH -D $SSOLNDWLRQDUEHLWHW )XQNWLRQHQGHU'//N|QQHQ DXIJHUXIHQZHUGHQ $SSOLNDWLRQEHHQGHQ" -D RSWLRQDO$XIUXIGHU)XQNWLRQ 7HUPLQDWHB6RIW6(5&$16 )UHLJHEHQGHV6SHLFKHUV ,Q&.ODVVHQYDULDEOHIUHLJHEHQE]Z 6RIW6(5&$168QLQLW2EMHFWDXIUXIHQ 1HLQ *HW5766B6WDWH 5HDGB$FWXDOB'LDJQRVLV LVWIUHLJHVFKDOWHW +LQZHLV1DFKGHP$XIUXIYRQ 6RIW6(5&$168Q,QLW2EMHFW GUIHQGLH'//)XQNWLRQHQ QLFKWPHKUYHUZHQGHWZHUGHQ DLLStart_Ende.wmf Abb. 7-9: Grundsätzlicher Ablauf zum Einbinden von SoftSERCANS.rtss Hinweis: Eine RTX-Anwendung muß den eingebundenen RTX-Prozeß wie in der Dokumentation von VenturCom beschrieben, starten. Der Aufruf von Terminate_SoftSERCANS darf bei Start von mehreren SoftSERCANS-Anwendungen nicht erfolgen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-16 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Beenden von SoftSERCANS Terminate_SoftSERCANS() Übergabeparameter: keine Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG SUCCESS, DLL_NO_CLASS Fehlercode für aufrufende Applikation Funktionsbeschreibung: Diese Funktion beendet die Echtzeitapplikation SoftSERCANS. Versionskontrolle GetDLLVersion() Übergabeparameter: Parametername Datentyp Bereich Beschreibung p_SDLL_Version-> struct DLL_VERSION, char[] - Versionsstring, z.B.: strVersion[31] p_SDLL_Version-> "1.03" struct DLL_VERSION, char[] - strDate[31] Datumstring, z.B.: "erstellt am 01.04.1999" p_SDLL_Version-> struct DLL_VERSION, char[] - strName[31] Bezeichnerstring, z.B.: "SoftSERCANS-DLL, Indramat GmbH" Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG SUCCESS, DLL_NO_CLASS, definiert in "SoftSERCANSdefs.h" Fehlercode für aufrufende Applikation Funktionsbeschreibung: Mit dieser Funktion können die wichtigsten Eigenschaften der DLL-Datei, welche auch mit der rechten Maustaste abgerufen werden können eingelesen werden. Diese Eigenschaften sind in der Datei "resource.h" definiert. Die Eigenschaften dürfen nicht mit dem Resourceneditor von Visual C++ verändert werden, sondern ausschließlich in der Datei "resource.h". DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-17 DLL für Zugriffe auf SoftSERCANS ABB710.BMP Abb. 7-10: DLL-Resourcen, Versionsverwaltung Die Resourcen werden auf die in der Datei "resource.h" definierten Konstanten abgebildet. Dies geschieht durch manuelle Anpassung in der Datei "SoftSERCANSDLL.rc" welche vom Resourceneditor der Entwicklungsumgebung verwaltet wird: Auszug aus "SoftSERCANSDLL.rc": BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040704b0" BEGIN VALUE "Comments", "Schnittstelle zur SoftSERCANS ISA-Karte\0" VALUE "CompanyName", "Indramat GmbH\0" VALUE "FileDescription", "SoftSERCANS DLL\0" VALUE "FileVersion", SoftSERCANSDLL_VERSION // changed WR VALUE "InternalName", SoftSERCANSDLL_NAME // changed by WR VALUE "LegalCopyright", "Copyright © 1/1999\0" VALUE "OriginalFilename", "SoftSERCANS.dll\0" VALUE "PrivateBuild", SoftSERCANSDLL_DATE // changed by WR VALUE "ProductName", "Indramat SoftSERCANS\0" VALUE "ProductVersion", "1, 0, 0, 0\0" DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-18 Beschreibung der DLL-Funktionen Diese Konstanten sind in "resource.h" definiert: DLL für Zugriffe auf SoftSERCANS //{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by SoftSERCANSDLL.rc // ////////////////////////////////////////////// // nur hier wird die DLL-Version gepflegt: // ////////////////////////////////////////////// // maximale Länge 30 Zeichen: #define SoftSERCANSDLL_VERSION "0.03" #define SoftSERCANSDLL_DATE erstellt am 07.04.1999" #define SoftSERCANSDLL_NAME GmbH" "SoftSERCANS-DLL,INDRAMAT Diese Eigenschaften sind im Explorer wie folgt sichtbar: ABB711.BMP Abb. 7-11: Dateieigenschaften der DLL Der Destruktor ∼CSoftSERCANS() Funktionsbeschreibung: Der Destruktor gibt mögliche verwendete Resourcen wieder frei. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-19 DLL für Zugriffe auf SoftSERCANS Der Pseudodestruktor SoftSERCANSUnInitObject() Übergabeparameter: Parametername Datentyp Bereich Beschreibung p_CCpointer LPVOID* (ANSIC) keine Angabe Hilfszeiger für Zugriff auf Funktionen der Klasse CSoftSERCANS CSoftSERCANS* (Pascal++) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung nicht deklariert ULONG SUCCESS, DLL_NO_CLASS Fehlercode für aufrufende Applikation Funktionsbeschreibung: Dieser Pseudodestruktor dient dazu, C++ fremden Programmiersprachen die Speicherfreigabe und den damit verbundenen Destruktoraufruf ∼CSoftSERCANS der Klasse CSoftSERCANS zu ermöglichen. Auf diese Weise wird durch Aufruf dieses Pseudodestruktors das gleiche erreicht wie im vorherigen Kapitel beschrieben. Nach Aufruf des Pseudodestruktors darf die Anwendung keine DLL-Funktionen mehr aufrufen, da der zugehörige Speicher deallokiert wurde. VORSICHT Siehe auch Abb. 7-8: Grundsätzlicher Aufbau beim Aufruf von Start_SoftSERCANS. 7.5 Parameterfunktionen der DLL Hier werden alle Funktionen zum Lesen und Schreiben der verwendeten Parameter beschrieben. Hinweis: Alle Parameter liefern im Fehlerfall den in Kapitel 7.13 beschriebenen Fehlercode (definiert in "SoftSERCANSdefs.h") und die dazugehörigen Fehler-ID-Bits zurück. Kodierung des Übergabeparameter "usIdentnr" für die folgenden Funktionen Achsnummer (USHORT) 7 0 0 x x x x x x x Achsnummer [1 ... 99] Abb. 7-12: Achsnummer (Parameter USHORT usAntriebsadresse) DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-20 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Parameter-Kennung (USHORT) 15 8 x x x x x x x x 7 0 x x x x x x x x Parameter-Nr. [1 ... 4095] Parameter-Satz [0 ... 7] 0 1 0 0 S-Parameter P-Parameter A-Parameter Y-Parameter Abb. 7-13: Parameter-Kennung (Parameter USHORT usIdentnr) Name des A-Parameters Read_A_Name() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001..0x7FFF Parameternummer einschließlich Parametersatz const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pchName char* auf - Zeiger auf die Bezeichnung des selektierten Parameters char[61] Hinweis: Die Applikation muß den Speicher für pchName zur Verfügung stellen (z.B. char chName[61]) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liest den Namen (Element 2) eines A-Parameters. Attribut des A-Parameters Read_A_Attribute() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001.. Parameternummer einschließlich Parametersatz 0x7FFF const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pulAttribut ULONG* - Attribut des selektierten Parameters DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-21 DLL für Zugriffe auf SoftSERCANS Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Diese Funktion liest das Attribut (Element 3) eines A-Parameters. Funktionsbeschreibung: Hinweis: Die Applikation muß den Speicher für pulAttribut zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulAttribut Einheit des A-Parameters Read_A_Unit() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001.. Parameternummer einschließlich Parametersatz 0x7FFF const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pchEinheit Char* auf - Einheit des Parameters Char[13] Hinweis: Die Applikation muß den Speicher für pchEinheit zur Verfügung stellen (z.B. char chEinheit[13]) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liest die Einheit (Element 4) eines A-Parameters. Minimum des A-Parameters Read_A_Minimum() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001.. Parameternummer einschließlich Parametersatz 0x7FFF const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pulMinimum ULONG* - Minimalwert des Parameters DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-22 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liest das Minimum (Element 5) eines A-Parameters. Hinweis: Die Applikation muß den Speicher für pulMinimum zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulMinimum Maximum des A-Parameters Read_A_Maximum() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001.. Parameternummer einschließlich Parametersatz 0x7FFF const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pulMaximum ULONG* - Maximalwert des Parameters Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liest das Maximum (Element 6) eines A-Parameters. Hinweis: Die Applikation muß den Speicher für pulMaximum zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulMaximum Datum des A-Parameters Read_A_Parameter() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001.. Parameternummer einschließlich Parametersatz 0x7FFF const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pulData ULONG* - Datum des Parameters bzw. Zeiger auf Datenliste DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-23 DLL für Zugriffe auf SoftSERCANS Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liest das Datum (Element 7) des selektierten Parameters. Handelt es sich um eine Liste, so wird der Zeiger auf den Listenanfang übergeben. Ob es sich um eine Liste handelt, muß über das Attribut (siehe Seite 5-14) des Parameters ermittelt werden. Hinweis: Die Applikation muß den Speicher für pulData zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulData Beispiel: Sourcecode DLL: // 1. Attribut lesen: m_ulDLL_Error = C_Read_A_Attribute (m_STestmich.usIdentnr, pSService->usAntriebsadresse, &m_STestmich.ulAttribut); // 2. Attribut auswerten: // wurde ein Attribut erkannt, wenn ja if(m_ulDLL_Error>0) return m_ulDLL_Error; // dann wird es auch übernommen: else { // Auswertung Attribut if(m_STestmich.ulAttribut&0x00040000)// variabel, Bit 18? pSService->bListe pSService->ulAttribut } DOK-SERCAN-SOFT*01VRS*-FK01-DE-P = = TRUE; m_STestmich.ulAttribut; 7-24 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Sourcecodeauszug Anwendung: // 3. In der Applikation: Entsprechend weiter verfahren // wurde ein Listenparameter angefordert? if(m_SService.bListe) { //////////////////////////////////////////////////// // wichtige Zuweisung: // //////////////////////////////////////////////////// SHORT* psDaten=(SHORT*)m_SService.ulListe; // m_SService.ulListe muß wieder deallokiert werden, siehe weiter // unten // Listenelemente zeigen: Datumdarstellung(LISTE); // Liste zeigen // angeforderte Standardelemente ausgeben m_cstrName = m_SService.chName; m_cstrAttribut = m_SService.chAttribut; m_cstrEinheit = m_SService.chEinheit; m_cstrMinimum m_cstrMaximum = = m_SService.chMinimum; m_SService.chMaximum; // Liste einlesen, konvertieren und anzeigen // alten Inhalt leeren: m_CLBDatenliste.ResetContent(); DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-25 DLL für Zugriffe auf SoftSERCANS // Liste füllen, 3 Möglichkeiten // aktuelle Elementanzahl in DWORD m_uiAktListe = (UINT)psDaten[0]; // max. Elementanzahl in DWORD m_uiMaxListe = (UINT)psDaten[1]; // Liste aus DWORDs ? if((m_SService.ulAttribut&0x00020000)==0x00020000) { // Länge korrigieren: m_uiAktListe=m_uiAktListe>>2; m_uiMaxListe=m_uiMaxListe>>2; // inkrement for(UINT i=0;i<m_uiAktListe;i++) ; // hier Liste auslesen } // oder sind es gar WORDs ? else if((m_SService.ulAttribut&0x00010000)==0x00010000) { // Länge korrigieren: m_uiAktListe=m_uiAktListe>>1; m_uiMaxListe=m_uiMaxListe>>1; // inkrement 1 for(UINT i=0;i<m_uiAktListe;i++) ; // hier Liste auslesen } // oder ist es ein simpler String? else { // nur wenn wirklich nötig allokieren (für MFC-Behandlung): char chLangeListe[65533]; char* pchSource; // optional: Länge korrigieren, wir haben nur EINEN String: m_uiAktListe=1; m_uiMaxListe=1; // so zuweisen: pchSource = (char*)&psDaten[2]; // so kopieren: Endezeichen inclusive, dafür chLangeListe: strncpy(chLangeListe, pchSource, psDaten[0]+1); // und endlich in ein Ausgabefeld: // nur den einen String eintragen: m_CLBDatenliste.InsertString(-1,chLangeListe); } // ab hier sind die 65533 Bytes wieder freigegeben Dies ist eine sichere Methode zum Auslesen von Listen (kann so 1:1 in eigene Applikationen übernommen werden). DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-26 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Hinweis: Wichtig ist die Freigabe des von SoftSERCANS allokierten Speicherbereichs ab dem Zeitpunkt, bei dem diese Liste nicht mehr von der Applikation benötigt wird. Auszug aus einem Applikationsquellcode: ///////////////////////////////////////////////////////////////////////////// // Speicher unbedingt wieder deallokieren // ///////////////////////////////////////////////////////////////////////////// if(m_SService.bListe) { // m_SService.ulListe siehe oben !!!!!! if(!HeapFree(GetProcessHeap(),0,(VOID*)m_SService.ulListe) ) { ULONG ulFehler=GetLastError(); // Fehler ausgeben m_CSStatus.m_ulBackColor = RED; m_cstrStatus.Format(IDS_HEAPERROR, ulFehler); } // einmal reicht: m_SService.bListe = FALSE; } Wenn der Speicher nicht deallokiert wird, wird der verfügbare Speicher unter WinNT (im Programm Taskmanager sichtbar) immer kleiner! Der hier beschriebene Ablauf muß bei allen Listenparametern angewandt werden! DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-27 DLL für Zugriffe auf SoftSERCANS Datum des A-Parameters schreiben Write_A_Parameter() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001.. Parameternummer einschließlich Parametersatz 0x7FFF const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs ulDatum ULONG - Datum des Antriebs oder Adresse der variablen Liste wenn bListe == TRUE const bListe BOOL 0,1 wenn FALSE wird ein Datum übergeben wenn TRUE wird eine Datenliste übergeben Ø Zeiger auf Listenstart (ist meistens mit dem Zeiger identisch, der zuvor beim Lesen dieses Parameters übergeben wurde) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Diese Funktion schreibt entsprechende Liste. einen einzelnen A-Parameter oder die 7-28 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Flußdiagramm zur Parameterbehandlung SULQ]LSLHOOHU$EODXIEHLGHU3DUDPHWHUEHKDQGOXQJ $QZHQGHUZLOOQHXHQ 3DUDPHWHUOHVHQ 6FKULWW$WWULEXWGHV VHOHNWLHUWHQ3DUDPHWHUV OHVHQ 'DWXPOHVHQXQGDQ]HLJHQ /LVWHYRQ'DWHQ" YHUlQGHUQ -D 'DWXPVFKUHLEHQ =HLJHUDXI/LVWHKROHQ/LVWH ZLUGYRQ6RIW6(5&$16LP 6SHLFKHUDOORNLHUW /LVWHEHDUEHLWHQYHUlQGHUQ YHUNU]HQO|VFKHQXVZ YHUlQGHUWH/LVWH2QOLQH DQ]HLJHQ 3DUDPHWHUVFKUHLEHQ" 1HLQ -D1HLQ $QZHQGHUVHOHNWLHUW QHXHQ3DUDPHWHU 1HLQ -D $SSOLNDWLRQPXDOORNLHUWHQ 6SHLFKHUYRPYRUKHULJHQ 3DUDPHWHUZLHGHUIUHLJHEHQ ZHQQGLHVHUQLFKWPHKU EHQ|WLJWZLUG Parameterbehandlung.wmf Abb. 7-14: Ablauf beim Lesen und Schreiben eines Parameters Beim Lesen eines Parameters wird der benötigte Speicher je Parameter nur einmal im Echtzeitkern von SoftSERCANS allokiert. Ab diesem Zeitpunkt wird nur noch über einen Zeiger vom Typ ULONG auf diesen reservierten Bereich zugegriffen. Die Applikation muß keinen Speicher für das Lesen von Listen zur Verfügung stellen, den zur Verfügung gestellten Speicher jedoch wieder freigeben! DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-29 DLL für Zugriffe auf SoftSERCANS Name des Y-Parameters Read_Y_Name() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001..0x7FFF Parameternummer einschließlich Parametersatz pchName char* auf - Zeiger auf die Bezeichnung des selektierten Parameters char[61] Hinweis: Die Applikation muß den Speicher für pchName zur Verfügung stellen (z.B. char chName[61]) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Diese Funktion liefert den Namen (Element 2) des selektierten Parameters. Funktionsbeschreibung: Attribut des Y-Parameters Read_Y_Attribute() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001..0x7FFF Parameternummer einschließlich Parametersatz pulAttribut ULONG* - Attribut des selektierten Parameters Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liefert das Attribut (Element 3) des selektierten Parameters. Hinweis: Die Applikation muß den Speicher für pulAttribut zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulAttribut DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-30 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Einheit des Y-Parameters Read_Y_Unit() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001..0x7FFF Parameternummer einschließlich Parametersatz pchEinheit char* auf - Einheit des selektierten Parameters char[13] Hinweis: Die Applikation muß den Speicher für pchEinheit zur Verfügung stellen (z.B. char chEinheit[13]) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Diese Funktion liefert die Einheit (Element 4) des selektierten Parameters. Funktionsbeschreibung: Minimum des Y-Parameters Read_Y_Minimum() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001..0x7FFF Parameternummer einschließlich Parametersatz pulMinimum ULONG* - Minimum des selektierten Parameters Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liefert das Minimum (Element 5) des selektierten Parameters. Hinweis: Die Applikation muß den Speicher für pulMinimum zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulMinimum DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Beschreibung der DLL-Funktionen 7-31 Maximum des Y-Parameters Read_Y_Maximum() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001..0x7FFF Parameternummer einschließlich Parametersatz pulMaximum ULONG* - Maximum des selektierten Parameters Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Diese Funktion liefert das Maximum (Element 6) des selektierten Parameters. Funktionsbeschreibung: Hinweis: Die Applikation muß den Speicher für pulMaximum zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulMaximum Datum des Y-Parameters Read_Y_Parameter() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001..0x7FFF Parameternummer einschließlich Parametersatz pulData ULONG* - Datum des Parameters bzw. Zeiger auf Datenliste Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liest das Datum (Element 7) des selektierten Parameters. Handelt es sich um eine Liste, so wird der Zeiger auf den Listenanfang übergeben. Ob es sich um eine Liste handelt, muß über das Attribut des Parameters ermittelt werden (siehe auch Kapitel "Datum des AParameters Read_A_Parameter()"). Bei Listen muß der von SoftSERCANS allokierte Speicher von der Applikation wieder deallokiert werden. Hinweis: Die Applikation muß den Speicher für pulData zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulData DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-32 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Datum des Y-Parameters schreiben Write_Y_Parameter() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001..0x7FFF Parameternummer einschließlich Parametersatz ulDatum ULONG - Datum des Antriebs oder Adresse der variablen Liste wenn bListe == TRUE const bListe BOOL 0,1 wenn FALSE wird ein Datum übergeben wenn TRUE wird eine Datenliste übergeben Ø Zeiger auf Listenstart (ist meistens mit dem Zeiger identisch, der zuvor beim Lesen dieses Parameters übergeben wurde) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion schreibt einen einzelnen Y-Parameter oder die entsprechende Liste. (siehe auch Kapitel "Flußdiagramm zur Parameterbehandlung") Name des S/P-Parameters Read_SP_Name() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001-0x7FFF (S) S- bzw. P-Parameternummer ein-schließlich des Parametersatzes 0x8001-0xFFFF (P) const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pchName Char* auf - Name des selektierten Parameters Char[61] Hinweis: Die Applikation muß den Speicher für pchName zur Verfügung stellen (z.B. char chName[61]) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liefert den Namen (Element 2) des selektierten Parameters. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-33 DLL für Zugriffe auf SoftSERCANS Attribut des S/P-Parameters Read_SP_Attribute() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001-0x7FFF (S) S- bzw. P-Parameternummer ein-schließlich des Parametersatzes 0x8001-0xFFFF (P) const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pulAttribut ULONG* - Attribut des selektierten Parameters Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liefert das Attribut (Element 3) des selektierten Parameters. Hinweis: Die Applikation muß den Speicher für pulAttribut zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulAttribut Einheit des S/P-Parameters Read_SP_Unit() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001-0x7FFF (S) S- bzw. P-Parameternummer einschließlich des Parametersatzes 0x8001-0xFFFF (P) const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pchEinheit char* auf - Einheit des selektierten Parameters char[13] Hinweis: Die Applikation muß den Speicher für pchEinheit zur Verfügung stellen (z.B. char chEinheit[13]) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Diese Funktion liefert die Einheit (Element 4) des selektierten Parameters. 7-34 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Minimum des S/P-Parameters Read_SP_Minimum() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001-0x7FFF (S) S- bzw. P-Parameternummer einschließlich des Parametersatzes 0x8001-0xFFFF (P) const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pulMinimum ULONG* - Minimum des selektierten Parameters Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liefert das Minimum (Element 5) des selektierten Parameters. Hinweis: Die Applikation muß den Speicher für pulMinimum zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulMinimum Maximum des S/P-Parameters Read_SP_Maximum() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001-0x7FFF (S) S- bzw. P-Parameternummer einschließlich des Parametersatzes 0x8001-0xFFFF (P) const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pulMaximum ULONG* - Maximum des selektierten Parameters Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liefert das Maximum (Element 6) des selektierten Parameters. Hinweis: Die Applikation muß den Speicher für pulMaximum zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulMaximum DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-35 DLL für Zugriffe auf SoftSERCANS Datum des S/P-Parameters Read_SP_Parameter() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001-0x7FFF (S) S- bzw. P-Parameternummer einschließlich des Parametersatzes 0x8001-0xFFFF (P) const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs pulData ULONG* - Datum des Parameters bzw. Zeiger auf Datenliste Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liest das Datum (Element 7) des selektierten Parameters. Handelt es sich um eine Liste, so wird der Zeiger auf den Listenanfang übergeben. Ob es sich um eine Liste handelt, muß über das Attribut des Parameters ermittelt werden (siehe auch Kapitel "Datum des AParameters Read_A_Parameter()"). Bei Listen muß der von SoftSERCANS allokierte Speicher von der Applikation wieder deallokiert werden. Hinweis: Die Applikation muß den Speicher für pulData zur Verfügung stellen und die Variable mit dem Referenzoperator übergeben: &ulData Datum des S/P-Parameters schreiben Write_SP_Parameter() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usIdentnr USHORT 0x0001-0x7FFF (S) S- bzw. P-Parameternummer einschließlich des Parametersatzes 0x8001-0xFFFF (P) const usAntriebsadresse USHORT 1..99 Adresse des selektierten Antriebs ulDatum ULONG - bListe == FALSE: Datum des Parameters bListe == TRUE: Startadresse der Liste const bListe BOOL 0,1 wenn FALSE wird ein Datum übergeben wenn TRUE wird eine Datenliste übergeben Ø Zeiger auf Listenstart (ist meistens mit dem Zeiger identisch, der zuvor beim Lesen dieses Parameters übergeben wurde) DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-36 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: 7.6 Diese Funktion schreibt einen einzelnen S/P-Parameter oder die entsprechende Liste. (siehe auch Kapitel "Datum des A-Parameters schreiben Write_A_Parameter()") Spezielle Funktionen für die Visualisierung von Parameterdaten Diese Funktionen dienen dazu, in Visualisierungsprogrammen die entsprechenden Parameterwerte möglichst einfach bereit zu stellen, um z.B. die Felder eines entsprechenden Dialogs auszufüllen. Schreiben eines Parameters Write_ServiceParameter() Übergabeparameter: Struktur SERVICE "SoftSERCANSdefs.h" als Zeiger, definiert in der Parametername Datentyp Bereich Beschreibung pService->usAntriebsadresse USHORT 1..maximale Anzahl Antriebsadresse pSService->chIdentnr[10] char siehe Kapitel "7.9" Identnummer (Element 1), String in der Form "C-0-0001" pSService->chName[61] char siehe Kapitel "7.10" Name (Element 2), String pSService->chAttribut[33] char siehe Kapitel "Datenblockaufbau" Attribut (Element 3), String pSService->chEinheit[33] char siehe Kapitel "Datenblockaufbau" Einheit (Element 4), String pSService->chMinimum[33] char siehe Kapitel "Datenblockaufbau" Minimum (Element 5), String pSService->chMaximum[33] char siehe Kapitel "Datenblockaufbau" Maximum (Element 6), String pSService->chDatum[33] char siehe Kapitel "Datenblockaufbau" wenn bListe == FALSE: Datei Datum (Element 7), als String wenn bListe == TRUE: egal pSService->bListe BOOL 0, 1 Listenflag (TRUEØListe) pSService->usActLength USHORT 0..Maxlength wenn bListe == TRUE: aktuelle Listenlänge 5 DWORD-Elemente Ø 5 7 WORD-Elemente Ø 7 16 Byte-Elemente Ø 16 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-37 DLL für Zugriffe auf SoftSERCANS pSService->usMaxLength USHORT 1..65532 wenn bListe == TRUE: maximale Listenlänge 5 DWORD-Elemente Ø 5 7 WORD-Elemente Ø 7 16 Byte-Elemente Ø 16 pSService->pvListe VOID* Startadresse der Liste (32 bit) wenn bListe == TRUE: Anfangsadresse der Liste, Inhalt muß auf aktuelle Länge/maximale Länge in Bytes gesetzt werden. Hierzu folgende Anpassung: short* psLength = (short*)psService->pvListe; psLength[0] = shActLength_inBytes; psLength[1] = shMaxLength_inBytes; pSService->usIdentnr USHORT 0x0001.. Identnummer (Element 1), Wert 0x7FFF pSService->ulAttribut ULONG siehe Kapitel "Datenblockaufbau" Attribut (Element 3), Wert pSService->ulMinimum ULONG siehe Kapitel "Datenblockaufbau" Minimum (Element 5), Wert pSService->ulMaximum ULONG siehe Kapitel "Datenblockaufbau" Maximum (Element 6), Wert pSService->ulDatum ULONG siehe Kapitel "Datenblockaufbau" wenn bListe == FALSE: Datum (Element 7), Wert Hinweis: kursiv: erforderliche Übergabeparameter fett: errechnete Werte durch die Funktion normal: unbeeinflusst, egal Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Diese Funktion schreibt das Datum oder die zugehörige Liste des selektierten Parameters. 7-38 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Lesen eines Parameters Read_ServiceParameter() Übergabeparameter: Struktur SERVICE als Zeiger, definiert in der Datei "SoftSERCANSdefs.h" Parametername Datentyp Bereich Beschreibung pService->usAntriebsadresse USHORT 1..maximale Anzahl Antriebsadresse pSService->chIdentnr[10] char siehe Kapitel "Datenblockaufbau" Identnummer (Element 1), String in der Form "C-00001" pSService->chName[61] char siehe Kapitel "Datenblockaufbau" Name (Element 2), String wenn unbekannt, Stringinhalt "--" pSService->chAttribut[33] char siehe Kapitel "Datenblockaufbau" Attribut (Element 3), String pSService->chEinheit[13] char siehe Kapitel "Datenblockaufbau" Einheit (Element 4), String siehe Kapitel "Datenblockaufbau" Minimum (Element 5), String siehe Kapitel "Datenblockaufbau" Maximum (Element 6), String siehe Kapitel "Datenblockaufbau" wenn bListe == FALSE: pSService->chMinimum[33] char pSService->chMaximum[33] char pSService->chDatum[33] char wenn unbekannt, Stringinhalt "--" wenn unbekannt, Stringinhalt "--" wenn unbekannt, Stringinhalt "--" Datum (Element 7), String wenn bListe == TRUE: Stringinhalt: "variabel" pSService->bListe BOOL 0, 1 Listenflag (TRUEØListe) pSService->pvListe VOID* siehe Kapitel "Datenblockaufbau" wenn bListe == TRUE: Anfangsadresse der Liste, Inhalt wird auf aktuelle Länge/maximale Länge in Bytes gesetzt. Hierzu folgende Anpassung: short* psLength = (short*)psService->pvListe; shActLength_inBytes = psLength[0]; shMaxLength_inBytes = psLength[1]; pSService->usActLength USHORT 0..Maxlength wenn bListe == TRUE: aktuelle Listenlänge (Elementanzahl) 5 DWORD-Elemente Ø 5 7 WORD-Elemente Ø 7 16 Byte-Elemente Ø 16 pSService->usMaxLength USHORT 1..65532 wenn bListe == TRUE: maximale Listenlänge (Elementanzahl) 5 DWORD-Elemente Ø 5 7 WORD-Elemente Ø 7 16 Byte-Elemente Ø 16 pSService->usIdentnr USHORT 0x0001.. Identnummer (Element 1), Wert 0x7FFF DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-39 DLL für Zugriffe auf SoftSERCANS pSService->ulAttribut ULONG siehe Kapitel "Datenblockaufbau" Attribut (Element 3), Wert pSService->ulMinimum ULONG siehe Kapitel "Datenblockaufbau" Minimum (Element 5), Wert pSService->ulMaximum ULONG siehe Kapitel "Datenblockaufbau" Maximum (Element 6), Wert pSService->ulDatum ULONG siehe Kapitel "Datenblockaufbau" wenn bListe == FALSE: Datum (Element 7), Wert Hinweis: kursiv: erforderliche Übergabeparameter fett: errechnete Werte durch die Funktion Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Diese Funktion liest die komplette Elementinformation des selektierten Parameters und gibt sie als String und Wert zurück. Funktionsbeschreibung: Das einzig bekannte Element ist hier der eingegebene Parameter als String und die zugehörige Antriebsadresse (identisch mit der am Antrieb eingestellten Adresse). Der selektierte Parameter kann als String direkt aus dem Eingabefeld heraus an diese Funktion übergeben werden. Datum einer Liste in einen Listenstring konvertieren DatumToListe() Übergabeparameter: Parametername Datentyp Bereich Beschreibung const usElementnr USHORT 1..32766 Selektiertes Listenelement const ulAttribut ULONG siehe Kapitel "Datenblockaufbau" Attribut (Element 3), nur für WORD und DWORD pvListe VOID* 32bit Adresse Zeiger auf die Liste (Startadresse) pchListe char* auf - Zeiger auf konvertierten String des Datums einer Liste char[33] Hinweis: Die Applikation muß den Speicher für pchListe und für die Liste zur Verfügung stellen (z.B. char chListe[33]) Hinweis: kursiv: Übergabeparameter fett: errechnete Werte durch die Funktion DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-40 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion dient zum Lesen eines selektierten Elementes einer DWORD- oder WORD-Parameterliste in einen vom Anwender veränderbaren String (in der Regel beim 1. Lesezugriff auf eine Parameterliste). Auszug aus dem Quellcode des Testprogramms SoftSERCANSTest.exe: // Speicher reservieren: char chListeneintrag[33]; // wurde ein Listenparameter angefordert? if(m_SService.bListe) { // Listenelemente zeigen: Datumdarstellung(LISTE); // Liste zeigen // angeforderte Standardelemente ausgeben m_cstrName = m_SService.chName; m_cstrAttribut = m_SService.chAttribut; m_cstrEinheit = m_SService.chEinheit; m_cstrMinimum = m_cstrMaximum = m_SService.chMinimum; m_SService.chMaximum; // Liste einlesen, konvertieren und anzeigen // alten Inhalt leeren: m_CLBDatenliste.ResetContent(); // Liste füllen, 3 Möglichkeiten // aktuelle Listenlänge (Elementanzahl) m_uiAktListe = (UINT)m_SService.usActLength; // maximale Listenlänge (Elementanzahl) m_uiMaxListe = (UINT)m_SService.usMaxLength; // DWORD if((m_SService.ulAttribut&0x00020000)==0x00020000) { // inkrement for(UINT i=0;i<m_uiAktListe;i++) { ulFehler=m_pCSoftSERCANS->Datum2Liste(i+1, m_SService.ulAttribut, m_SService.pvListe, chListeneintrag); if(ulFehler==0) m_CLBDatenliste.InsertString(-1,chListeneintrag); DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-41 DLL für Zugriffe auf SoftSERCANS else i=m_uiAktListe; } } // WORD else if((m_SService.ulAttribut&0x00010000)==0x00010000) { // inkrement 1 for(UINT i=0;i<m_uiAktListe;i++) { ulFehler=m_pCSoftSERCANS->Datum2Liste( i+1, m_SService.ulAttribut, m_SService.pvListe, chListeneintrag); if(ulFehler==0) m_CLBDatenliste.InsertString(-1,chListeneintrag); else i=m_uiAktListe; } } // String else { /////////////////////////////////////////////////// // wichtige Zuweisung: // /////////////////////////////////////////////////// SHORT* psDaten=(SHORT*)m_SService.ulListe; // nur wenn wirklich nötig: char chLangeListe[65533]; char* pchSource; // Länge korrigieren (nur wenn so erforderlich), wir haben nur EINEN String: m_uiAktListe=1; m_uiMaxListe=1; pchSource = (char*)&psDaten[2]; // Endezeichen 0 inclusive -> +1: strncpy(chLangeListe, pchSource, psDaten[0]+1); // nur den einen String eintragen: m_CLBDatenliste.InsertString(-1,chLangeListe); } DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-42 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Listenstring in ein Listendatum konvertieren ListToData() Übergabeparameter: Parametername Datentyp Bereich Beschreibung Const usElementnr USHORT 1..32766 Selektiertes Listenelement Const ulAttribut ULONG siehe Kapitel "Datenblockaufbau" Attribut (Element 3); nur DWORD und WORD pchListe char* auf - Zeiger auf konvertierten String des Datums einer Liste char[33] VOID* pvListe kann direkt am Bildschirm angezeigt werden 32bit Adresse Zeiger auf die Listenstartadresse, Liste wird an der vorgegebenen Position geschrieben Hinweis: Die Applikation muß den Speicher für pchListe und die Liste zur Verfügung stellen (z.B. char chListe[33]), die aktuelle Länge und maximale Länge der Liste muß korrekt sein Hinweis: kursiv: Übergabeparameter fett: errechnete Werte durch die Funktion Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion dient zum Speichern eines selektierten Elementes der vom Anwender veränderten Listenstrings in eine entsprechende WORDoder DWORD-Parameterliste (in der Regel beim Schreiben der veränderten Parameterliste). Hinweis: Diese Funktion kann auch für die Syntaxprüfung eines eingegebenen Datums verwendet werden. Hierzu muß eine Dummyliste mitübergeben werden, die wie folgt aussieht: Für WORD: short shDummyliste[4]; shDummyliste[0]=2; shDummyliste[1]=2; shDummyliste[2]=0; shDummyliste[3]=0; // aktuelle Länge in Bytes // maximale Länge in Bytes // WORD // leer DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-43 DLL für Zugriffe auf SoftSERCANS Für DWORD: short shDummyliste[4]; shDummyliste[0]=4; shDummyliste[1]=4; shDummyliste[2]=0; shDummyliste[3]=0; // aktuelle Länge in Bytes // maximale Länge in Bytes // DWORD H // DWORD L Funktionsaufruf: ListeToDatum(1,ulAttribut,pchListe,&shDummyliste[0]) Der errechnete Wert steht dann an Position 1 des Dummyarrays. Auszug aus dem Quellcode des Testprogramms SoftSERCANSTest.exe: // Speicher reservieren: char chListeneintrag[33]; //////////////////////////////////////////////////////////////////////////// // das wichtigste, das eingegebene Datum: // //////////////////////////////////////////////////////////////////////////// // variable Daten?, wenn ja Liste zurückwandeln und eintragen if(m_SService.bListe) { SHORT* psStringzeiger=(SHORT*)m_SService.pvListe; // wir müssen die Listbox abholen und die Liste aktualisieren: // Liste füllen, 3 Möglichkeiten /////////////////////////// // DWORD // /////////////////////////// if((m_SService.ulAttribut&0x00020000)==0x00020000) { // aktuelle Elementanzahl in DWORD m_SService.usActLength = (USHORT) m_uiAktListe; // inkrement for(short i=0;i<m_SService.usActLength;i++) { // Text holen und m_CLBDatenliste.GetText(i,chListeneintrag); // prüfen und konvertieren ulFehler=m_pCSoftSERCANS->Liste2Datum( i+1, m_SService.ulAttribut, chListeneintrag, m_SService.pvListe); // ok? if(ulFehler>0) { // fehlerhafte Zeile merken: DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-44 Beschreibung der DLL-Funktionen uiFehlerzeile DLL für Zugriffe auf SoftSERCANS = i+1; // focussieren und m_CLBDatenliste.SetCurSel(i); // Zeile highlighten // Schleife beenden i=psDaten[0]; } } } /////////////////////////////// // WORD // /////////////////////////////// else if((m_SService.ulAttribut&0x00010000)==0x00010000) { // aktuelle Elementanzahl in WORD m_SService.usActLength = (USHORT) m_uiAktListe; // inkrement 1 for(short i=0;i<psDaten[0];i++) { // Text holen und m_CLBDatenliste.GetText(i,chListeneintrag); // konvertieren ulFehler=m_pCSoftSERCANS->Liste2Datum( i+1, m_SService.ulAttribut, chListeneintrag, m_SService.pvListe); // ok? if(ulFehler>0) { // fehlerhafte Zeile merken: uiFehlerzeile = i+1; // focussieren und m_CLBDatenliste.SetCurSel(i); // Zeile highlighten // Schleife beenden i=psDaten[0]; } } } //////////////////////////////// // String // /////////////////////////////// else { // nur wenn wirklich nötig: char chLangeListe[65533]; DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-45 DLL für Zugriffe auf SoftSERCANS char* pchDaten=(CHAR*)&psStringzeiger[2]; /////////////////////////////////////////////////////////////////////////////// // SONDERFALL: es existiert nur ein Eintrag! // /////////////////////////////////////////////////////////////////////////////// // aktuelle Elementanzahl in Byte: int iTest=m_CLBDatenliste.GetText(0,chLangeListe); // ist was richtiges in der Listbox? if(iTest!=LB_ERR) { m_SService.usActLength = (short)iTest; // kopieren und am Ende kein 0-Zeichen anfügen strncpy(pchDaten, chLangeListe, psStringzeiger[0]); // ungerader Wert? if(iTest%2) m_SService.usActLength +=1; } else m_SService.usActLength = 0; } } Obiges Beispiel kann in den meisten Fällen 1:1 übernommen werden! DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-46 Beschreibung der DLL-Funktionen 7.7 DLL für Zugriffe auf SoftSERCANS Direkte Behandlung der Parameter über ULONG-Wert Mit der hier beschriebenen Funktion können die Elemente 2 bis 7 der ausgewählten Parameter gelesen werden. Kodierung des Übergabeparameters ulParameter Parameter-Kennung 31 24 0 x x x x x x x Achsnummer [1 ... 99] 23 16 0 0 0 0 0 x 0 x 15 8 7 x x x x x x x x 0 x x x x x x x x Parameter-Nr. [1 ... 4095] Parameter-Satz [0 ... 7] 0000 0001 0010 1000 S-Parameter P-Parameter A-Parameter Y-Parameter Abb. 7-15: Parameter-Kennung (Parameterübergabe ULONG ulParameter) DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-47 DLL für Zugriffe auf SoftSERCANS Die Funktion ReadElement() Übergabeparameter: Struktur ELEMENT2_7 als Zeiger pSElemente, definiert in der Datei "SoftSERCANSdefs.h" Parametername Datentyp Bereich Beschreibung usZielElement USHORT 2..7 zu lesendes Element ulParameter ULONG Seite 7-46 selektierter Parameter und Antrieb pSElemente-> Char siehe Kapitel "Datenblockaufbau" Element 2 des Parameters siehe Kapitel "Datenblockaufbau" Element 3 des Parameters siehe Kapitel "Datenblockaufbau" Element 4 des Parameters siehe Kapitel "Datenblockaufbau" Element 5 des Parameters siehe Kapitel "Datenblockaufbau" Element 6 des Parameters siehe Kapitel "Datenblockaufbau" Element 7 des Parameters, Startadresse der Liste, wenn bListe == TRUE chName[61] pSElemente-> ULONG ulAttribut pSElemente-> Char chEinheit[13] pSElemente-> ULONG ulMinimum pSElemente-> ULONG ulMaximum pSElemente-> ULONG ulDatum wird besetzt wenn usZielelement == 2 wird besetzt wenn usZielelement == 3 wird besetzt wenn usZielelement == 4 wird besetzt wenn usZielelement == 5 wird besetzt wenn usZielelement == 6 wird besetzt wenn usZielelement == 7 pSElemente-> BOOL 0 Ø Einzelparameter, 1 Ø Liste 0, 1 bListe wird immer (unabhängig von usZielelement) besetzt Hinweis: Die Applikation muß den Speicher ELEMENT2_7 zur Verfügung stellen für die Struktur Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG Siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Mit dieser Funktion können einzelne Elemente eines Parameters gelesen werden, beim Lesen von Element 7 kann über das Flag bListe die Art des Datums ermittelt werden. 7-48 Beschreibung der DLL-Funktionen 7.8 DLL für Zugriffe auf SoftSERCANS Funktionen zum Schalten der Betriebsphasen Die Funktionen ChangeSoftSERCANSPhase und GetSoftSERCANS Phase werden zum Umschalten der Betriebsphasen benötigt, dabei sind feste Programmierabläufe einzuhalten, um ein richtiges Umschalten sicherzustellen. Flußdiagramm zur Phasenumschaltung mit DLL-Funktionen )OXGLDJUDPPPLW '//)XQNWLRQHQ =LHOSKDVHVFKUHLEHQ &KDQJH6RIW6(5&$163KDVH] 9HU]|JHUXQJZDUWHQ 3KDVHDEIUDJHQ LQ$QZHQGXQJ3ROO3KDVH] -DUHWXUQ ,1B352*5(66 1 *HW6RIW6(5&$16 3KDVHD ] 1 *HW6RIW6(5&$163KDVHD D[%LW D 1HLQ -DZDUVFKRQXPJHVFKDOWHW 3KDVHQXPVFKDOWXQJ NRUUHNWGXUFKJHIKUW UHWXUQ'21( [" -D *HW6RIW6(5&$163KDVHD ] 1HLQ D UHWXUQ ,1B352*5(66 1HLQ )HKOHUEHLGHU ] !=LHOSKDVH 6\VWHPGLDJQRVH" GZ'LDJQRVHVWDWXV D !DNWXHOOH3KDVH -D 3KDVHQXPVFKDOWXQJ IHKOHUKDIWEHHQGHW)HKOHU EHU'LDJQRVHNDQDO DXVOHVHQUHWXUQ '2B',$*126( PhasenumschaltungDLL.wmf Abb. 7-16: Flußdiagramm zur Phasenumschaltung DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-49 DLL für Zugriffe auf SoftSERCANS Die Funktion ChangeSoftSERCANSPhase() Übergabeparameter: Parametername Datentyp Bereich Beschreibung usNewPhase USHORT 0..4 neue Zielphase für SoftSERCANS Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion stellt durch Beschreiben des Parameters Y-0-0019 eine neue Zielphase ein, wartet jedoch nicht bis die eingestellte Zielphase erreicht ist. Die Funktion GetSoftSERCANSPhase() Übergabeparameter: Parametername Datentyp Bereich Beschreibung pusActPhase USHORT* 0..4 aktuelle Istphase von SoftSERCANS Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode, "SoftSERCANSdefs.h" Parameterfehler (Seite 7-66) Funktionsbeschreibung: Diese Funktion liest durch Aufruf des Parameters Y-0-0022 die aktuelle Phase ein. Hinweis: Wie diese Funktionen verwendet werden, wird im folgenden Kapitel beschrieben. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-50 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Die Funktion PollPhase() Flußdiagramm), (eigens erstellt, entspricht obigem Auszug aus dem Quellcode von SoftSERCANSTest.exe: //======================================================= // Funktion : PollPhase // In-Parameter : int iPhase // // Out-Parameter : Status oder Fehlercode Autor WR from Indramat GmbH // // : //----------------------------------------------------------------------// Funktion: /* Voraussetzung ist, das zuvor in den Parameter Y-0-0019 die gewünschte Zielphase geschrieben wurde (Zielphase ist für alle Antriebe und das System identisch) diese Funktion wird nur während der Phasenumschaltung benötigt hier wird geprüft ob die gewünschte Zielphase erreicht wurde und wie folgt verfahren: Übergabeparameter: iPhase: gewünschte Zielphase 0..4 Rückgabeparameter: Rückgabewert: IN_PROGRESS: die Zielphase ist noch nicht erreicht, die Phasenumschaltung läuft gerade Rückgabewert: DONE: die gewünschte Zielphase wurde erreicht Rückgabewert: DO_DIAGNOSE: bei der Phasenumschaltung ist ein Fehler aufgetreten, Diagnose durchführen Rückgabewert > 0: beim Zugriff auf SoftSERCANS ist ein Fehler aufgetreten, Fehler anzeigen */ //======================================================== ULONG CPhaseDlg::PollPhase(int iPhase) { ULONG ulFehlercode = 0; USHORT usActPhase = 0; // DLL da? if(m_pCSoftSERCANS==NULL) return DO_DIAGNOSE; DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-51 DLL für Zugriffe auf SoftSERCANS // aktuelle Phase prüfen if(m_pCSoftSERCANS->GetSoftSERCANSPhase(&usActPhase)==0) { // Zielphase==aktuelle Phase if(iPhase!=(int)usActPhase) { // aktuelle Phase nochmal auslesen m_pCSoftSERCANS->GetSoftSERCANSPhase(&usActPhase); // Bit 4 gesetzt? if((usActPhase&0x10)==0x10) // alles ok, nochmal aufrufen return IN_PROGRESS; else { // aktuelle Phase nochmal auslesen m_pCSoftSERCANS->GetSoftSERCANSPhase(&usActPhase); // Zielphase==aktuelle Phase if(iPhase!=(int)usActPhase) { DIAGNOSE SDiagnose; // Fehler gesetzt? ulFehlercode=m_pCSoftSERCANS->Read_Actual_Diagnosis( SYSTEM_DIAGNOSE, &SDiagnose); if(ulFehlercode>0) return ulFehlercode; // Fehler gesetzt? if(SDiagnose.dwDiagnosestatus!=0) // Fehler bei Phasenumschaltung, Diagnose // erforderlich return DO_DIAGNOSE; else return IN_PROGRESS; } } } } else // Fehler in DLL return ulFehlercode; // Phase erfolgreich umgeschalten return DONE; } DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-52 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS // diese Funktion wird in einem Timer alle 500 ms durchlaufen: ////////////////////////////////////////////////////////////////////////////////////////////////////// // Pollen der aktuellen Phase nach Vorgabeflußdiagramm : // ////////////////////////////////////////////////////////////////////////////////////////////////////// // die Funktion PollPhase durchläuft obiges Flußdiagramm: ulFehlercode = PollPhase(m_iPhase); // was ist beim Phasenumschalten passiert? switch(ulFehlercode) { // Fehler bei Phasenumschaltung: case DO_DIAGNOSE: // Statusanzeige ulFehlercode = m_pCSoftSERCANS->Read_Actual_Diagnosis( SYSTEM_DIAGNOSE, &SDiagnose); m_CSStatus.m_ulBackColor=RED; if(ulFehlercode==0) // Statusrefresh: // was war m_cstrStatus=SDiagnose.chDiagnosetext; else // Fehleranzeige m_cstrStatus.Format(IDS_DIAGNOSEFEHLER, ulFehlercode); // wann? m_cstrStatus+=GetTimeInfo(); // zeigs uns m_CSStatus.SetWindowText(m_cstrStatus); // und alles wieder wie zuvor herstellen: bFehler = TRUE; break; DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Beschreibung der DLL-Funktionen 7-53 // tuts noch (dauert!), nur Timeout prüfen: case IN_PROGRESS: m_iTimeout+=POLL_TIME; // POLL_TIME = 500 (ms) // hang up, wichtig: Timeout für Absturz berücksichtigen (t>10s) if(m_iTimeout>=TIMEOUT) { // Statusanzeige m_CSStatus.m_ulBackColor=RED; m_cstrStatus.LoadString(IDS_TIMEOUT); // wann? m_cstrStatus+=GetTimeInfo(); // zeigs uns m_CSStatus.SetWindowText(m_cstrStatus); // und über case DONE: raus, deshalb ohne break; } else break; // hurra case DONE: // Zielphase erreicht Ende ... entsprechende Aktionen ausführen /////////////////////////////////////////////// // Fehler: ausgeben: ////////////////////////////////////////////// default: ... Fehler anzeigen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P // 7-54 Beschreibung der DLL-Funktionen 7.9 DLL für Zugriffe auf SoftSERCANS Der Kommandokanal, Write_Command() Übergabeparameter: Parametername Datentyp Bereich Beschreibung Const ulDatum ULONG 1..6 Datum des auszuführenden Kommandos: CMD_SET_ENABLE(1) Ø Kommando setzen und freigeben CMD_EXECUTE(2) Ø Kommando setzen, freigeben und Bearbeitung abwarten CMD_CLEAR(3) Ø Kommando löschen CMD_ALL(4) Ø Kommando setzen, freigeben, Bearbeitung abwarten und löschen CMD_CANCEL(5) Ø Kommando abbrechen CMD_POLLING(6) Ø Kommandozustand abfragen Const usIdentnr USHORT - Identnummer des auszuführenden Kommandos PusAntriebsadresse USHORT* 1..99 usMode = 0: Adresse des ausgewählten Antriebs usMode <> 0: nicht verwendet liefert im Fehlerfall die Adresse des ersten fehlerhaften Antriebs im Ring zurück Const usMode USHORT 0,1,2,4 Adressierungsart des Kommandos: CMD_SINGLE(0) ØKommando für einen Antrieb CMD_ALL_OPER(2) Ø Kommando für alle aktive Antriebe pusQuittung USHORT* - Quittierung durch den Kommandokanal (siehe Kap. "Ablauf im Kommandokanal", Abb. 5-25) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode "SoftSERCANSdefs.h" Funktionsbeschreibung: Der Kommandokanal wird für die Abarbeitung von zeitaufwendigen Aktionen verwendet. Weiterhin können mit dem Kommandokanal alle Antriebe mit einem Kommando parametrisiert werden. Dabei sind verschiedene Arten der Kommandoausführung zulässig. Wichtig ist hier die Tatsache, daß nicht auf die Ausführung lange dauernder Kommandos gewartet werden muß. (Näheres siehe Kapitel 5.5, "Kommandokanal") Hinweis: Die Applikation muß den Speicher für die Zeiger zur Verfügung stellen und die entsprechende Variable mit dem Referenzoperator übergeben: &usVar DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-55 DLL für Zugriffe auf SoftSERCANS 7.10 Die Diagnosefunktionen Die Diagnosefunktionen unterstützen den Anwender bei der Untersuchung des Systems im Betriebs- und vorrangig im Fehlerfall. Sie teilen dem Benutzer mit, welche Aktionen zur Fehlerbeseitigung erforderlich sind. Die Funktion Read_Actual_Diagnosis() Übergabeparameter: Struktur DIAGNOSE als Zeiger pSDiagnose Parametername Datentyp Bereich Beschreibung UsAntriebsadresse USHORT 1..99 Adresse des ausgewählten Antriebs PsDiagnose-> DWORD siehe Kap. 6.1 Fehlerquelle USHORT siehe Kap. 6.1 Parameter S-0-0011 USHORT siehe Kap. 6.1 Parameter S-0-0390 USHORT siehe Kap. 6.1 Länge des Diagnosetextes char siehe Kap. 6.1 Diagnosetext S-0-0095 bzw. Y-0-0031 DwDiagnosestatus PsDiagnose-> UsZustandsklasse_1 PsDiagnose-> UsDiagnosenummer PsDiagnose-> UsDiagnose_laenge PsDiagnose-> ChDiagnosetext[60] Hinweis: Die Applikation muß den Speicher für die Struktur DIAGNOSE zur Verfügung stellen Rückgabeparameter: Parametername Datentyp Bereich Beschreibung M_ulDLL_Error ULONG siehe Datei Fehlercode "SoftSERCANSdefs.h" Funktionsbeschreibung: Diese Funktion wird bei der Systemdiagnose zyklisch abgefragt, bei einer Änderung des Wertes wird die enthaltene Information angezeigt. Bei einem Hardwarefehler (z.B. falsch eingestellte Resourcen) ist dies die einzige Funktion, auf die zugegriffen werden kann (siehe auch Kapitel "Fehlercodierung (Rückgabeparameter aller DLL-Funktionen)") DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-56 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Beispiel aus dem Quellcode von "SoftSERCANSTest.exe": void CSoftSERCANSTestDlg::OnTimer(UINT nIDEvent) { ULONG ulFehlercode = 0; // TODO: Add your message handler code here and/or call default ////////////////////////////////////////// // Diagnosehandler // ///////////////////////////////////////// switch(nIDEvent) { case 1: // prüfe zyklisch Diagnosekanal: ulFehlercode = m_gCSoftSERCANS.Read_Actual_Diagnosis(SYSTEM_DIAGNOSE, &m_SSystemdiagnose); if(ulFehlercode==0) { // neuer Status??? if(strcmp(m_cstrCompare, m_SSystemdiagnose.chDiagnosetext)!=0) { // Statusrefresh: // was war m_cstrCompare = m_SSystemdiagnose.chDiagnosetext; m_cstrDiagnose = m_cstrCompare; += GetTimeInfo(); // um m_cstrDiagnose m_CLBStatus.InsertString(-1, m_cstrDiagnose); // und erleuchten: m_CLBStatus.SetCurSel(m_CLBStatus.GetCount()-1); } } else { if(ulFehlercode!=m_ulFehlercode) { // Fehleranzeige m_cstrDiagnose.Format(IDS_DIAGNOSEFEHLER, ulFehlercode); // um m_cstrDiagnose += GetTimeInfo(); m_CLBStatus.InsertString(-1, m_cstrDiagnose); m_CLBStatus.SetCurSel(m_CLBStatus.GetCount()-1); m_ulFehlercode = ulFehlercode; } } break; DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-57 DLL für Zugriffe auf SoftSERCANS Die Funktion Get_Bad_Drives() Übergabeparameter: Parametername Datentyp Bereich Beschreibung pusNumberOfBad USHORT* 0..99 Anzahl der defekten Antriebe pusBadDrives USHORT* auf 0..99 0ØAntrieb ok, sonst Adresse des defekten Antriebs USHORT[99] Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei Fehlercode "SoftSERCANSdefs.h" Funktionsbeschreibung: Diese Funktion stellt über den Diagnosekanal fest, ob Antriebe defekt sind. Dies ist jedoch nur dann möglich, wenn der LWL-Ring geschlossen ist. Ob dies der Fall ist, wird mittels einer Systemdiagnose ermittelt. Hinweis: Der Anwender muß den Speicher für die Liste der defekten Antriebe (pusBadDrives) und usNumberOfBad allokieren: USHORT usBadDrives[MAX_DRV_NBR], usNumberOfBad; Die Funktion Clear_Error() Übergabeparameter: keine Rückgabeparameter: Fehlercode m_ulDLL_Error Funktionsbeschreibung: Diese Funktion dient zum Löschen von Fehlern, welche durch entsprechende Gegenmaßnahmen (Parametrierung etc.) zuvor beseitigt wurden. 7.11 Funktionen für die Behandlung der Echtzeitdaten Diese Funktionen können nur mit Einsatz des Echtzeitkerns von VenturCom und innerhalb der Entwicklungsumgebung von Microsoft Visual C++ ab Version 5.0 verwendet werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-58 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Überwachung der ISR-Routinen Mit diesen Funktionen werden unabhängig voneinander zwei Zähler in der Interruptroutine inkrementiert, der eine im Echtzeitkern, der andere in der Echtzeitanwendung. Diese Zähler werden von SoftSERCANS verglichen und gegebenenfalls ein Fehler gemeldet (siehe Kap. 5.2, "Zyklischer Datenaustausch"). Die Funktion Init_Lifecounter() Übergabeparameter: Parametername Datentyp Bereich Beschreibung phMonitor HANDLE* - Handle auf den Lifecounter von SoftSERCANS Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: Diese Funktion muß vor dem Start der Echtzeitdatenübertragung einmal aufgerufen werden, um die Zähler der Interruptüberwachung zu initialisieren. Hinweis: Die erlaubte Abweichung der beiden Zähler kann in Parameter Y-0-0009 eingestellt werden. Die Funktion Trigger_Lifecounter() Übergabeparameter: keine Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: Diese Funktion inkrementiert den Zähler der Echtzeitanwendung in der Interruptroutine (siehe auch Kap. "Lifecounter", Seite 5-3). Hinweis: Die Anwendung ist näher im Beispielprogramm ...\MicrosoftSamples\RTX\CyclicData erläutert. Diese Funktion muß unmittelbar nach der Funktion Sync_Cycle_Data aufgerufen werden. Die erlaubte Abweichung der beiden Zähler kann in Parameter Y-0-0009 eingestellt werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-59 DLL für Zugriffe auf SoftSERCANS Die Echtzeitfunktionen Hinweis: Diese Funktionen dürfen ausschließlich in Echtzeitanwendungen verwendet werden (Zieldatei vom Typ *.RTSS). Initialisierung der Synchronisierung auf die IRQ-Routine Init_Sync() Übergabeparameter: Parametername Datentyp Bereich Beschreibung phSync HANDLE* - Zeiger auf Variable in der das Handle stehen soll Ø Adresse des Handles für die Funktion Sync_Cycle_Data() Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: Initialisiert die Semaphore für den zyklischen Zugriff der AnwenderInterruptroutine. Synchronisierung der Echtzeitdaten auf den Interrupt Sync_Cycle_Data() Übergabeparameter: Parametername Datentyp Bereich Beschreibung hSync HANDLE - Handle für Synchronisation mit dem zyklischen Interrupt Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: Dies ist mit die wichtigste Funktion der Echtzeitfunktionen. Sie wird unmittelbar nach Auftreten des zyklischen Interrupts durchlaufen (Reaktionszeit im Bereich von 30-60 us, je nach Hardware). Hinweis: Für die Überprüfung des Lifecounters muß die Funktion Trigger_Lifecounter() unmittelbar nach dieser Funktion aufgerufen werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-60 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS Öffnung des Sollwertkanals Open_MDT_Channel() Übergabeparameter: Zeigeradresse auf die Struktur T_CYC_DATA, diese Struktur wird im Speicher von SoftSERCANS allokiert und initialisiert. Parametername Datentyp Bereich Beschreibung ppSCycleMDTData T_CYC_DATA** - Zeigeradresse der Struktur T_CYC_DATA in SoftSERCANS &ppSCycleMDTData-> USHORT 0-32 Anzahl der übertragenen Bytes des Sollwertkanals USHORT - Antriebssteuerwort usNbr_data_bytes &ppSCycleMDTData-> usControl (siehe Seite 5-11) &ppSCycleMDTData-> USHORT - usData[ Echtzeitdatenspeicher (siehe Seite 5-6) CYCLE_BUF_SIZE] pHMDTChannel HANDLE* - Handle für Synchronisation mit zyklischem Interrupt (wird für Close_MDT_Channel benötigt) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: Beispiel: Mit dieser Funktion wird der zyklische Kanal für die Sollwertvorgabe geöffnet. Über diese Funktion wird die Struktur T_CYC_DATA im Speicher von SoftSERCANS allokiert und initialisiert. Der Parameter hMDTChannel wird initialisiert. T_CYC_DATA *pSCycleMDTData; // nur Zeiger, kein Speicher HANDLE hMDTChannel; // Speicher, kein Zeiger // open the cyclic command value channel ulRet=C_Open_MDT_Channel( &pSCycleMDTData, &hMDTChannel, pSoftSERCANS); DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-61 DLL für Zugriffe auf SoftSERCANS Schließen des Sollwertkanals Close_MDT_Channel() Übergabeparameter: Parametername Datentyp Bereich Beschreibung HMDTChannel HANDLE - Handle zum MDT-Kanal (wurde von Open_MDT_ Channel übergeben) Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: diese Funktion schließt den zyklischen Kanal für die Sollwertvorgabe. Öffnung des Istwertkanals Open_AT_Channel() Übergabeparameter: Zeigeradresse auf die Struktur T_CYC_DATA, diese Struktur wird im Speicher von SoftSERCANS allokiert und initialisiert. Parametername Datentyp Bereich Beschreibung ppSCycleATData T_CYC_DATA** - Zeigeradresse der Struktur T_CYC_DATA in SoftSERCANS &ppSCycleATData-> USHORT 0-32 Anzahl der übertragenen Bytes des Istwertkanals je Achse USHORT - Antriebsstatuswort usNbr_data_bytes &ppSCycleATData-> usControl (siehe Seite 5-12) &ppSCycleATData-> USHORT - usData[ Echtzeitdatenspeicher (siehe Seite 5-7) CYCLE_BUF_SIZE] pHATChannel HANDLE* - Handle für Synchronisation mit zyklischem Interrupt Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Mit dieser Funktion wird der zyklische Kanal für die Istwerte geöffnet. Über diese Funktion wird die Struktur T_CYC_DATA im Speicher von SoftSERCANS allokiert und initialisiert. Der Parameter hATChannel wird initialisiert. 7-62 Beschreibung der DLL-Funktionen Beispiel: DLL für Zugriffe auf SoftSERCANS T_CYC_DATA *pSCycleATData; // nur Zeiger, kein Speicher HANDLE hATChannel; // Speicher, kein Zeiger // open the cyclic command value channel ulRet=C_Open_AT_Channel( &pSCycleATData, &hATChannel, pSoftSERCANS); Schließen des Istwertkanals Close_AT_Channel() Übergabeparameter: Parametername Datentyp Bereich Beschreibung hATChannel HANDLE - Handle zum AT-Kanal Rückgabeparameter: Parametername Datentyp Bereich Beschreibung m_ulDLL_Error ULONG siehe Datei "SoftSERCANSdefs.h" Fehlercode Funktionsbeschreibung: Diese Funktion schließt den zyklischen Kanal für die Istwerte. Hinweis: Diese Echzeitfunktionen sind im ...\MicrosoftSamples\RTX\CyclicData.C erklärt. Beispiel DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beschreibung der DLL-Funktionen 7-63 DLL für Zugriffe auf SoftSERCANS 7.12 Erklärung der Fehlercodierung der DLL Hier wird beschrieben, auf welche Weise die zurückgegebenen Fehlercodes analysiert werden können. Dies dient später dem Kundendienst, Fehler beim Anwender möglichst schnell und kostengünstig zu beseitigen. Die Fehlercodes sind alle vom Typ ULONG und wie folgt codiert: Hinweis: Fehlercode 0 ØSUCCESS, kein Fehler aufgetreten Fehlercodierung (Rückgabeparameter aller DLLFunktionen) 31 24 0 0 Q Q 0 0 0 P 23 16 0 0 0 0 0 G G G Fehlerpegel [0 ... 1] 0 unkritisch 1 kritisch Fehlerquelle [0 ... 2] 0 0 SoftSercans 0 1 DLL 1 0 RTX 15 8 x x x x x x x x 0 x x x x x x x x Fehler-Nr.[1..65535] Fehlergruppe [0..5] 0 0 0 Programmkontrolle (Init, Status) 0 0 1 Parameterzugriff 0 1 0 Diagnose 0 1 1 Synchronisation 1 0 0 Kommandokanal 1 0 1 Echtzeitdaten Abb. 7-17: Fehlercodierung DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7 7-64 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS In der folgenden Tabelle werden die Fehlercodes der DLL angegeben und die möglichen Ursachen des jeweiligen Fehlers erläutert: Fehlercode Fehlerquelle Ursache Lösung DLL_WRONG_REGISTRY = Start_SoftSERCANS() Registriereinträge sind falsch oder nicht vorhanden SoftSERCANS SoftSERCANSInitObject() Speicher der Klasse kann nicht allokiert werden bzw. SoftSERCANSInitObject() wurde nicht aufgerufen SoftSERCANSInit Object mindestens einmal aufrufen oder SoftSERCANS neu installieren Read_A_Name(), Read_Y_Name(), aktuelle oder maximale Länge des Namens > 60 SoftSERCANS neu installieren aktuelle oder maximale Länge der Einheit > 12 SoftSERCANS neu installieren SoftSERCANS konnte nicht gestartet werden SoftSERCANS neu installieren SoftSERCANS_State() liefert den Status 2 (fataler Fehler) zurück SoftSERCANS neu installieren SoftSERCANS_State() liefert den Status 1 (Hardwarefehler) zurück Resourcen der Einsteckkarte mit SoftSERCANSTest .exe überprüfen und neu einstellen 0x11000001 DLL_NO_CLASS = 0x11000002 DLL_NAME_TOO_LONG = 0x11000003 neu installieren Read_SP_Name() DLL_UNIT_TOO_LONG = 0x11000004 Read_A_Einheit(), Read_Y_Einheit(), Read_SP_Einheit() DLL_NO_RTSS = Start_SoftSERCANS(), 0x11000010 Terminate_SoftSERCANS() DLL_RTSS_SYSTEM_ERROR = alle DLL-Funktionen außer 0x11000011 Start_SoftSERCANS(), SoftSERCANS_State() und Terminate_SoftSERCANS() DLL_RTSS_HARDWARE_ERROR = alle DLL-Funktionen außer 0x11000012 Start_SoftSERCANS(), SoftSERCANS_State() und Terminate_SoftSERCANS() Abb. 7-18: kritische Fehler der DLL und Ursachen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Beschreibung der DLL-Funktionen 7-65 Fehlercode Fehlerquelle Ursache Lösung DLL_AXIS_RANGE = alle Funktionen mit Übergabeparameter Antriebsadresse wurde mit 0 übergeben Antriebsadresse alle Funktionen mit Übergabeparameter usIdentnr unbekannter Parametertyp (kein Y,A,S,P) Identnummer überprüfen und korrigieren Start_SoftSERCANS() SoftSERCANS wurde bereits gestartet doppelter Funktionsaufruf von Start_SoftSERCANS() alle Funktionen mit Übergabeparameter usIdentnr Identnummer wurde mit 0 übergeben Identnummer > 0 falsches Element selektiert Elementnr > 0 oder < Maximale Elemente setzen falsches Element selektiert Element von 2..7 setzen Liste enthält keine WORD/DWORDElemente Richtige Liste übergeben 0x10xx0001 usAntriebsadresse DLL_UNKNOWN_TYP = 0x10xx0002 DLL_RTSS_ACTIVE = 0x10xx0003 DLL_IDENT_RANGE = 0x01xx0004 DLL_WRONG_ELEMENT = DataToList(), ListToData() 0x10xx0005 DLL_WRONG_ELEMENT = ReadElement() 0x10xx0005 DLL_WRONG_LISTE = DataToList(), ListToData() 0x10xx0006 DLL_RTSS_INIT_ERROR = alle DLL-Funktionen außer Start_SoftSERCANS(), 0x01xx0010 SoftSERCANS_State() und Terminate_SoftSERCANS() > 0 setzen setzen SoftSERCANS_State() SoftSERCANS_State() wie beschrieben abfragen bis wurde nicht Initialisierung beendet ist mindestens einmal aufgerufen oder Initialisierung läuft gerade Abb. 7-19: unkritische Fehler der DLL und Ursachen Hinweis: Alle nicht in der Datei "SoftSERCANSdefs.h" aufgeführten Fehlercodes wurden über GetLastError() ermittelt und können in der Datei "winerror.h" (Lieferumfang von Visual C/Borland C) nachgelesen werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 7-66 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS 7.13 Fehlercodes bei der Parameterbehandlung In der folgenden Tabelle sind alle Fehlermeldungen für die nichtzyklische Parameterübertragung aufgeführt. Der Fehlercode wird im Parameter m_ulDLL_Error mit einer Länge von 2 Byte eingetragen (unteres Word) (siehe auch Kapitel "Erklärung der Fehlercodierung der DLL"). Fehlercode im Transportbehälter (1. Wort) Fehlermeldungen im NC-Servicekanal 0x00A0 Anforderung unzulässig (Phase 0-1) 0x00B0 Ausgewähltes Element unzulässig 0x00C0 Antriebsadresse unzulässig 0x1001 IDN nicht vorhanden 0x1009 falscher Zugriff auf Element 1 0x2001 Name nicht vorhanden 0x2002 Name zu kurz übertragen 0x2003 Name zu lang übertragen 0x2004 Name nicht änderbar 0x2005 Name zur Zeit schreibgeschützt 0x3002 Attribut zu kurz übertragen 0x3003 Attribut zu lang übertragen 0x3004 Attribut nicht änderbar 0x3005 Attribut zur Zeit schreibgeschützt 0x4001 Einheit nicht vorhanden 0x4002 Einheit zu kurz übertragen 0x4003 Einheit zu lang übertragen 0x4004 Einheit nicht änderbar 0x4005 Einheit zur Zeit schreibgeschützt 0x5001 minimaler Eingabewert nicht vorhanden 0x5002 minimaler Eingabewert zu kurz übertragen 0x5003 minimaler Eingabewert zu lang übertragen 0x5004 minimaler Eingabewert nicht änderbar 0x5005 minimaler Eingabewert zur Zeit schreibgeschützt 0x6001 maximaler Eingabewert nicht vorhanden 0x6002 maximaler Eingabewert zu kurz übertragen 0x6003 maximaler Eingabewert zu lang übertragen 0x6004 maximaler Eingabewert nicht änderbar 0x6005 maximaler Eingabewert zur Zeit schreibgeschützt 0x7002 Datum zu kurz übertragen 0x7003 Datum zu lang übertragen 0x7004 Datum nicht änderbar 0x7005 Datum zur Zeit schreibgeschützt 0x7006 Datum kleiner als min. Eingabewert 0x7007 Datum größer als max. Eingabewert 0x7008 Datum nicht korrekt 0x7009 Datum durch Paßwort schreibgeschützt DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Beschreibung der DLL-Funktionen 7-67 0x700C Datum außerhalb des Zahlenbereich 0x700D Länge Datum zur Zeit nicht änderbar 0x700E Länge Datum nicht änderbar 0xC002 Identnummer ist kein Kommando 0xD004 Kommando im Antrieb nicht ausführbar 0xD005 Phasenumschaltung ist noch aktiv 0xD006 Phasenumschaltung mit gesetzter Reglerfreigabe nicht möglich Abb. 7-20: Fehlercodes bei der Parameterbehandlung Diese Fehler werden bei fehlerhaften Parametern der besprochenen Funktionen in m_ulDLL_Error zurückgeliefert. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P zuvor 7-68 Beschreibung der DLL-Funktionen DLL für Zugriffe auf SoftSERCANS DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-1 DLL für Zugriffe auf SoftSERCANS 8 Parameterbeschreibung 8.1 Liste der im Antrieb vorausgesetzten Parameter IDN-Nummer Name Lesen Schreiben S-0-0267 Zwingend vorausgesetzt Passwort X X S-0-0030 Hersteller-Version X S-0-0095 Diagnose S-0-0011 Zustandsklasse 1 X S-0-0390 Diagnose Nummer X P-0-0009 Fehler-Nummer X S-0-0001 NC-Zykluszeit (TNcyc) X X X S-0-0010 Länge Master-Daten-Telegramm X X X S-0-0089 T2 Sendezeitpunkt MDT X X X S-0-0006 Sendezeitpunkt Antriebs-Telegramm (T1) X X X S-0-0015 Telegrammarten-Parameter X X X S-0-0003 Sende-Reaktionszeit AT (T1min) X X S-0-0004 Umschaltzeit Senden-Empfangen (TATMT) X X S-0-0005 Mindestzeit Istwerterfassung (T4min) X X S-0-0088 TMTSY Erholzeit Empfangen-Empfangen X X S-0-0090 TMTSG Kopierzeit Sollwerte X X S-0-0016 Konfig.-Liste Antriebs-Telegramm X X X S-0-0024 Konfig.-Liste Master-Daten-Telegramm X X X S-0-0265 Sprachumschaltung X P-0-0005 Sprachumschaltung X X X X wenn S-0-0390 nicht vorhanden ist X wenn S-0-0265 nicht vorhanden S-0-0002 SERCOS-Zykluszeit (TScyc) X X S-0-0008 Zeitpunkt für Sollwerte gültig (T3) X X S-0-0007 Messzeitpunkt Istwerte (T4) X X S-0-0009 Anfangsadresse im Master-Daten-Telegramm X X S-0-0099 C500 Reset Zustandsklasse 1 X X S-0-0127 C100 Umschaltvorbereitung auf Komm.-Phase 3 X X S-0-0128 C200 Umschaltvorbereitung auf Komm.-Phase 4 X X Abb. 8-1: Liste der im Antrieb vorausgesetzten Parameter DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 8-2 Parameterbeschreibung 8.2 DLL für Zugriffe auf SoftSERCANS Übersicht Y-Parameter Y-0-0001 Einschaltverzögerungszeit K Y-0-0002 Adressen projektierte Antriebe B Y-0-0003 Synchron-Master B Y-0-0004 SERCOS-Zykluszeit B Y-0-0005 NC-Zykluszeit B Y-0-0006 Zugriffszeitpunkt NC S Y-0-0007 LWL-Länge B Y-0-0008 Zugriffszeit SoftSERCANS S Y-0-0009 Lifecounter Differenz K Y-0-0010 Prozess ID S Y-0-0011 SoftSERCANS beenden K Y-0-0012 Kopierzeitpunkt SoftSERCANS S Y-0-0013 Verschiebung Zugriffszeitpunkt NC B Y-0-0014 Fehlerzähler SYNC K Y-0-0015 SoftSERCANS - Hardware Version S Y-0-0016 SoftSERCANS - Firmware Version S Y-0-0017 SERCOS interface - Konfiguration B Y-0-0018 SoftSERCANS Fehler löschen K Y-0-0019 SoftSERCANS - Phasenvorgabe K Y-0-0020 Systemparameter speichern K Y-0-0021 Liste der ungültigen A-/Y-Parameter S Y-0-0022 SoftSERCANS - Aktueller Modus S Y-0-0023 SoftSERCANS - Sprachumschaltung K Y-0-0024 Adressen deaktivierte Antriebe S Y-0-0025 Adressen erkannte Antriebe S Y-0-0026 Adressen betreibbare Antriebe S Y-0-0027 Liste aller Y-Parameter S Y-0-0028 Liste aller A-Parameter S Y-0-0029 SoftSERCANS - Hochlauf Zielmodus K Y-0-0030 SoftSERCANS Basisparameter laden B Y-0-0031 SoftSERCANS Systemdiagnosetext S Y-0-0032 SoftSERCANS Systemfehlernummer Abb. 8-2: Übersicht Y-Parameter 8.3 S Übersicht A-Parameter A-0-0001 Achsart B A-0-0002 Sollwertkonfigurationsliste B A-0-0003 Istwertkonfigurationsliste B A-0-0004 Sollwert Header S A-0-0005 Istwert Header S A-0-0006 Antriebsdeaktivierung B A-0-0007 Telegrammart B A-0-0008 Antriebstyp S A-0-0009 Fehlerzähler AT K Abb. 8-3: Übersicht A-Parameter DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-3 DLL für Zugriffe auf SoftSERCANS 8.4 Beschreibung Y-Parameter Y-0-0001 Einschaltverzögerungszeit Der Einschaltvorgang läßt sich um die hier eingestellte Zeit verzögern. Die Wartezeit verzögert den Einschaltvorgang um den hier eingestellten Wert. Y-0-0001 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 1 ms Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 100 ms Zugriff: Kein Schreibschutz Y-0-0002 Adressen projektierte Antriebe In dieser Liste werden alle Antriebsadressen eingetragen, die sich im SERCOS interface-Ring befinden sollen. Beim Hochfahren des SERCOS interface-Ringes wird die Übereinstimmung dieser Liste mit den tatsächlich vorhandenen Antrieben überprüft. Y-0-0002 Attribute Datenlänge: 2 Byte variable Länge (Max: 198 Byte) Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: -- Minimaler Eingabewert: 1 Maximaler Eingabewert: 40 Default-Wert: 0002 (Istlänge) 0198 (Maximale Länge) 1 (Ein Antrieb mit Adresse 1) Zugriff: Schreibgeschützt im Betriebsmodus Y-0-0003 Synchron-Master Die Kommunikation im SERCOS interface-Ring und der NC-Zyklus verlaufen synchron. Der Austausch der Echtzeitdaten über das DPR zwischen SoftSERCANS und der Steuerung muß ebenfalls synchron erfolgen. Mit dem Parameter Synchron-Master wird SoftSERCANS mitgeteilt, welche Richtung die Hardware-Synchronisation hat. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 8-4 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS 15 8 7 0 ... 0 0 0 0 0 0 0 0 0 x x 0 1 0 1 SERCANS synchronisiert die Steuerung die Steuerung synchronisiert SERCANS SERCANS synchronisiert jeden SERCOS-Zyklus (Y-0-0004) SERCANS sychronisiert jeden NY-Zyklus (Y-0-0005) Abb. 8-4: Bitleiste Y-0-0003 Y-0-0003 Attribute Datenlänge: 2 Byte Anzeigeformat: Binärzahl Wichtung / Einheit: 1 Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0 Zugriff: Schreibgeschützt im Betriebsmodus Y-0-0004 SERCOS-Zykluszeit Die Zykluszeit der Schnittstelle besagt, in welchen Zeitabständen die Zyklischen Daten übertragen werden. SoftSERCANS unterstützt folgende Zykluszeiten: 500µs, 750µs, 1ms, ... bis 32ms in Schritten von 0,25ms. SoftSERCANS überträgt diesen Parameter in der Kommunikationsphase 2 an alle vorhandenen Antriebe. Dieser Parameter muß min. auf den größten Minimalwert von S-0-0002 aller betriebenen Achsen gesetzt werden. Y-0-0004 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 1 µs Minimaler Eingabewert: 500 Maximaler Eingabewert: 32000 Default-Wert: 2000 Zugriff: Schreibgeschützt im Betriebsmodus Y-0-0005 NC-Zykluszeit Die NC-Zykluszeit sagt aus, in welchen zyklischen Zeitabständen die NC neue Sollwerte zur Verfügung stellt. Die NC-Zykluszeit muß ein ganzzahliges Vielfaches der SERCOSZykluszeit sein. tNcyc = tScyc x j (j = 1, 2, 3 ...15) SoftSERCANS überträgt diesen Parameter in der Kommunikationsphase 2 an alle vorhandenen Antriebe. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-5 DLL für Zugriffe auf SoftSERCANS Y-0-0005 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 1 µs Minimaler Eingabewert: 500 Maximaler Eingabewert: 32000 Default-Wert: 2000 Zugriff: Schreibgeschützt im Betriebsmodus Y-0-0006 Zugriffszeitpunkt NC Mit diesem Parameter teilt SoftSERCANS den Zugriffszeitpunkt der NC innerhalb eines SERCOS interface Zyklus mit. Achtung: Dieser Zeitpunkt darf nicht innerhalb des Zeitraumes Y-0-0012 plus Y-0-0008 liegen. ! Zugriffskonflikt ! Der Wert dieses Parameters ergibt sich aus der "Verschiebung Zugriffszeitpunkt NC" (Y-0-0013). (siehe "Timing der zyklischen Daten", Seite 5-2) Y-0-0006 Attribute Datenlänge: 4 Byte Anzeigeformat: Dez. Zahl ohne Vorzeichen Wichtung / Einheit: 1 µs Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: — Zugriff: Schreibgeschützt Y-0-0007 LWL-Länge Mit diesem Parameter wird die Sendeleistung von SoftSERCANS an die Länge des Lichtwellenleiters angepaßt. Die angegebene Länge bezieht sich auf den Lichtwellenleiter von LWLTX zum ersten Antrieb. Hinweis: Im Regelfall genügt es, die LWL-Länge unabhängig von der tatsächlichen Länge des Lichtwellenleiters mit dem DefaultWert 0,2 m zu beschreiben. Hinweis: Dieser Parameter läßt sich im Parametriermodus ändern. Er wird jedoch erst nach dem nächsten Hochschalten von Phase 0 nach 1 wirksam. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 8-6 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS Y-0-0007 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 10 m Minimaler Eingabewert: 0,1 m Maximaler Eingabewert: 50,0 m Default-Wert: 0,2 m Zugriff: Schreibgeschützt im Betriebsmodus -1 Y-0-0008 Zugriffszeit SoftSERCANS Die Kopierzeit, die SoftSERCANS benötigt, um die konfigurierten Sollund Istwerte aller Antriebe vom internen Speicher ins MDT bzw. AT zu übertragen, wird hier abgespeichert. (siehe Y-0-0012 und "Timing der zyklischen Daten", Seite 5-2). Y-0-0008 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 1 µs Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: -- Zugriff: Schreibgeschützt Y-0-0009 Lifecounter Differenz In diesen Parameter wird die Differenz die maximal zwischen dem "Lifecounter SoftSERCANS" und dem "Lifecounter NC" auftreten darf programmiert. Ist die Differenz in der Phase 4 größer als die hier programmierte, so schaltet SoftSERCANS in die Phase 0 und generiert einen Systemfehler. Mit dieser Funktion können sich die Steuerung und SoftSERCANS gegenseitig überwachen. Ist in der "Lifecounter Differenz" der Wert 0 programmiert, so ist die Überwachung auf SoftSERCANS abgeschaltet. (siehe "Lifecounter", Seite 5-3). Y-0-0009 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 1 (NC-Zyklus) Minimaler Eingabewert: 0 Maximaler Eingabewert: 65535 Default-Wert: 0 Zugriff: Kein Schreibschutz DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-7 DLL für Zugriffe auf SoftSERCANS Y-0-0010 Prozess ID In diesen Parameter SoftSERCANS belegt. wird die Slot-IDNummer abgelegt, die Y-0-0010 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 1 Minimaler Eingabewert: 0 Maximaler Eingabewert: 65535 Default-Wert: 0 Zugriff: Schreibgeschützt Y-0-0011 SoftSERCANS beenden Dieser Parameter dient nur zu internen Zwecken! Y-0-0011 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 1 Minimaler Eingabewert: 0 Maximaler Eingabewert: 65535 Default-Wert: 0 Zugriff: Kein Schreibschutz Y-0-0012 Kopierzeitpunkt SoftSERCANS Mit diesem Parameter teilt SoftSERCANS den Kopierzeitpunkt der Sollwerte und Istwerte innerhalb eines SERCOS interface Zyklus mit. Der Wert dieses Parameters wird von SoftSERCANS errechnet. (siehe "Timing der zyklischen Daten", Seite 5-2) Y-0-0012 Attribute DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Datenlänge: 4 Byte Anzeigeformat: Dez. Zahl ohne Vorzeichen Wichtung / Einheit: 1µs Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: — Zugriff: Schreibgeschützt 8-8 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS Y-0-0013 Verschiebung Zugriffszeitpunkt NC In diesem Parameter kann die Steuerung eine relative Verschiebung zum Sendezeitpunkt MDT (S-0-0089) eintragen. ATn Zugriff SoftSERCANS MST AT1 AT2 Zugriff NC MDT MST S-0-0006 Y-0-0012 Y-0-0008 Y-0-0006 Y-0-0013* S-0-0089 S-0-0008 Y-0-0004 * Y-0-0005 * Y-0-0013 Attribute Datenlänge: 4 Byte Anzeigeformat: Dez. Zahl ohne Vorzeichen Wichtung / Einheit: 1µs Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: 150µs Zugriff: Schreibgeschützt im Betriebsmodus Y-0-0014 Fehlerzähler SYNC SoftSERCANS überprüft in der Phase 4 einmal pro SERCOS interfaceZyklus den Jitter des zyklischen Interrupts. Damit ist sichergestellt daß SoftSERCANS die zyklischen Daten ohne Konflikt auslesen kann. Hinweis: Sollte sich in diesem Parameter ein Wert ungleich Null befinden, so sollte die Einstellung des zyklischen Telegramms hinsichtlich des PC typischen Jitters noch einmal überdacht werden (siehe "Timing der zyklischen Daten", Seite 5-2). Der Fehlerzähler muß von der Bedienoberfläche oder von der Steuerung gelöscht werden, bevor ein Test erfolgt. Y-0-0014 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: 1 Minimaler Eingabewert: 0 Maximaler Eingabewert: 65535 Default-Wert: 0 Zugriff: Kein Schreibschutz DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-9 DLL für Zugriffe auf SoftSERCANS Y-0-0015 SoftSERCANS - Hardware-Version Über diesen Parameter kann die Hardware-Version der Leiterkarte ausgelesen werden. Leiterkarte Hardware-Version Automata 1.0 Serceb 1.0 Abb. 8-5: Hardware-Version Die Bezugsadressen sind in Kapitel 2, "Installation der Hardware" ersichtlich. Y-0-0015 Attribute Datenlänge: 1 Byte var. Länge (max: 10 Byte) Anzeigeformat: Text Wichtung / Einheit: — Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: — Zugriff: Schreibgeschützt Y-0-0016 SoftSERCANS - Firmware-Version Über diesen Parameter kann die Firmware-Version ausgelesen werden. Für alle Hardware-Versionen ist die Firmware identisch. Die Firmware-Version sieht folgendermaßen aus: Beispiel: SoftSERCANS01V01 Y-0-0016 Attribute Datenlänge: 1 Byte var. Länge (max: 16 Byte) Anzeigeformat: Text Wichtung / Einheit: — Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: — Zugriff: Schreibgeschützt Y-0-0017 SERCOS interface - Konfiguration Dieser Parameter gibt die Konfiguration der SERCOS interface Übertragung an. Hinweis: Dieser Parameter läßt sich im Parametriermodus ändern. Er wird jedoch erst beim nächstmaligen Erreichen des Initialisierungsmodus wirksam. Die Testmodi werden beim Umschalten in den Initialisierungsmodus wirksam. Sie werden nicht gepuffert, d. h. beim Starten von DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 8-10 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS SoftSERCANS stellt sich in den Bits 8 und 9 immer der Normalbetrieb ein. 15 8 0 ... x x 7 0 0 0 0 0 0 0 0 x 0 1 00 01 10 11 2 MBit / s 4 MBit / s Normalbetrieb Testmodus Nullbitstrom (nur für Testzwecke) Testmodus Dauerlicht (nur für Testzwecke) Testmodus Dauerlicht aus (nur für Testzwecke) Abb. 8-6: Bitleiste Y-0-0017 Zulässige Kombinationen (Hexadezimal-Darstellung): 0x0000 2 MBit / s 0x0001 4 MBit / s Y-0-0017 Attribute Datenlänge: 2 Byte Anzeigeformat: Binärzahl Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0000000000000000 Zugriff: Schreibgeschützt im Betriebsmodus Y-0-0018 SoftSERCANS Fehler löschen Ein Schreibzugriff mit dem Wert 3 auf diesen Parameter löscht den aktuellen Fehler aus dem SoftSERCANS Diagnosesystem. Wurde vor dem erstmaligen Erreichen des "SoftSERCANS - Hochlauf Zielmodus" (Y-0-0029) ein Fehler diagnostiziert, so versucht SoftSERCANS erneut die Zielphase Y-0-0029 zu erreichen. Y-0-0018 Attribute Datenlänge: 2 Byte Anzeigeformat: Binär Wichtung / Einheit: 1 Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0 Zugriff: Kein Schreibschutz DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-11 DLL für Zugriffe auf SoftSERCANS Y-0-0019 SoftSERCANS - Phasenvorgabe Über diesen Parameter lässt sich die aktuelle SERCOS interface Phase verändern. (siehe Kap. "Funktionen zum Schalten der Betriebsphasen", Seite 7-48) Y-0-0019 Attribute Datenlänge: 2 Byte Anzeigeformat: Dezimal Wichtung / Einheit: 1 Minimaler Eingabewert: 0 Maximaler Eingabewert: 4 Default-Wert: 0 Zugriff: Kein Schreibschutz Y-0-0020 Systemparameter speichern Ein Schreibzugriff mit dem Wert 3 auf diesen Parameter speichert die aktuellen A und Y – Parameter ab. Diese Sicherung wird beim nächsten Start von SoftSERCANS als Parametersatz verwendet. Achtung: Bis zum Ausführen dieses Schreibvorgangs werden die A und Y Parameter nicht gespeichert. Die geänderten Parameter werden auch beim Beenden von SoftSERCANS gespeichert! Y-0-0020 Attribute Datenlänge: 2 Byte Anzeigeformat: Binärzahl Wichtung / Einheit: 1 Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0 Zugriff: Kein Schreibschutz Y-0-0021 Liste der ungültigen A-/Y-Parameter In dieser Liste stehen die ungültigen A- oder Y- Parameter, welche • beim Prüfsummentest von SoftSERCANS (z. B. nach Erststart) • beim Plausibilitätstest von SoftSERCANS erkannt werden. Im Fall eines ungültigen A-Parameters steht im höchstwertigen Byte die Adresse des Antriebes. Bei einem Y-Parameter steht hier 0. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 8-12 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS Achsunabhängige Parameter (A-Parameter) SCS: Y-0-nnnn Parameternummer (mit führenden Nullen) Achsabhängige Parameter (A-, S- und P-Parameter) Axx: A-0-zzzz Parameternummer (mit führenden Nullen) Parametertyp (A-, S- oder P-Parameter) Antriebsadresse (mit führender Null) Abb. 8-7: Parameteraufbau Beispiele: A15: A-0-0003 Antriebsadresse 15, Parameter A-0-0003 SCS: Y-0-0011 Parameter Y-0-0011 Es werden maximal 200 ungültige Parameter in dieser Liste gespeichert. Sind mehr ungültige Parameter auf SoftSERCANS, so werden die überzähligen nicht angezeigt. Y-0-0021 Attribute Datenlänge: 4 Byte variable Länge (Max: 800 Byte) Anzeigeformat: SoftSERCANS - Identnummer Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0000 (Istlänge) 0800 (Maximale Länge) Zugriff: Schreibgeschützt Y-0-0022 SoftSERCANS - Aktueller Modus Dieser Parameter enthält den aktuellen Modus von SoftSERCANS: 0: "SoftSERCANS in Initialisierungmodus" 1: "SERCOS Phase 1" 2: "SoftSERCANS in Parametriermodus" 3: "SERCOS Phase 3" 4: "SoftSERCANS in Betriebsmodus" Das Bit 4 zeigt einen evtl. bereits laufenden Umschaltvorgang an. Y-0-0022 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0 Zugriff: Schreibgeschützt DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-13 DLL für Zugriffe auf SoftSERCANS Y-0-0023 SoftSERCANS - Sprachumschaltung Momentan unterstützte Sprachen sind: Eingabewert Sprache 0 Deutsch 1 Englisch Y-0-0023 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: -- Minimaler Eingabewert: 0 Maximaler Eingabewert: 1 Default-Wert: 0 Zugriff: Kein Schreibschutz Y-0-0024 Adressen deaktivierte Antriebe Diese Liste enthält diejenigen Antriebsadressen, die vorübergehend außer Betrieb genommen werden (siehe A-0-0006). Diese Adressen müssen in den Parameter "Adressen projektierte Antriebe" (Y-0-0002) enthalten sein. Ist ein Antrieb deaktiviert, so ist es unerheblich, ob er im LWL-Ring physikalisch vorhanden ist, oder nicht. Hinweis: Sofern ein deaktivierter Antrieb im LWL-Ring belassen wird, zeigt sein Display die Meldung E4/10 "Slave nicht gescannt oder Adresse 0". (siehe auch Y-0-0002, Y-0-0025, Y-0-0026) Y-0-0024 Attribute DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Datenlänge: 2 Byte variable Länge (Max: 198 Byte) Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: -- Minimaler Eingabewert: 1 Maximaler Eingabewert: 40 Default-Wert: 0000 (Istlänge) 0198 (Maximale Länge) Zugriff: Schreibgeschützt 8-14 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS Y-0-0025 Adressen erkannte Antriebe Beim Umschalten vom Initialisierungsmodus in den Parametriermodus durchsucht SoftSERCANS den LWL-Ring nach Antrieben. Die Antriebsadressen der Antriebe, die SoftSERCANS erkannt hat, werden zu Diagnosezwecken in dieser Liste abgelegt. (siehe auch Y-0-0002, Y-0-0024, Y-0-0026) Y-0-0025 Attribute Datenlänge: 2 Byte variable Länge (Max: 198 Byte) Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: -- Minimaler Eingabewert: 1 Maximaler Eingabewert: 40 Default-Wert: 0000 (Istlänge) 0198 (Maximale Länge) Zugriff: Schreibgeschützt Y-0-0026 Adressen betreibbare Antriebe Diese Liste enthält die Antriebsadressen, die von SoftSERCANS betrieben werden. Ist z. B. ein Antrieb mittels "Antriebsdeaktivierung" (A-0-0006) deaktiviert, so wird er von SoftSERCANS nicht betrieben. Die Liste aller deaktivierten Antriebe ist in Y-0-0024 auslesbar. Es gilt: " Adressen projektier te Antriebe" (Y - 0 - 0002) abzüglich " Adressen deaktivier te Antriebe (Y - 0 - 0024) ergibt Adressen betreibbar e Antriebe (Y - 0 - 0026) Abb. 8-8: Formel Y-0-0026 Dieser Parameter dient zur Diagnose. (siehe auch Y-0-0025) Y-0-0026 Attribute Datenlänge: 2 Byte variable Länge (Max: 198 Byte) Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: -- Minimaler Eingabewert: 1 Maximaler Eingabewert: 40 Default-Wert: 0000 (Istlänge) 0198 (Maximale Länge) Zugriff: Schreibgeschützt DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-15 DLL für Zugriffe auf SoftSERCANS Y-0-0027 Liste aller Y-Parameter In dieser Liste stehen alle Y-Parameter. Die Einträge sind nach Bedeutung und Zusammengehörigkeit sortiert, aber weder nach Ident-Nummern, noch nach alphabetischer Reihenfolge. In der Reihenfolge dieser Einträge werden Y-Parameter abgespeichert. Beispiel: SCS: Y-0-0024 SCS: Y-0-0002 SCS: Y-0-0013 ... Y-0-0027 Attribute Datenlänge: 4 Byte variable Länge (Max: 1024 Byte) Anzeigeformat: SoftSERCANS – Identnummer Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: -- Zugriff: Schreibgeschützt Y-0-0028 Liste aller A-Parameter In dieser Liste stehen alle A-Parameter. Die Einträge sind nach Bedeutung und Zusammengehörigkeit sortiert, also weder nach Ident-Nummern, noch nach alphabetischer Reihenfolge. In der Reihenfolge dieser Einträge werden A-Parameter abgespeichert. Beispiel: A00: A-0-0001 A00: A-0-0002 ... Y-0-0028 Attribute DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Datenlänge: 4 Byte variable Länge (Max: 1024 Byte) Anzeigeformat: SoftSERCANS – Identnummer Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: -- Zugriff: Schreibgeschützt 8-16 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS Y-0-0029 SoftSERCANS - Hochlauf Zielmodus Nach dem Starten von SoftSERCANS wird einen Hochlauf bis zu einem vordefinierten Modus durch. Mit diesem Parameter wird dieser Modus festgelegt. 4: Betriebsmodus Zyklische Datenübertragung 2: Parametriermodus Beschreiben aller im Betriebsmodus schreibgeschützten Parameter möglich) 0: Initialisierungsmodus (keine Verbindung zu den Antrieben Beschreiben von Y- und A-Parametern möglich. Beschreiben von S- und PParametern nicht möglich) Ein Schreibzugriff Umschaltvorgang. mit der gewünschten Zielphase bewirkt ein Achtung: Dieser Parameter wird durch die DLL Funktion C_ChangeSoftSERCANSPhasePhase() ebenfalls verändert ! Y-0-0029 Attribute Datenlänge: 2 Byte Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 4 Zugriff: Kein Schreibschutz Y-0-0030 SoftSERCANS Basisparameter laden Ein Schreibzugriff mit dem Wert 3 auf diesen Parameter setzt die DefaultWerte aller A und Y-Parameter. Hinweis: Die Default Werte müssen ebenfalls mit "Systemparameter speichern" (Y-0-0020) gesichert werden. Y-0-0030 Attribute Datenlänge: 2 Byte Anzeigeformat: Binärzahl Wichtung / Einheit: -- Minimaler Eingabewert: 0 Maximaler Eingabewert: -- Default-Wert: 0 Zugriff: Schreibgeschützt im Betriebsmodus DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-17 DLL für Zugriffe auf SoftSERCANS Y-0-0031 SoftSERCANS Systemdiagnosetext Über diesen Parameter kann die Systemdiagnose im Klartext ausgelesen werden. Y-0-0030 Attribute Datenlänge: 1 Byte var. Länge (max: 64 Byte) Anzeigeformat: Text Wichtung / Einheit: — Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: — Zugriff: Schreibgeschützt Y-0-0032 SoftSERCANS Systemfehlernummer Über diesen Parameter kann die Systemfehlernummer ausgelesen werden. Y-0-0032 Attribute DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Datenlänge: 2 Bytes Anzeigeformat: Dez.-Zahl ohne Vorzeichen Wichtung / Einheit: — Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: — Zugriff: Schreibgeschützt 8-18 Parameterbeschreibung 8.5 DLL für Zugriffe auf SoftSERCANS Beschreibung A-Parameter A-0-0001 Achsart Dieser Parameter wird momentan nicht unterstützt. A-0-0001 Attribute Datenlänge: 2 Byte Anzeigeformat: Hexadezimal Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0 Zugriff: Schreibgeschützt im Betriebsmodus A-0-0002 Sollwertkonfigurationsliste In diese Liste müssen die Identnummern aufeinanderfolgend eingetragen werden. Die Reihenfolge der Identnummern legt die Reihenfolge der Sollwerte im Sollwertkanal der entsprechenden Achsstruktur fest. Die konfigurierten Sollwerte werden zyklisch von der Steuerung an die Antriebe übertragen. Es können maximal acht Sollwerte pro Antrieb konfiguriert werden. IDN: Sollwert 8 IDN: Sollwert 2 IDN: Sollwert 1 Abb. 8-9: Aufbau Sollwertkonfigurationsliste A-0-0002 Attribute Datenlänge: 2 Byte var. Länge (Max: 16 Byte) Anzeigeformat: Identnummern Wichtung / Einheit: — Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: 0004 (Istlänge) 0016 (Maximale Länge) 1. Wert: S-0-0036 2. Wert: S-0-0047 Zugriff: Schreibgeschützt im Betriebsmodus DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-19 DLL für Zugriffe auf SoftSERCANS A-0-0003 Istwertkonfigurationsliste In diese Liste müssen die Identnummern aufeinanderfolgend eingetragen werden. Die Reihenfolge der Identnummern legt die Reihenfolge der Istwerte im Istwertkanal der entsprechenden Achsstruktur fest. Die konfigurierten Istwerte werden zyklisch von den Antrieben an die Steuerung übertragen. Es können maximal acht Istwerte pro Antrieb konfiguriert werden. IDN: Istwert 8 IDN: Istwert 2 IDN: Istwert 1 Abb. 8-10: Aufbau Istwertkonfigurationsliste A-0-0003 Attribute Datenlänge: 2 Byte var. Länge (Max: 16 Byte) Anzeigeformat: Identnummern Wichtung / Einheit: — Minimaler Eingabewert: — Maximaler Eingabewert: — Default-Wert: 0004 (Istlänge) 0016 (Maximale Länge) 1. Wert: S-0-0040 2. Wert: S-0-0051 Zugriff: Schreibgeschützt im Betriebsmodus A-0-0004 Sollwert Header In diesem Parameter wird für die entsprechende Achse der Sollwert Header entsprechend berechnet. Dieser Parameter ist ab Phase 3 gültig. Siehe Kap. "Konfiguration des Sollwertkanals", Seite 5-5. A-0-0004 Attribute DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Datenlänge: 2 Byte Anzeigeformat: Hexadezimal Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0 Zugriff: Schreibgeschützt 8-20 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS A-0-0005 Istwert Header In diesem Parameter wird für die entsprechende Achse der Istwert Header entsprechend berechnet. Dieser Parameter ist ab Phase 3 gültig. Siehe Kap. "Konfiguration des Istwertkanals", Seite 5-5. A-0-0005 Attribute Datenlänge: 2 Byte Anzeigeformat: Hexadezimal Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 0 Zugriff: Schreibgeschützt A-0-0006 Antriebsdeaktivierung Mit diesem Parameter werden Antriebe deaktiviert. ‚...0000‘ = Antrieb aktiviert ‚...0001‘ = Antrieb deaktiviert Die aktuelle Liste aller deaktivierten Antriebe kann im Parameter "Adressen deaktivierte Antriebe" (Y-0-0024) ausgelesen werden. A-0-0006 Attribute Datenlänge: 2 Byte Anzeigeformat: Binärzahl Wichtung / Einheit: -- Minimaler Eingabewert: 0000.0000 Maximaler Eingabewert: 0000.0001 Default-Wert: 0 Zugriff: Schreibgeschützt im Betriebsmodus A-0-0007 Telegrammart In diesem Parameter kann zwischen Vorzugstelegrammen (Eingabe 0-6) und frei konfigurierbaren Telegrammen (Eingabe 7) gewählt werden. Die Konfiguration der Echtzeitdaten (Telegramme) wird in Kap. "Austausch der Echtzeitdaten", Seite 5-4 erläutert. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Parameterbeschreibung 8-21 DLL für Zugriffe auf SoftSERCANS Mögliche Eingaben sind: 8 7 15 0 ... 0 0 0 0 0 0 x x x x 0 0 0 x x x 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 - Vorzugstelegramm 0 1 - Vorzugstelegramm 1 0 - Vorzugstelegramm 2 1 - Vorzugstelegramm 3 0 - Vorzugstelegramm 4 1 - Vorzugstelegramm 5 0 - Vorzugstelegramm 6 1 - Frei konfigurierbares Telegramm 7 0 Lageistwert-1 S-0-0051 (Motorgeber) 1 Lageistwert-2 S-0-0053 (ext. Geber) Abb. 8-11: Aufbau eines Elementes A-0-0007 Attribute Datenlänge: 2 Byte Anzeigeformat: Binärzahl Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: 7 Zugriff: Schreibgeschützt im Betriebsmodus A-0-0008 Antriebstyp Beim Umschalten in den Parametriermodus überprüft SoftSERCANS, welcher Typ Antriebe angeschlossen ist. Mögliche Einträge sind • "Antrieb nicht im Ring" • "Unbekannter Antriebstyp" • "DIAX03" • "DIAX04" • "ECODRIVE" A-0-0008 Attribute DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Datenlänge: 1 Byte variable Länge(Max. 40 Byte) Anzeigeformat: ASCII - Text Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: -- Zugriff: Schreibgeschützt 8-22 Parameterbeschreibung DLL für Zugriffe auf SoftSERCANS A-0-0009 Fehlerzähler AT Dieser Parameter zählt alle einfachen, Kommunikationsphasen 3 und 4. ungültigen ATs in den Fallen zwei aufeinanderfolgende ATs eines Antriebes aus, wird der Fehler "Doppelter Antriebstelegrammausfall" erzeugt. Der "Fehlerzähler AT" zählt nur bis 65535 und bleibt dann stehen. Dieser Wert wird nur bei einer stark gestörten Übertragung nach langer Zeit erreicht. Um den Zähler zurückzusetzen, kann er beschrieben werden A-0-0009 Attribute Datenlänge: 2 Byte Anzeigeformat: Dezimal ohne Vorzeichen Wichtung / Einheit: -- Minimaler Eingabewert: -- Maximaler Eingabewert: -- Default-Wert: -- Zugriff: Kein Schreibschutz DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Inbetriebnahmehilfsmittel 9-1 DLL für Zugriffe auf SoftSERCANS 9 Inbetriebnahmehilfsmittel 9.1 Allgemeines zu DriveTop DriveTop ist die komfortable Inbetriebnahmeoberfläche unter MSWindows für SoftSERCANS und SERCOS interface-Antriebe. DriveTop bietet folgende Funktionalitäten: • Parametrierung und Inbetriebnahme von jedem Gerät, das die internationale, offene Norm IEC 61491 von SERCOS interface erfüllt. • Gezielte Inbetriebnahmeführung SoftSERCANS-Software der Einstellungen auf der • Bequemes Handling der SERCOS interface-Funktionalitäten, wie z.B. Phasenumschaltung, Konfiguration der zyklischen Echtzeitdaten und Urladen. • Funktionsbezogene Inbetriebnahmeführung Antriebsfirmwaren FWA-DIAX03-AHS-03VRS-MS, FWA-DIAX04-AHS-03VRS-MS, FWA-DIAX03-ASE-02VRS-MS, FWA-DIAX04-ASE-02VRS-MS, FWA-DIAX03-ATE-01VRS-MS, FWA-DIAX04-ATE-01VRS-MS, FWA-DIAX03-ELS-04VRS-MS, FWA-DIAX03-ELS-05VRS-MS, FWA-DIAX04-ELS-05VRS-MS, FWA-DIAX03-SSE-01VRS-MS, FWA-DIAX03-SSE-02VRS-MS, FWA-DIAX03-SSE-03VRS-MS, FWA-DIAX04-SSE-01VRS-MS, FWA-DIAX04-SSE-02VRS-MS, FWA-DIAX04-SSE-03VRS-MS, FWA-DIAX03-SHS-02VRS-MS, FWA-DIAX03-SHS-03VRS-MS, FWA-DIAX04-SHS-02VRS-MS, FWA-DIAX04-SHS-03VRS-MS, FWA-DIAX03-STE-01VRS-MS, FWA-DIAX04-STE-01VRS-MS, für Antriebe der FWA-ECODRV-SSE-02VRS-MS, FWA-ECODRV-SSE-03VRS-MS, FWA-ECODR3-FGP-01VRS-MS, FWA-ECODR3-FGP-02VRS-MS, FWA-ECODR3-SGP-01VRS-MS, FWA-ECODR3-SMT-01VRS-MS, FWA-SoftSERCANS-01VRS-MS • Parametersätze selektiv laden und speichern • Diverse Diagnosemöglichkeiten auf verschiedenen Ebenen - für SoftSERCANS oder speziell für einen ausgewählten Antrieb. • Kontext-sensitives Hilfesystem (Ctrl-F1) im Zusammenhang mit den Hilfen der Antriebsfirmwaren von Indramat und der Hilfe zu SoftSERCANS • Dialoge zur Oszilloskopfunktion mit Zeit- und Frequenzdiagramm DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 9-2 Inbetriebnahmehilfsmittel 9.2 DLL für Zugriffe auf SoftSERCANS Systemvoraussetzungen DriveTop ist lauffähig unter dem Betriebssystem Windows NT und stellt folgende Hardware-Anforderungen an den eingesetzten PC: • 80486-Prozessor oder schneller • mindestens 16 MB Hauptspeicher • mindestens 25 MB freier Festplattenspeicher 9.3 Installation von DriveTop Softwareinstallation von DriveTop DriveTop wird auf einer CDROM ausgeliefert. Zur Installation von DriveTop führen Sie bitte die folgenden Schritte aus: • Diese Dokumentation komplett lesen. • PC einschalten und Windows starten. • DriveTop CDROM in CD-Laufwerk einlegen. • Im Menüpunkt "Datei“ den Befehl "Ausführen...“ auswählen. Hinweis: Soll DriveTop auf einem PC installiert werden, auf dem eine ältere Version von DriveTop bereits installiert ist, bleibt diese erhalten. Das durch das Installationsprogramm vorgeschlagene Verzeichnis enthält die Versionsnummer. Ebenso das Icon der Programmgruppe. Soll eine ältere Version von DriveTop von der Festplatte entfernt werden, muß unter Einstellungen\Systemsteuerung\ Software "DriveTop" entfernt werden. • Im Eingabefeld "Befehlszeile:“ D:\SETUP eingeben. (wenn DriveTopCD-ROM in Laufwerk D: liegt.) • Im weiteren den Anweisungen des Installationsprogramms folgen. Nach erfolgreicher Installation finden Sie die neue Programmgruppe INDRAMAT auf Ihrem PC. Innerhalb dieser Gruppe befindet sich das DriveTop-Programmsymbol. DriveTop starten Voraussetzungen: DriveTop und SoftSERCANS wurden erfolgreich installiert. Starten Sie DriveTop. DriveTop wird gestartet und versucht einen Verbindungsaufbau mit SoftSERCANS herzustellen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Inbetriebnahmehilfsmittel 9-3 DLL für Zugriffe auf SoftSERCANS DriveTop kann parallel zu allen anderen Applikationen betrieben werden. Wählen Sie aus dem SoftSERCANS" aus. unten abgebildeten Dialog "Online über driveTopWahl.bmp Abb. 9-1: Verbindungsauswahl 9.4 Funktionen Menü Datei Im Menü Datei befinden sich die Untermenüs Laden und Speichern. Untermenü Laden Parameter können aus einer Datei in die Antriebe oder in die SoftSERCANS-Software geladen werden. Untermenü Speichern Die S/P-Parameter in den Antrieben und die Y-/A-Parameter von SoftSERCANS werden in einer Datei gesichert. Menü Parameter Im Menü Parameter befinden sich die Dialogfenster, die bei einer Inbetriebnahme durchlaufen werden, sowie die Dialogfenster für Einzelparameter und die Listen aller S-, P-, Y- und A-Parameter. Liste aller S-, P-, Y- und A-Parameter Die S/P-Parameter des ausgewählten Antriebs und Y-/A-Parameter werden mit Name, Betriebsdatum und Einheit aufgelistet. Der Anwender kann nach Identnummern oder alphabetisch sortieren, nach Identnummern oder Text suchen und Parameter ändern. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 9-4 Inbetriebnahmehilfsmittel DLL für Zugriffe auf SoftSERCANS Liste aller ungültigen Parameter Die ungültigen Parameter von SoftSERCANS oder des ausgewählten Antriebs werden mit Name, Betriebsdatum und Einheit aufgelistet. Der Anwender kann nach Identnummern oder alphabetisch sortieren, nach Identnummern oder Text suchen und Parameter ändern. Einzelparameter Ein Parameter einer ausgewählten Antriebsadresse wird mit Name, Betriebsdatum, Min/Maxwert und Einheit aufgelistet. Der Anwender kann nach Identnummern oder alphabetisch sortieren, nach Identnummern oder Text suchen und Identnummern ändern. Menü Inbetriebnahme Im Menü Inbetriebnahme befinden sich die Menüpunkte SoftSERCANSGrundkonfiguration bzw. Parameterfestlegung. Werden sie aufgerufen, durchläuft der Anwender eine Abfolge von Dialogfenstern zum Parametrieren achsübergreifender Y-Parameter bzw. Achsparameter (A-, S-, P-Parameter). Menü Ansicht Im Menü Ansicht wird der im Hintergrund gezeigte Diagnosebildschirm gewechselt zwischen dem Anlagenstatus, dem Antriebsstatus eines im Anlagenstatus selektierten Antriebs und einer vom Anwender konfigurierbaren Parametergruppe. Menü Extras Im Menü befinden sich Menüpunkte zu Phasenumschaltung ("Parametriermodus“, "Betriebsmodus“, "Phasenumschaltung“), der Menüpunkt „Antriebsdiagnose“ mit den Untermenüs der internen Eingänge und Ausgänge sowie Dialogfenster für zusätzliche Diagnoseund Inbetriebnahme-Tools wie z.B. "Analogausgabe“, "Oszilloskop“. Menü Optionen Im Menü Optionen befinden sich die Menüpunkte "Verbindung“ zum Umschalten Online-Offline und "Sprache“ zum Umschalten Deutsch oder Englisch. Menü Hilfe Beim Herunterklappen dieses Untermenüs werden alle auf dem PC installierten Hilfen zu Antriebsfirmwaren und SoftSERCANS angezeigt. Der Anwender kann sich mit den Untermenü "Einstellungen“ die Zuordnung der Hilfen zu den Antriebsfirmwaren bei Bedarf neu konfigurieren. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Inbetriebnahmehilfsmittel 9-5 Menü Rechte Maustaste Über die rechte Maustaste (Shift-F10) kann an jeder Stelle in DriveTop ein lokales Menü geöffnet werden. Damit sind einige nützliche Funktionen (Phasenumschaltung, Antriebshilfe, Dialog "Einzelparameter“) jederzeit verfügbar. Steht die aktuelle Cursorposition auf einem Anzeigeelement eines Parameters (z.B. Eingabefeld) sind weitere Informationen zum Parameter verfügbar und dieser Parameter kann in eine Liste im Menü "Parametergruppe“ übernommen werden. 9.5 Hilfsmittel "SoftSERCANSTest.exe" Mit dieser Windows-Anwendung lässt sich die korrekte Funktion von SoftSERCANS überprüfen. Mit SoftSERCANSTest.exe lassen sich • Die Grundeinstellungen (Basisadresse, Interrupts) von SoftSERCANS einstellen • Alle System- und Antriebsparameter auslesen und beschreiben • die Betriebsphase ändern • Antriebs- und Systemdiagnosen auslesen • Fehler löschen Hinweis: Bei Beendung von SoftSERCANSTest wird der Anwender gefragt, ob er SoftSERCANS terminieren will! Das Programm befindet sich im Unterverzeichnis "\Bin\". DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 9-6 Inbetriebnahmehilfsmittel DLL für Zugriffe auf SoftSERCANS DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Beispielprogramme 10-1 DLL für Zugriffe auf SoftSERCANS 10 Beispielprogramme Mit der Installierung von SoftSERCANS werden auch die im folgenden Text beschriebene Bespiele installiert. Die Voraussetzungen für eine fehlerfreie Benutzung der Beispiele sind: • Mindestens ein SERCOS interface Antrieb mit der Adresse 1 ist in Betrieb genommen und fehlerfrei angeschlossen. • Alle Systemparameter von SoftSERCANS sind korrekt eingestellt und abgespeichert. Die Quelldateien sind im jeweiligen Unterverzeichnis zu finden. 10.1 Microsoft Beispiele RTX Umgebung CyclicData.rtss Mit CyclicData wird auf einfache Weise veranschaulicht wie • eine Synchronisierung auf die zyklischen Daten • eine Benutzung der Lifecounterfunktion • eine Initialisierung der zyklischen Soll- und Istwertkanäle • eine Vorgabe von Sollwerten zu realisieren ist. CyclicData bewegt eine rotatorisch gewichtete Achse um 360 Grad. Die Parameter Y-0-0004, Y-0-0005 und Y-0-0006 können individuell eingestellt werden um den Einfluß festzustellen. Es ist zu Beachten daß Y-0-0006 nicht im Bereich von Y-0-0012 plus Y-0-0008 liegt, um Zugriffskonflikte zu vermeiden (siehe Kap. 5.2; "Zyklischer Datenaustausch"). Windows NT Umgebung ChangePhase.exe Mit ChangePhase.exe wird in ANSIC erklärt wie • eine Betriebsphase von SERCOS interface verändert werden kann • die Istphase ausgelesen werden kann • im Fehlerfall die Diagnose ausgelesen werden kann Command.exe Mit Command.exe wird der Kommandokanal von SoftSERCANS erklärt. Dieses ANSIC-Beispiel verdeutlicht DOK-SERCAN-SOFT*01VRS*-FK01-DE-P • die Funktion eines Kommandos unter SERCOS interface • wie die Einzelschritte eines Kommandos nutzbar sind • wie ein Einzelkommando gleichzeitig bei allen Antrieben ausführbar ist 10-2 Beispielprogramme DLL für Zugriffe auf SoftSERCANS Diagnose.exe Mit Diagnose.exe wird auf einfache Weise veranschaulicht wie • das Diagnosesystem von SoftSERCANS funktioniert • die Diagnosestruktur auszuwerten ist • der Echtzeitkern von SoftSERCANS gestartet und beendet wird MicrosoftCpp.exe Dieses Beispiel stellt eine Verbindung zu SoftSERCANS auf Basis von C++-Klassen her und liest auf Anforderung den Diagnosekanal aus. 10.2 Borland Beispiele RTX Umgebung Für die RTX-Umgebung sind leider keine Applikationen unter Borland compilierbar. Windows NT Umgebung BorlandC.exe Das Beispiel entspricht ChangePhase.exe. im Wesentlichen dem Microsoft-Beispiel BorlandCpp.exe Dieses Beispiel stellt eine Verbindung zu SoftSERCANS auf Basis von C++-Klassen her und liest auf Anforderung den Diagnosekanal aus. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS 11 Aufgetretene Probleme 11-1 Aufgetretene Probleme 11.1 Probleme beim Start von SoftSERCANS Falls RTX nicht auf dem Rechner installiert wurde tritt beim Start des Tools folgende Fehlermeldung auf: Abb121.bmp Abb. 11-1: :RTX ist nicht installiert Falls die PC-Einsteckkarte fehlt, tritt in der Applikation folgende Diagnosemeldung auf: Abb122.bmp Abb. 11-2: Fehler in der Anwendung DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 11-2 Aufgetretene Probleme DLL für Zugriffe auf SoftSERCANS 11.2 Probleme mit dem Echtzeitkern RTX • die Checkbox "alternativen Debugger verwenden" muß aktiviert werden: RTX_Settings.jpg Abb. 11-3: Einstellungen für RTX Auswirkung: Der Debugger von Numega stürzt undefiniert ab. Dieser Fehler ist ohne diese Erkenntnis schwer lokalisierbar (leidliche Erfahrungen während der Entwicklung). Hinweis: Im Zuge der Entwicklung mit VenturCom RTX V4.2 wurde mit älteren PC-Motherboards (hier speziell ein AddIn-Board für den ISA-Bus) Probleme bei der Ausführung des Interrupts festgestellt. Bei Start von größeren Applikation wie Visual C++ traten IRQ-Reaktionsverzögerungen im Bereich von ca. 500 us auf, was zum Fehler im LWL-Protokoll von SoftSERCANS führte. Es wird dringend empfohlen, Motherboards der neuesten Generation einzusetzen. Im Zweifelsfall sollten vor einer Kaufentscheidung die entsprechenden Boards hinsichtlich RTX-Tauglichkeit ausgetestet werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Aufgetretene Probleme 11-3 Probleme beim Deinstallieren von VenturCom RTX Nach der Deinstallation von VenturCom und einem Rechnerneustart findet das System die Datei "hal.dll" im Systemverzeichnis "winnt\system32" nicht mehr. Deshalb muß die von VenturCom beim Installieren in "hal-org.dll" umbenannte Datei wieder in "hal.dll" umbenannt werden bevor der Rechner heruntergefahren wird, damit das System wieder startet. Um dies nachträglich zu erreichen müssen entweder die Bootdisketten von Windows NT oder eine MSDOS-Startdiskette verwendet werden. Leider fehlt diese Restaurierung beim Deinstallieren des Echtzeitkerns. Probleme mit ServicePacks von Microsoft Hinweis: Bevor irgendwelche Servicepacks von Microsoft auf Rechnern mit RTX installiert werden muß die DLL "hal.dll" im Verzeichnis "winnt\system32" kopiert und unter einem anderen Namen gespeichert werden. Nach der Installation des Servicepacks muß dann die neue Datei "hal.dll" in "hal-org.dll" umbenannt und die alte "hal.dll" von VenturCom wieder dorthin kopiert werden. Wird dies nicht berücksichtigt, so wird die von VenturCom verwendete Datei "hal.dll" mit der beim Servicepack mitgelieferten überschrieben und das System zerstört. Dies äußert sich dadurch, daß beim Laden des Echtzeitkerns die falsche "hal.dll" verwendet wird und so bereits vor dem Laden von Windows NT ein schwerwiegender Fehler auftritt. Abhilfe: Die Datei "hal.dll" von VenturCom muß wieder in das obige Verzeichnis kopiert werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 11-4 Aufgetretene Probleme DLL für Zugriffe auf SoftSERCANS Schreibschutz in der Imagedatei des RTSS-Prozesses Während der Entwicklung mit RTX trat nach längerer Zeit folgendes Problem auf: Abb126.bmp Abb. 11-4: RTX-Prozeß kann nicht gestartet werden Diese aussagekräftige Fehlermeldung konnte selbst von der RTX-Hotline nicht lokalisiert werden und hat einige Zeit bis zur Lokalisierung (nicht Beseitigung!) benötigt. RTX legt von allen Prozessen Kopien der rtss-Dateien im Systemverzeichnis unter "RTSS\00Prozeßnummer" an und beläßt diese dort, was bei Debugversionen von Entwicklungsanwendungen zu unnötiger "Vermüllung" des Systemverzeichnisses führt. Eintrag von RTX in die Registrierung: [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Rtss_00 1] @="" "Type"=dword:00000001 "Start"=dword:00000003 "Group"="Base" "ErrorControl"=dword:00000000 "DisplayName"="RTSS process slot 1" "DependOnService"=hex(7):52,74,78,5f,72,74,73,73,00,52,74,78,53,65,7 2,76,65,72,\ 00,00 "ImagePath"=hex(2):5c,53,79,73,74,65,6d,52,6f,6f,74,5c,52,74,73,73,5c, 30,30,31,5c,53,6f,66,74,53,65,72,63,61,6e,73,2e,72,74,73,73,00 Ø \SystemRoot\Rtss\001\SoftSERCANS.rtss "CmdLine"="SoftSERCANS.rtss 10 5 D0000" "DependOnGroup"=hex(7):00 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Rtss_001\E num] "0"="Root\\LEGACY_RTSS_001\\0000" "Count"=dword:00000001 "NextInstance"=dword:00000001 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Aufgetretene Probleme 11-5 Verzeichnis im System: ABB115.BMP Abb. 11-5: ImagePath von RTX Aufgrund noch nicht nachvollziehbarer Vorgänge wird nun in diesem ImagePath bei "SoftSERCANS.rtss" das Schreibschutzflag gesetzt, was dann in obiger Fehlermeldung endet. Ab diesem Zeitpunkt kann dann dieser Prozeß nicht mehr gestartet werden. Nur ein Umbenennen führte zum Erfolg. Hinweis: Es wird daher empfohlen, dieses Verzeichnis ab und zu manuell zu bereinigen, d.h. das komplette Unterverzeichnis "Rtss" zu löschen. Andere Startprobleme von RTSS-Prozessen Sporadisch (und somit äußert unvorhersehbar) ergaben sich beim Start eines RTSS-Prozesses folgende aussagekräftigen Fehlermeldungen: Beim Start durch Mausdoppelklick: RTX_Ladefehler.jpg Abb. 11-6: RTX-Ladefehler 0xC0000034 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 11-6 Aufgetretene Probleme DLL für Zugriffe auf SoftSERCANS Bei der Fehleranalsye in der Windows Systemdatei "Winerror.h" ergab sich folgende Fehlerbeschreibung: // // MessageId: ERROR_DUP_NAME // // MessageText: // // A duplicate name exists on the network. // #define ERROR_DUP_NAME 52L Ø 0xC0000034 (C steht für Fehler, siehe auch "winerror.h") und nach dem Quittieren dieser Meldung: RTX_Ladefehler2.jpg Abb. 11-7: Weitere Fehlermeldung von RTX Abhilfe: • im einfachen Fall wurde der Kernprozess von RTX (Slot10) terminiert. Hier muß lediglich ein Rechnerneustart durchgeführt werden • eine weitere Ursache ist der Start einer eigenen Echtzeitanwendung (*.rtss) ohne zuvor SoftSERCANS.rtss gestartet zu haben • fallen diese beiden Ursachen weg so hilft es leider nur RTX komplett zu deinstallieren und anschließend neu zu installieren, da möglicherweise zugehörige Dateien beschädigt wurden! Auslösen eines Reset beim Start eines RTSS-Prozesses Wird beim Start eines RTSS-Programms (in der Regel "SoftSERCANS.rtss") ein Reset des PC ausgelöst, muß SoftSERCANS deinstalliert und anschließend erneut installiert werden, da die Datei "SoftSERCANS.rtss" möglicherweise beschädigt wurde. Hinweis: Eine weitere Ursache für diesen Effekt ist die falsche Strukturausrichtung in den Projekteinstellungen von Visual Studio, hier muß immer 1 Byte und multithreaded eingestellt sein! DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Aufgetretene Probleme 11-7 Auslösen einer RTX "Green Screen" Exception Eine solche Exception wird in den meisten Fällen dann ausgelöst, wenn bereits durch andere Einsteckkarten verwendete Interrupts oder Speicherbereiche von der eigenen Routine erneut installiert werden. Da es in der Echtzeitumgebung diesbezüglich keinerlei Schutzmechanismen gibt, ist der Programmierer selbst für die Resourcenverwaltung verantwortlich. Eine Übersicht über die vom System belegten Resourcen gibt das Programm "%SystemRoot%\system32\winmsd.exe" im Systemverzeichnis: IRQResourcen.jpg Abb. 11-8: belegte Interrupts Auf diese Interrupts und andere Resourcen darf auf keinen Fall zugegriffen werden. Hinweis: Der Schutzmechanismus der Treiberarchitektur bezüglich doppelt belegter Resourcen funktioniert in RTX-Umgebung nicht! DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 11-8 Aufgetretene Probleme DLL für Zugriffe auf SoftSERCANS 11.3 Probleme mit dem Debugger Softice von Numega • der Startupmode muß auf Systemboot stehen: Softice_Settings.jpg Abb. 11-9: Bootmode für Softice-Debugger Auswirkung: Bei anderen Bootmodis lassen sich im Debugger keine Breakpoints setzen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Aufgetretene Probleme 11-9 DLL für Zugriffe auf SoftSERCANS 11.4 Probleme mit Visual Studio und Visual C++ • Während der Entwicklung traten unter Visual Studio massive Probleme in den Projekteinstellungen auf. Wurden die Projekteinstellungen verändert und kam es anschließend zu schwerwiegenden Laufzeitfehlern, welche einen Rechnerneustart verlangten, so waren die gemachten Projekteinstellungen hinfällig. Deshalb mußte in diesen Fällen das Projekt geschlossen und neu geöffnet werden, um die Änderungen wirksam im Projekt abzuspeichern. • in Verbindung mit RTX4.2 ist das Schlüsselwort virtual in C++ nicht erlaubt, dies führt zu Unterscheidungsproblemen beim DLLFunktionsaufruf einer Echtzeitanwendung (z.B. Aufruf von NC.rtss). • wichtig: Strukturzuordnung muß byteorientiert sein • treten während der Programmentwicklung nichterklärbare Ausnahmefehler auf(unhandled exception 0x00000005), so wird als erster Schritt das komplette Neukompilieren der Anwendung empfohlen. Sollte dies nicht zum Erfolg führen, wurden möglicherweise Bibliotheks- oder RTSS-Datei beschädigt. In diesem Fall sollte SoftSERCANSTest neu installiert werden. Nichterklärbare Ausnahmefehler: RTXException.jpg Abb. 11-10: Ausnahmefehler bei unterschiedlichen Versionen von Anwendung, DLL und RTSS-Kern • nach fehlerfreiem Compilieren und Test des erstellten Programms sollte unbedingt eine Untersuchung hinsichtlich des vom Programm belegten Speichers mittels des Taskmanagers von Windows NT gemacht werden. Dadurch werden Langzeitfehler aufgrund nichtfreigegebener Speicherresourcen vermieden. Diese Fehler treten insbesondere dann auf, wenn der von der Applikation verwendete Datenspeicher der Listenparameter nicht wieder deallokiert wird. Wichtig: DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Der belegte Speicher darf sich auch nach längerer Programmlaufzeit nicht wesentlich vergrößern. 11-10 Aufgetretene Probleme DLL für Zugriffe auf SoftSERCANS Die Speichernutzung läßt sich mit dem Taskmanager leicht überprüfen: Abb1220.bmp Abb. 11-11: Überprüfung der Speichernutzung und –veränderung Hinweis: Diese Werte sollten über längere Zeit beobachtet werden. 11.5 Probleme mit Borland C++ V5.02 • gleiche wie im vorherigen Kapitel • Fehlende Projekts: Projekteinstellung: Arbeitsverzeichnis des laufenden Abb1222.bmp Abb. 11-12: RTSSrun findet Datei nicht Dieser Fehler tritt auf, weil die DLL über die Win32-Funktion GetCurrentDirectory versucht, den Echtzeitkern "SoftSERCANS.rtss" zu starten. In den Borland-Projekteinstellung kann jedoch kein Arbeitsverzeichnis für die ausführbare Exe-Datei angegeben werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Aufgetretene Probleme 11-11 DLL für Zugriffe auf SoftSERCANS Abhilfe: SoftSERCANS.rtss muß in das aktuelle Projektverzeichnis kopiert werden. Weiterhin ergaben sich schwerwiegende Probleme im Umgang mit DLLs, die mit Visual C++ erstellt wurden. Diese DLLs sind leider von Borland aus nur dann einbindbar, wenn der zugehörige Sourcecode zur Verfügung steht. Hierfür mußten die im nächsten Abschnitt aufgeführten Anpassungen in der DLL durchgeführt werden. Aus diesem Grund können Echtzeitanwendungen in Borland C++ nicht erstellt werden, da der Quellcode der einzubindenden DLLs von VenturCom nicht zur Verfügung steht und diese Module (obj-Dateien) in RTXAnwendungen eingebunden werden müssen. Weiterhin war die Angabe einer ebenfalls notwendigen Einsprungadresse der RTSSAnwendung nicht möglich. Beim Versuch die VenturCom DLLs einzubinden zeigten sich folgende (sinnige) Fehlermeldungen des Borland-Compilers ("we don"t like Microsoft"), leider lassen sich gekaufte Objektdateien ohne Quellcode nicht neu erzeugen: BorlandOMF.jpg Abb. 11-13: DLL-Hilfe bei Borland C++ V5.0 zugehöriger Compilerfehler: BorlandOMFErr.jpg Abb. 11-14: Compilerfehler von Borland C++ V5.0 Was dieser ungültige OMF-Rekord darstellt, wurde leider nicht erläutert. Um dieses Problem bei der hier dargestellten DLL zu umgehen, waren nachfolgende Schritte erforderlich: DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 11-12 Aufgetretene Probleme DLL für Zugriffe auf SoftSERCANS Einbindung einer Microsoft-DLL in ein Borland Projekt Zuerst muß jede Funktion mit dem Aufruf CALLBACK versehen werden, diese Anpassung wird in der Datei "SoftSERCANSANSIC.h" und "SoftSERCANS.h" vorgenommen: Sourcecode "SoftSERCANSANSIC.h": #ifdef __cplusplus extern "C" { #endif ULONG CALLBACK SoftSERCANSInitObject(LPVOID* *p_CCpointer); Auf diese Weise wird sichergestellt, daß der Aufruf aus Borland C/C++Code richtig funktioniert. CALLBACK gibt an, in welcher Reihenfolge der Stack der CPU wieder freigegeben wird. Diese Reihenfolge ist in Microsoft-Compilern anders festgelegt als in Borland-Compilern. Weiterhin muß für Borland eine eigene Moduldefinitionsdatei mitgeführt werden, die wie folgt auszusehen hat: Auszug aus "Borland.def": ;----------------------------------------------------------------------------; Project BorlandCpp ; Indramat GmbH ; Copyright © 1999. Alle Rechte vorbehalten. ; ; SUBSYSTEM: BorlandCpp Module Definition File ; FILE: borlandcpp.def ; AUTHOR: Werner Rau ; ;----------------------------------------------------------------------------; WR: ; hier folgendes für DLL-Anpassung einfügen: ; siehe auch technical note 3242 ; ; so geht es: ; Funktionsname ; DLLName.Funktionsname = IMPORTS SoftSERCANSInitObject SoftSERCANS.SoftSERCANSInitObject = C_Start_SoftSERCANS = SoftSERCANS.C_Start_SoftSERCANS usw. Jetzt müssen beide Dateien zum Borland-Projekt hinzugefügt werden, anschließend kann mit der Programmentwicklung begonnen werden. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS Aufgetretene Probleme 11-13 11.6 Generelle Probleme beim Erstellen eigener Applikationen Beim Erstellen eigener Programme ist folgende Besonderheit zu beachten: Das erstellte Programm erhält von RTX Echtzeitpriorität VORSICHT Dies läßt sich mit dem Taskmanager leicht feststellen: Abb1228.bmp Abb. 11-15: Echtzeitpriorität erstellter Applikationen Hinweis: Die Anwendung bekommt eine wesentlich höhere Priorität und somit eine wesentlich längere Zeitscheibe als andere Applikationen zugewiesen. DOK-SERCAN-SOFT*01VRS*-FK01-DE-P 11-14 Aufgetretene Probleme DLL für Zugriffe auf SoftSERCANS Deshalb sind zeitintensive Programmteile unbedingt zu vermeiden, da diese das Betriebssystem lahmlegen. Dies kann man leicht austesten, indem man folgendes Auslastprogramm startet: int main() { #include <windows.h> while(TRUE) ; return 0; } Startet man nun das Programm und verschiebt das Fenster auf dem Bildschirm, stellt man fest, wie langsam der Bildschirm nach dem Verschieben wieder hergestellt wird: Es dauert eine sichtbare Zeit, bis das Verschieben des Fensters neu dargestellt wird. Dieses Programm hat jedoch nur normale Priorität! Macht man das gleiche mit der Echtzeitapplikation ist keine Eingabe mit Maus oder Tastatur möglich, es hilft dann nur noch ein Neustart. Weiterhin gilt folgendes: Hinweis: Die gesamte Anwendung sollte von Zeit zu Zeit komplett rekompiliert werden. Das gleiche gilt auch für alle beteiligten DLL`s und die Echtzeitanwendungen DOK-SERCAN-SOFT*01VRS*-FK01-DE-P DLL für Zugriffe auf SoftSERCANS 12 Index A Achsart 8-18 Adressen betreibbare Antriebe 8-14 Adressen deaktivierte Antriebe 8-13 Adressen erkannte Antriebe 8-14 Adressen projektierte Antriebe 8-3 Antriebsdeaktivierung 8-20 Antriebstyp 8-21 E Einschaltverzögerungszeit 8-3 F Fehlerzähler AT 8-22 Fehlerzähler SYNC 8-8 I Installation von Disketten 3-1 Istwert Header 8-20 Istwertkonfigurationsliste 8-19 K Kopierzeitpunkt SoftSERCANS 8-7 L Lifecounter Differenz 8-6 Liste aller A-Parameter 8-15 Liste aller Y-Parameter 8-15 Liste der ungültigen A-/Y-Parameter 8-11 LWL-Länge 8-5 N NC-Zykluszeit 8-4 P Parameter-Kennung 7-20, 7-46 Prozess ID 8-7 S SERCOS interface - Konfiguration 8-9 SERCOS-Zykluszeit 8-4 SoftSERCANS - Aktueller Modus 8-12 SoftSERCANS - Firmware-Version 8-9 SoftSERCANS - Hardware-Version 8-9 SoftSERCANS - Hochlauf Zielmodus 8-16 SoftSERCANS - Phasenvorgabe 8-11 SoftSERCANS - Sprachumschaltung 8-13 SoftSERCANS Basisparameter laden 8-16 SoftSERCANS beenden 8-7 SoftSERCANS Fehler löschen 8-10 SoftSERCANS Systemdiagnosetext 8-17 SoftSERCANS Systemfehlernummer 8-17 Softwarelizenzvertrag 3-3 Sollwert Header 8-19 Sollwertkonfigurationsliste 8-18 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Index 12-1 12-2 Index DLL für Zugriffe auf SoftSERCANS Standardinstallation 3-7 Synchron-Master 8-3 Systemparameter speichern 8-11 T Telegrammart 8-20 V Verschiebung Zugriffszeitpunkt NC 8-8 Z Zugriffszeit SoftSERCANS 8-6 Zugriffszeitpunkt NC 8-5 DOK-SERCAN-SOFT*01VRS*-FK01-DE-P Printed in Germany 2 8 7 7 0 2