Fortgeschrittene Programmiertechniken

Dieses Kapitel enthält zusätzliche Informationen zur ISaGRAF Workstation und dem ISaGRAF Zielsystem. Es ist Benutzern gewidmet, denen die ISaGRAF Werkzeuge und Methoden bereits geläufig sind.

Mehr über die ISaGRAF Werkzeuge

Verriegelte und virtuelle E/A

PC-SPS-Verbindung validieren

ISaGRAF Verzeichnisse

Anwendungssymbole

Begrenzungen der ISaGRAF Workstation "LARGE" (WDL)


Mehr über die ISaGRAF Werkzeuge

Wenn man die Bearbeitungswerkzeuge der ISaGRAF Workstation benutzt, kann man mit der rechten Maustaste ein Menü mit den hauptsächlichen Bearbeitungsbefehlen öffnen. Es wird am aktuellen Standort des Cursors angezeigt und reduziert die Mausaktionen bei Ausschneide- und Einfügebefehlen.

Die ISaGRAF Werkzeuge unterstützen die Mehrfachausführung. Ein Werkzeug kann zwar nicht zweimal geöffnet werden, um das gleiche Dokument zu bearbeiten, es ist jedoch möglich, mehrere Fenster mit dem gleichen Werkzeug zu öffnen und verschiedene Objekte parallel zu bearbeiten.

Andere Befehle sind verfügbar, um die Beschreibung der grafischen Schaltflächen in den Befehlsleisten anzuzeigen. Doppelklicken Sie auf eine unbenutzte Fläche in der Befehlsleiste, um den Inhalt der Befehlsleiste als Popup-Menü anzuzeigen. Verlagern Sie den Mauscursor auf eine grafische Schaltfläche, um den Befehl in Textform anzuzeigen.


Verriegelte und virtuelle E/A

Wenn man eine E/A-Karte als virtuell definiert, wird die Verarbeitung der physikalischen E/A-Kanäle unterbrochen. Die Operationen des ISaGRAF Kernels verändern sich dagegen nicht. Der einzige Unterschied ist, daß die Eingänge der Sensoren nicht erfaßt und die Aktuatoren nicht aktualisiert werden. In diesem Modus kann der ISaGRAF Debugger benutzt werden, um die Eingangswerte zu modifizieren. Das Attribut virtuell betrifft eine komplette Karte. Es wird bei der Definition der E/A-Karte definiert, vor der Entwicklung des Anwendungscodes. Das Attribut virtuell ist eine statische Funktionalität und wird gespeichert, wenn die Anwendung gestoppt und wieder gestartet wird.

Zusätzlich besteht die Möglichkeit, die E/A-Variablen zu verriegeln. Darunter versteht man die Unterbrechung einer physikalischen Einrichtung und der entsprechenden ISaGRAF E/A-Variablen. Die Verriegelung und Freigabe einer Variablen erfolgt mit dem Debugger. Die Verriegelung einer Variablen ist eine dynamische Operation und wird beim Neustart der Anwendung nicht gespeichert. Eine Verriegelung bezieht sich jeweils auf eine einzige Variable (einen E/A-Kanal).

Es folgt eine Zusammenfassung der hauptsächlichen E/A-Steuerfunktionen:

Attribut Virtuell	Verriegelung

Auswahlwerkzeug	E/A-Verdrahtung	Debugger

Definition	statisch	dynamisch

Auswahlmodus	Karte	Variable

Anwendung	Validation und Tests	Instandhaltung

Das folgende Schema veranschaulicht den E/A-Datenfluß zwischen den ISaGRAF Tasks:

Wenn eine Variable verriegelt ist, bleiben die verschiedenen Zugriffe zur Datenbank unverändert, der Anschluß der Eingangseinrichtung ist jedoch unterbrochen. Die Eingangswerte können mit dem Debugger forciert und vom ISaGRAF Kernel verarbeitet werden:

Wenn eine Ausgangsvariable verriegelt ist, ist der Anschluß des Ausführungskernels und des Ausgangstreibers unterbrochen. In diesem Fall kann noch mit Hilfe des Debuggers über den Ausgangstreiber auf die Ausgangseinrichtung zugegriffen werden:

Wenn das Attribut "virtuell" für eine Eingangskarte definiert wurde, ist der Anschluß zur Datenbank der Eingänge und zu den zugeordneten Eingangseinrichtungen unterbrochen. Ein virtueller E/A-Treiber ersetzt den realen Treiber.

Die Definition einer virtuellen Ausgangskarte folgt denselben Regeln wie die einer virtuellen Eingangskarte. Bei virtuellen Ausgangskarten aktualisiert der ISaGRAF Kernel die Datenbank der Ausgänge. Der Anschluß zu dieser Datenbank und den zugeordneten Ausgangseinrichtungen ist jedoch unterbrochen. Ein virtueller E/A-Treiber ersetzt den realen Treiber.

Um alle Möglichkeiten zusammenzufassen:


PC-SPS-Verbindung validieren

Die meisten Probleme, die durch eine schlechte Verbindung der ISaGRAF Workstation mit der Ziel-SPS entstehen, werden im Debugger-Fenster durch die Meldung "Unterbrochen" angezeigt. Vor einer Diagnose sollte die Kommunikation validiert werden, wenn in der Ziel-SPS keine Anwendung aktiv ist. Auf diese Weise kann die serielle Kommunikationsverbindung unabhängig von eventuellen Ausführungsproblemen validiert werden.

Die "C"-Sprache, die für die Beschreibung der Umrechnungsfunktionen und C-Funktionen benutzt wird, ermöglicht einen direkten Zugriff auf das Zielsystem. Ein Programmierfehler in einem derartigen Software-Komponenten kann Systemfehler oder ein fehlerhaftes Verhalten des ISaGRAF Systems bewirken. Diese Probleme können auch bei der Entwicklung von E/A-Treibern mit Hilfe der ISaGRAF OEM-Option entstehen. Es können beispielsweise Systemfehler auftreten, wenn eine E/A-Karte an einer ungültigen Busadresse implementiert wird. Die folgende Tabelle liefert eine Zusammenfassung der Fehlerdiagnose:

Status	Kontext	Diagnose
"Unterbrochen" (vor dem Laden)		- Zielsteuerung außer Betrieb - kein Kabel / ungültiges Kabel - ungültige Verbindungsparameter - ISaGRAF Zielsystem falsch installiert
"Unterbrochen" (nach dem Laden)	Start im Schrittmodus	- ungültige E/A-Konfiguration - Systemabsturz
	Start im Echtzeitmodus	- ungültige E/A-Konfiguration - Systemabsturz  (durch "C"-Programmierung)
"Keine Anwendung"		- Anwendung nicht geladen - Anwendung nicht gestartet  (durch "C"-Programmierung) - Intel/Motorola verwechselt - ungültige Version des Zielsystems


ISaGRAF Verzeichnisse

Die ISaGRAF Workstation arbeitet mit einer Struktur dedizierter Verzeichnisse. Das Wurzelverzeichnis dieser Architektur wird vom Benutzer bei der ISaGRAF Installation bestimmt. Der Vorgabename des ISaGRAF Wurzelverzeichnisses ist ISAWIN. Es folgt die vom Installationsprogramm auf der Festplatte erstellte Standard-Architektur:

Die Standard-Unterverzeichnisse von ISaGRAF sind:

VERZEICHNIS	INHALT
APL	Wurzelverzeichnis für die ISaGRAF Projekte. Jedes Projekt entspricht einem Unterverzeichnis, in dem alle Projektdaten enthalten sind. Es kann andere Verzeichnisse für andere Projektgruppen geben. Das ISaGRAF Installationsprogramm erstellt das Verzeichnis "SMP", in dem Beispielanwendungen gespeichert sind.
COM	Objekte mit "allgemeinem (common)" Geltungsbereich. Diese Daten können von allen Projekten benutzt werden.
EXE	ISaGRAF Programme und Hilfsdateien.
LIB	ISaGRAF Bibliotheken: - Elementlisten, - Parameter und Schnittstelle für jedes Element, - technische Datenblätter.
LIB\IOC	Quellcode für E/A-Konfigurationen
LIB\FNC	Quellcode für die in den IEC-Sprachen geschriebenen Funktionen
LIB\FBL	Quellcode für die in den IEC-Sprachen geschriebenen Funktionsbausteine
LIB\SRC	Quellcode für Umrechnungen und C-Funktionen
LIB\DEFS	Quellcode-Vorsatz für Umrechnungen und C-Funktionen
LIB\RELS	Objektcode der Umrechnungen und C-Funktionen
LIB\DEV	Befehlsdateien für die Entwicklung von "C"-Bibliotheken: Makefiles, Verknüpfungslisten, etc...
TMP	Temporäre Dateien: Die Unterverzeichnisse von TMP sind dem ISaGRAF Codegenerator vorbehalten und können nicht gelöscht werden.

Die Unterverzeichnisse können auf der Festplatte an eine andere Stelle verschoben werden. Wenn eine nicht-standard Architektur benutzt wird, müssen die Pfadnamen der Unterverzeichnisse im Abschnitt WS00, in der Initialisierungsdatei ISA.ini, im ISaGRAF Unterverzeichnis EXE, deklariert werden. Es folgen die Eingaben des Abschnitts WS001:

Isa	Wurzelverzeichnis für die ISaGRAF Architektur

IsaExe	Wurzelverzeichnis für die ISaGRAF Programme und Hilfsdateien

IsaApl	Wurzelverzeichnis für die ISaGRAF Projekte

IsaTmp	Verzeichnis für die temporären Dateien

IsaSrc	Verzeichnis für die Quellcode-Bibliothek

IsaDefs	Verzeichnis für die Quellcode-Vorsätze der Bibliotheken

Achtung: Wenn Sie IsaTmp in ein anderes Verzeichnis verschieben, müssen Sie die Unterverzeichnisse OBJS, RELS und DATA im neuen Verzeichnis erstellen. Das folgende Beispiel veranschaulicht die Eingaben des Abschnitts WS001 für eine Neudefinition der ISaGRAF Standardarchitektur:

;datei c:\ISAWIN\EXE\ISA.ini

[WS001]

Isa=c:\isawin

IsaExe=c:\isawin\exe

IsaApl=c:\isawin\apl

IsaTmp=c:\isawin\tmp

IsaSrc=c:\isawin\lib\src

IsaDefs=c:\isawin\lib\defs

Wenn Sie dem ISaGRAF Zielsystem C-Funktionen und -Funktionsbausteine hinzufügen möchten, wird das Verzeichnis \ISAWIN\LIB\DEV benutzt, um Entwicklungsdateien zu speichern: Befehlsdateien, Makefiles, Maps, etc... Das Verzeichnis \ISAWIN\LIB\RELS wird benutzt, um die bei der "C"-Kompilierung generierten Objektdateien, sowie die ISaGRAF "C"-Bibliotheken, die für die LINK-Operationen gebraucht werden, zu speichern.


Anwendungsymbole

Sämtliche Objekte einer ISaGRAF Anwendung sind mit jeweils einem Namen, der bei der Variablendeklaration eingegeben wird, und einer vom Codegenerator berechneten, internen virtuellen Adresse gekennzeichnet. Die virtuelle Adresse einer Variablen darf nicht mit ihrer Netzwerkadresse, die ebenfalls bei der Variablendeklaration eingegeben wird, verwechselt werden. Virtuelle Adressen werden für Kommunikationsvorgänge und spezielle "C"-Anwendungen, die die OEM-Option benutzen, verwendet. Wenn der ISaGRAF Codegenerator gestartet wird, generiert er eine ASCII-Datei mit der logischen Entsprechung zwischen den Namen und virtuellen Adressen sämtlicher Objekte (Variablen, Programme, Schritte...) des betreffenden Projekts. Diese Datei kann problemlos befragt werden, wenn Informationen über die statische ISaGRAF Datenbank benötigt werden. Die Datei heißt "APPLI.TST" und befindet sich im Verzeichnis des ISaGRAF Projekts: "\ISAWIN\APL\proname" (proname ist der Name des Projekts). Der folgende Abschnitt beschreibt das Format der Datei "APPLI.TST". Die hauptsächlichen Notationen für die Beschreibung sind:

VA	virtuelle Adresse

ATTR	Attribut einer Variablen

USP	"C"-Funktion

Hier die möglichen Werte für die Attribute einer Variablen. Diese Werte erscheinen im Feld "Attribut":

+X	interne Variable

+C	interne nur-lesen Variable

+I	Eingangsvariable

+O	Ausgangsvariable

Alle Zahlen, mit Ausnahme der virtuellen Adressen, werden als ganzzahlige Dezimalwerte ausgedrückt. Die virtuellen Adressen (VA) werden als vierstellige Hexadezimalzahlen mit dem Vorzeichen "!" ausgedrückt. Zum Beispiel:

123	ist ein Dezimalwert

!A003	ist eine virtuelle Hexadezimaladresse

Hier das globale Format der Datei "APPLI.TST". Die Datei besteht aus einer Liste von Blöcken. Ein Block besteht aus einer Folge von Datensätzen. Jeder Datensatz wird auf einer Textzeile beschrieben und beginnt mit einer Kopfzeile.

Anfangsblock

Beschreibungsblöcke

Endblock

Es folgt die allgemeine Syntax eines Blocks:

@ <blockname> <argumente>

#datensatz...

#datensatz...

...

Es folgt die Struktur des ersten Blocks, der die hauptsächlichen Informationen über die Anwendung enthält:

@ISA_SYMBOLS,<appli_crc>

#NAME,<appli_name>,<version>

#DATE,<creation_date>

#SIZE,G=<nbprg>,S=<nbstep>,T=<nbtra>,L=0,P=<nbpro>,V=<nbvar>

#COMMENT,cj international

appli_crc	Checksum der Anwendungsymbole

appli_name	Name der Anwendung

version	Versionsnummer der ISaGRAF Workstation

creation_date	Entwicklungsdatum der Anwendung

nbprg	Anzahl der Programme

nbstep	Anzahl der AS-Schritte

nbtra	Anzahl der AS-Transitionen

nbpro	Anzahl der verwendeten "C"-Funktionen

nbvar	Anzahl sämtlicher Variablen

Hier die Struktur des Endblocks, der das Ende der Datei kennzeichnet:

@END_SYMBOLS

Es folgt die Struktur des Blocks, der für die Beschreibung der Anwendungsprogramme benutzt wird:

@PROGRAMS,<nbprg>

#<va>,<name>

#...

nbprg	Anzahl der in diesem Block definierten Programme

va	virtuelle Adresse des Programms

name	Programmname

Es folgt die Struktur des Blocks, der für die Beschreibung der AS-Schritte der Anwendung benutzt wird. Für jedes nicht-AS-Programm wird ein virtueller Schritt definiert:

@STEPS,<nbsteps>

#<va>,<name>,<father>

#...

nbsteps	Anzahl der in diesem Block definierten Schritte

va	virtuelle Adresse des Schritts

name	Name des Schritts

father	virtuelle Adresse des Vaterprogramms

Es folgt die Struktur des Blocks, der für die Beschreibung der AS-Transitionen der Anwendung benutzt wird:

@TRANSITIONS,<nbtrans>

#<va>,<name>,<father>

#...

nbtrans	Anzahl der in diesem Block definierten Transitionen

va	virtuelle Adresse der Transition

name	Name der Transition

father	virtuelle Adresse des Vaterprogramms

Es folgt die Struktur des Blocks, der für die Beschreibung der Booleschen Variablen der Anwendung benutzt wird:

@BOOLEANS,<nb_boo>

#<va>,<name>,<attr>,<program>,<eq_false>,<eq_true>

#...

und wenn die Anzahl der Variablen 4095 überschreitet:

X#(1.<varno>),<name>,<attr>,<program>,<eq_false>,<eq_true>

nb_boo	Anzahl der Variablen in diesem Block

va	virtuelle Adresse der Variablen

varno	Adressenbereich (innerhalb des Booleschen Datentyps)

name	Name der Variablen

attr	Attribut der Variablen

program	virtuelle Adresse des Vaterprogramms

oder "!0000" für eine globale Variable

eq_false	Zeichenkette für einen False-Wert

eq_true	false	Zeichenkette für einen True-Wert

Es folgt die Struktur des Blocks, der für die Beschreibung der analogen Variablen der Anwendung benutzt wird:

@ANALOGS,<nb_ana>

#<va>,<name>,<attr>,<program>,<format>,<unit>

#...

und wenn die Anzahl der Variablen 4095 überschreitet:

X#(2.<varno>),<name>,<attr>,<program>,<format>,<unit>

nb_ana	Anzahl der Variablen in diesem Block

va	virtuelle Adresse der Variablen

varno	Adressenbereich (innerhalb des analogen Datentyps)

name	Name der Variablen

attr	Attribut der Variablen

program	virtuelle Adresse des Vaterprogramms

oder "!0000" für eine globale Variable

format	= "I" für eine ganzzahlige Variable

= "F" für eine reale Variable

unit	Einheit-Zeichenkette

Es folgt die Struktur des Blocks, der für die Beschreibung der Timer-Variablen der Anwendung benutzt wird:

@TIMERS,<nb_tmr>

#<va>,<name>,<attr>,<program>

#...

und wenn die Anzahl der Variablen 4095 überschreitet:

X#(3.<varno>),<name>,<attr>,<program>

nb_tmr	Anzahl der Variablen in diesem Block

va	virtuelle Adresse der Variablen

varno	Adressenbereich (innerhalb des Timer-Datentyps)

name	Name der Variablen

attr	Attribut der Variablen (immer +X: intern)

program	virtuelle Adresse des Vaterprogramms

oder "!0000" für eine globale Variable

Es folgt die Struktur des Blocks, der für die Beschreibung der Zeichenketten-Variablen der Anwendung benutzt wird:

@MESSAGES,<nb_msg>

#<va>,<name>,<attr>,<program>,<max_len>

#...

und wenn die Anzahl der Variablen 4095 überschreitet:

X#(4.<varno>),<name>,<attr>,<program>,<max_len>

nb_msg	Anzahl der Variablen in diesem Block

va	virtuelle Adresse der Variablen

varno	Adressenbereich (innerhalb des Zeichenketten-Datentyps)

name	Name der Variablen

attr	Attribut der Variablen

program	virtuelle Adresse des Vaterprogramms

oder "!0000" für eine globale Variable

max_len	maximale Länge (deklarierte Kapazität)

Es folgt die Struktur des Blocks, der für die Beschreibung der "C"-Funktionen der Anwendung benutzt wird:

@USP,<nb_usp>

#<va>,<name>

#...

nb_usp	Anzahl an C-Funktionen in diesem Block

va	virtuelle Adresse der C-Funktion

name	Name der C-Funktion

Es folgt die Struktur des Blocks, der für die Beschreibung der "C"-Funktionsbaustein-Instancen der Anwendung benutzt wird:

@FBINSTANCES,<nb_fb>

#<va>,<inst_name>,<fb_name>

#...

nb_fb	Anzahl der Instancen eines C-Funktionsbausteins in diesem Block

va	virtuelle Adresse der C-Funktionsbaustein-Instance

inst_name	Name der C-Funktionsbaustein-Instance

fb_name	Referenzname des C-Funktionsbausteins


Begrenzungen der ISaGRAF Workstation "LARGE" (WDL)

Die folgenden Begrenzungen gelten für die Objekte der ISaGRAF Workstation. Durch die Konfiguration Ihres Computers (Arbeitsspeicher, Speicherplatz auf der Festplatte) und die Kapazitäten des ISaGRAF Zielsystems (Arbeitsspeicher, verfügbare Hardware- und Software-Ressourcen) können natürlich noch weitere praktische Einschränkungen entstehen. In den folgenden Tabellen werden die äußersten Grenzwerte aufgeführt, die auf keinen Fall überschritten werden dürfen.

Für ein Projekt:

Objekt	Maximum	Anmerkungen

Programme	255	für alle Haupt-, Sohn- und Unterprogramme

Hierarchie-Ebenen	20

Die Anzahl der in der Workstation installierten Projekte wird nur durch den verfügbaren Speicherplatz auf der Festplatte begrenzt.

Namen:

Name für:	Maximum	Anmerkungen

Projekt	8 Zeichen

Programm	8 Zeichen

Variable	16 Zeichen	+ 60 Zeichen für den Kommentar

Definition	16 Zeichen

Definierte Äquivalenz	255 Zeichen	+ 60 Zeichen für den Kommentar

Umrechnungstabelle	16 Zeichen

Variablenliste	16 Zeichen

Funktion / FB (Bibl.)	8 Zeichen	betrifft C-Funktionen, C-Funktionsbausteine

oder in einer IEC-Sprache geschriebene Funktionen

Funktionsparameter	16 Zeichen	betrifft C-Funktionen, C-FB oder in einer IEC-Sprache

geschriebene Funktionen

E/A-Karte	8 Zeichen

E/A-Konfiguration	8 Zeichen

OEM-Parameter (Karte)	16 Zeichen

Umrechnungsfunktion	8 Zeichen

Bearbeitung (für ein Programm):

Objekt	Maximum	Anmerkungen

AS-Zeilen	600

AS-Spalten	20

AS-Schritte	4095	für das gesamte Projekt (einschließlich der Schritte,

Initialisierungsschritte, Anfangs- und Endschritte)

AS-Transitionen	4095	für die gesamte Anwendung

KOP/FBS-Bearbeitung	200 Spalten	Dies ist die Größe des Bearbeitungsfelds (Zellen).

2000 Zeilen

Schneller KOP	unbegrenzt	entsprechend der Kapazität des benutzten Computers

AWL-Marken	251	in einem AWL-Programm

Textbearbeitung	40KBytes

Datenverzeichnis (für ein Projekt):

Objekt	Maximum	Anmerkungen

Boolesche Variablen	65535

Analoge Variablen	65535	ganzzahlige und reale Variablen zusammengenommen

Timer-Variablen	65535

Zeichenketten-Variablen	65535

Die Begrenzungen für die Anzahl der Booleschen, analogen und Zeichenketten-Variablen gelten für interne, Eingangs- und Ausgangsvariablen zusammengenommen.

Definitionen	4095	in einer Liste (gleicher Geltungsbereich)

Definitionen	255	in einem Programm

Umrechnungstabellen	127	in einer Anwendung

Punkte in einer Tabelle	32	in einer Umrechnungstabelle

E/A-Verdahtung:

Objekt	Maximum	Anmerkungen

E/A-Karten	256	in einer Anwendung (Karten oder komplexe Baugruppen)

Die Anzahl der E/A-Karten, einschließlich einzelner Karten und Elemente komplexer Baugruppen, darf 256 nicht überschreiten.

E/A-Kanäle	128	auf einer Karte

Bibliotheken:

Objekt	Maximum	Anmerkungen

Funktionen (IEC)	255	zusammen in der Bibliothek installiert

F-Bausteine (IEC)	255	zusammen in der Bibliothek installiert

C-Funktionen	255	zusammen in der Bibliothek installiert

C-Funktionsbausteine	255	zusammen in der Bibliothek installiert

FB-Instancen	4095	für den gleichen Funktionsbausteintyp in einer Anwendung

F-Eingangsparameter	31	betrifft C-Funktionen und Funktion in den IEC-Sprachen

FB-Parameter	32	Ein- und Ausgangsparameter zusammen.

Es ist mindestens ein Ausgangsparameter erforderlich.

Umrechnungsfunktionen	128	zusammen in der Bibliothek installiert

E/A-Konfigurationen	255	zusammen in der Bibliothek installiert

E/A-Karten	255	zusammen in der Bibliothek installiert

E/A-Baugruppen.	255	zusammen in der Bibliothek installiert

OEM-Kartenparameter	16