GInOutHwExplorer¶
Mit Viper.NET wird der GInOutHwExplorer (oder kurz HwExplorer) installiert, mit dem die GInOut-Schnittstelle außerhalb von Viper.NET initialisiert und gestartet werden kann.
Der HwExplorer kann sowohl zum Erstellen und Testen von GInOut-Konfigurationen als auch zur Simulation von Gegenstellen (Steuerungen) über Python-Skripte verwendet werden. In Viper.NET ist der HwExplorer als User Tab eingebunden.
Oberfläche HwExplorer¶
Einstellungen zum ausgewählten Objekt
Alle definierten Objekte
Überprüfung der Verbindung/Konfiguration
Statusmeldungen der angeschlossenen Hardware
Anlegen neuer Objekte¶
Die meisten Objekte wie Hardware oder Daten werden über das Kontextmenü des Objektbaums links angelegt.
Ausnahmen sind Datenblöcke, die innerhalb der Hardware angelegt werden, und Variablen, die in der Variablenliste definiert werden.
Ebenso lassen sich angelegte Objekte über das Kontextmenü wieder löschen.
Wird eine bestimmte Objektart im Kontextmenü ausgewählt, um eines oder mehrere der vorhandenen Objekte zu löschen, öffnet sich eine Übersichtsdarstellung potentiell löschbarer Objekte und ihrer Abhängigkeiten (Spalte Dependencies (1)). Wird ein Objekt von mindestens einem anderen vorhandenen Objekt benötigt, so wird es gelb hinterlegt dargestellt. In diesem Fall ist es nicht ratsam, das Objekt zu löschen. Zunächst sollten seine Abhängigkeiten selbst gelöscht oder auf andere Objekte umkonfiguriert werden. Für die jeweils selektierten Objekte (Checkboxen links (2)) lassen sich mittels des Buttons Try to find all objects depending on checked objects (3) alle Objekte auflisten, die von diesen abhängig sind.
Parametrierung von Objekten¶
Objekte können beim Anlegen parametriert werden, oder durch Auswahl bzw. Doppelklick im Objektbaum. Manche Parameter, insbesondere Object-IDs, lassen sich nur beim Erstellen des Objekts festlegen. Im Folgenden werden die Parameter der GInOut Objekte beschrieben.
Hardware und Datenblöcke¶
Die Parametrierung von Hardware und Datenblöcken hängt vom jeweiligen Hardware-Typ ab und wird im Kapitel Unterstützte Hardware erläutert.
Wenn simulierte Hardware verwendet wird, kann bei der Bearbeitung der konfigurierten Hardware unterschieden werden, ob die Bearbeitung die Simulierte Hardwarequelle oder die hinterlegte, tatsächliche Hardware betreffen soll. Dies wird mittels des Menüpunkts Edit original hw / Edit simulation hw des Hardware-Editier-Dialogs kontrolliert:
Daten¶
- Input, Output, Input/Output
Definiert, ob die Daten nur gelesen bzw. geschrieben oder bidirektional verwendet werden können.
- Never poll (huge data on slow HW)
Normalerweise werden die Datenbereich zyklisch gepollt. Große Datenbereich auf langsamer Hardware können den Poll-Zyklus und somit die Reaktionszeit von Viper.NET ausbremsen. Deshalb können solche Bereiche aus dem Poll-Zyklus ausgenommen werden. Die Daten werden dann nur bei Bedarf eingelesen.
- Countercheck output data
Nur für Input/Output: Normalerweise werden Ausgangsdaten in Viper.NET nur einmalig geschrieben. Sollten unerlaubte Änderungen an den Daten durch die Gegenstelle (SPS) festgestellt werden, überschreibt GInOut diese mit den eigentlichen Output-Daten und stellt so den korrekte Datenzustand sicher.
- WriteSetDataCycleTime
Ähnlich wie Countercheck output data kann hier ein Intervall für eine zyklische Aktualisierung der Daten festgelegt werden, was auch bei reinen Output-Daten möglich ist.
- DataChangedLogger
Zu Diagnosezwecken können alle Datenänderungen protokolliert werden. Diese werden standardmäßig im Applikationslog gespeichert. Über die log4net Konfigurationsdatei kann auch eine separate Logdatei definiert werden.
- Id
Eindeutige ID der Daten zur weiteren Referenzierung, bspw. bei den Bits. Kann nur beim Anlegen des Datenobjekts festgelegt werden.
- Hardware und Datablock
Referenz auf die Hardware und einen Datenblock innerhalb der Hardware, auf den die Daten abgebildet werden.
- Offset, Length
Offset und Länge der Daten innerhalb des Datenblocks. Offset + Length muss kleiner als die Länge des Datenblocks sein.
- Alignment
Gibt die Ausrichtung der Daten an. In den meisten Fällen muss hier 1 stehen. Ausnahme bildet bspw. die Modbus-Anbindung.
- BitToASCII
In speziellen Fällen bzw. für spezielle Hardware (Prodel) kann hier angegeben werden, dass Bits als ASCII 0 bzw. 1 statt binär abgebildet werden.
- Name
Ein sprechender Name für die Daten.
- InitData
Setzt die Daten beim Programmstart. Falls keine Binärdatei angegeben ist, werden die Daten auf 0x00 gesetzt.
- ExitData
Setzt die Daten beim Programmende. Falls keine Binärdatei angegeben ist, werden die Daten auf 0x00 gesetzt.
Bits¶
- Direction
Definiert ein Eingangs- bzw. Ausgangsbit.
- Id
Eindeutige ID der Daten zur weiteren Referenzierung. Kann nur beim Anlegen des Datenobjekts festgelegt werden.
- Data, Byte und Bit
Referenz auf die Daten, den Byte-Offset und den Bit-Index innerhalb des Byte, auf den das Bit abgebildet wird.
- Name
Frei wählbare Bezeichnung für das Bit.
- LowColor, HighColor
Definiert die Farben der Visualisierung für den HIGH bzw. LOW Zustand.
- Invert
Wenn gesetzt, wird das Bit invertiert interpretiert.
Bei Rechtsklick in die Darstellung der konfigurierten Bits öffnet sich ein Kontextmenü, welches es erlaubt, einzelne oder mehrere Bits abhängig von ihrem Namen aktiv bzw. inaktiv zu setzen (SET bzw. RESET bits on HW). Außerdem lässt sich die Farben, in denen die Bits abhängig von ihrem Zustand dargestellt werden, konfigurieren (Change high/low color of bits). Bei diesen Auswahlmöglichkeiten lassen sich jeweils reguläre Ausrücke verwenden um effizient mehrere Bits gleichzeitig konfigurieren zu können.
Variablen¶
Variablenlisten¶
Variablen werden immer in Variablenlisten organisiert. Nach dem Anlegen der Variablenliste über das Kontextmenü können die Variablen definiert werden:
Wert der ausgewählten Variable ändern (alternativ: Doppelklick auf die Variable in der Liste)
Liste sortieren (auf, ab, automatisch nach Daten und Offset)
Variablen anlegen, löschen, kopieren und einfügen
List umbenennen
Liest die Werte aller Variablen neu von der Hardware
GInOut Variablen¶
In den meisten Fällen werden GInOut Variablen verwendet, deren Wert aus GInOut Daten gelesen bzw. geschrieben wird.
- Name
Sprechender Name der Variablen. Muss innerhalb der Variablenliste eindeutig sein.
- FormatString
Kann für die Darstellung als Text verwendet werden. Je nach Datentyp bzw. Konverter sind hier andere Werte zulässig. Es werden die Formatbezeichner von .NET unterstützt.
- Description
Optionale Beschreibung
- Default value
Standardwert, auf den die Variable in bestimmten Fällen zurückgesetzt werden soll. Der Wert wird als Text eingegeben. Dieser Text muss in den Datentyp der Variable bzw. des Konverters überführt werden können. Wenn leer wird der Standardwert des Datentyps verwendet (bspw. 0 für numerische Typen).
- Set default value on reset
Wenn gesetzt wird die Variable bei einem Reset von Viper.NET auf ihren Standardwert zurückgesetzt.
- DoubleFactor
Kann bei numerischen Datentypen verwendet werden, um bspw. Werte, die von der SPS in Mikrometern übertragen werden, direkt in Millimeter umzuwandeln.
- Offset
Wird, falls gesetzt, nach Anwendung des DoubleFactor auf den numerischen Variablenwert addiert.
- Data
Auswahl der GInOut Daten, in denen die Variable liegt, sowie Offset und Length der Variable in den Daten.
- Auto adjust length from converter
Wenn gesetzt wird der Parameter Data.Length automatisch auf die Länge des Datentyps im Konverter gesetzt.
- Data - Mirror
Optionale Spiegelung der Daten in einen zweiten Datenbereich.
- Data converter:
Der Datenkonverter übersetzt den Wert der Variable in ein Byte-Array und umgekehrt. Dieses Byte-Array wird dann in die Daten geschrieben bzw. wurde aus den Daten gelesen. Die Parameter unterscheiden sich je nach Typ und sind hier dokumentiert.
In-Memory Variablen¶
Diese Variablen werden nicht auf Daten abgebildet, sondern im Speicher gehalten.
Die meisten Parameter entsprechen denen der GInOut Variable, nur dass hier keine Angaben zu Datenbereich und Konverter gemacht werden müssen. Stattdessen muss nur der Value type festgelegt werden.
Variable recorder¶
Die Wertänderungen von Variablen können zur Diagnose mit einem Variable Recorder aufgezeichnet werden. Aktuell wird nur die grafische Darstellung numerischer Variablentypen unterstützt.
- VarList
Auswahl der Variablenliste.
- VarName
Auswahl der aufzuzeichnenden Variable, oder
*** ALL ***, um alle Variablen der Liste gemeinsam aufzuzeichnen.- Timespan
Zeitfenster für die Variablenaufzeichnung. Ältere Werte werden wieder verworfen.
- TimeBase
Aktualisierungsintervall der Darstellung
- SampleMode
Definiert, wie mehrere Wertänderungen innerhalb eines Aktualisierungsintervalls aggregiert werden sollen.
- Autoscale Y
Wenn aktiv wird die Y-Achse auf Basis der Variablenwerte automatisch skaliert
- MinY, MaxX, MajorStep, MinorStep
Wenn Autoscale Y abgewählt ist, können hier die Skalierung und Einteilung der Y-Achse definiert werden.
Angelegte Variablenrecorder sind im Objektbaum unter dem Knoten Variables gelistet.
Python Scripts¶
Der Name des Skripts kann frei gewählt werden. Über die ID können Skripte referenziert werden, z.B. im UI Designer.
Auswahl des Trigger-Bits für das Skript.
„input/output“: Vorauswahl für die Bitliste
„bit“: Auswahl des bits
„positive/negative edge“: Gibt an, ob das Skript bei positiver oder negativer Flanke ausgeführt werden soll.
Mit „enabled“ wird eingestellt, ob das Skript bei Zustandsänderung des Bits ausgeführt werden soll. „sync“ gibt an, ob das Skript in einem eigenen Thread ausgeführt werden soll (nicht gesetzt).
Hier wird
ein Standardskript angelegt
das Skript übersetzt (auf Syntaxfehler geprüft)
das Skript gestartet
das Skript gestoppt (nur möglich wenn „sync“ nicht gesetzt ist)
Eingabe des Python-Skripts.
Achsen (Axes)¶
Id: Eindeutige numerische ID der Achse. Über den GInOutManager wird mit dieser ID auf eine Achse zugegriffen.
Name: Anzeigename für die Achse.
Var. list: Name der GInOut-Variablenlist. Dies enhtält alle GInOut-Variable für den Datenaustauch zur SPS.
TimoutMoveAbsDefault: Maximale Wartezeit in [ms] für eine Bewegung der Achse.
ResetEdgeTime: Pulsdauer in [ms] für das Reset-Flag.
Autocreate variables: Über einen Wizard wird eine neue Variablenliste für den Datenaustausch zur SPS erzeugt.
Name für die neue Variblenliste eingeben.
Input-Datenbereich auswählen.
Output-Datenbereich auswählen.
Input-Output-Variablen werden automatisch angelegt.
Output Flags: Signale vom PC zur SPS
Reset: Achse zurücksetzen, bzw. Fehler quittieren.
MoveAbsolute: Achse auf Position (Variable Output Pos) fahren.
MoveRelative: Achse relativ zur aktuellen Position (Variable Output Dist) fahren.
JogBackw.Slow: Achse langsam rückwärts fahren, solange das Flag EIN ist.
JogBackw.Fast: Achse schnell rückwärts fahren, solange das Flag EIN ist.
JogForw.Slow: Achse langsam vorwärts fahren, solange das Flag EIN ist.
JogForw.Fast: Achse schnell vorwärts fahren, solange das Flag EIN ist.
Simulation: Simulationsmodus in der SPS aktivieren.
Output Pos: Positionsregister für absolute Achsfahrten.
Output Dist: Positionsregister für relative Achsfahrten (Distanz).
Output Speed: Achsgeschwindigkeit in [%] zur Maximalgeschwindigkeit (Eingestellt in der SPS).
Input Flags: Signale von der SPS zum PC
Ready: Achse bereit.
Busy: Fahrbefehl läuft.
Done: Fahrbefehl abgeschlossen.
Error: Es liegt ein Fehler an.
Input NcErr: Fehlernummer des Kontroller.
Input DrvErr: Fehlernummer der Motor-Treibers.
Input ActPos: Aktuelle Achsposition.
Input MinPos: Unteres Softwarelimit für die Position.
Input MaxPos: Oberes Softwarelimit für die Position.
Simulation: Simulations Modus
Off: Simulationsmodus ist aus.
PC: Achse wird vom PC simuliert. Dabei wird der Handshake zur SPS simuliert. Dazu sollte Viper.NET mit dem Kommandozeilenparameter -simAllHw gestartet worden sein.
PLC: Achse wird von der SPS simuliert. Dabei wird vor jedem Fahrbefehl das Output-Flag Simulation gesetzt.
Jog Buttons: Setzt das entsprechende Flag für langsames, bzw. schnelles vorwärts bzw. rückwärts fahren.
Speed Override: Fahrgeschwindigkeit in [%] setzen.
Move Rel: Achse relativ zur aktuellen Position fahren.
Move Abs: Achse auf Position fahren.
Reset: Achse zurücksetzen, bzw. Fehler quittieren. Dabei wird das Output-Flag Reset gepulst.
Cancel: Aktiven Fahrbefehl abbrechen.
Zylinder (Valves)¶
Name: Eindeutiger Name des Zylinders. Über den GInOutManager wird mit diesem Namen auf einen Zylinder zugegriffen. Der Name kann nur beim Anlegen eines neuen Zylinders angegeben werden.
Front Pos Name: Name für die Arbeitsstellung des Zylinders.
Back Pos Name: Name für die Grundstellung des Zylinders.
Undefined Pos Name: Name für eine Position zwischen den Endlagen.
Timeout: Maximale Wartezeit in [ms] für die Bewegung des Zylinders von einer in die andere Endlage.
Settling Time: Beruhigungszeit in [ms]. Die Funktion WaitForIsSettled stellt sicher, dass die Beruhigungszeit seit dem Erreichen der Endlage abgewartet wird.
Valve Type
Monostable: Der monostabile Zylinder wird über einen einzigen Ausgang angesteuert.
Bistable: Der bistabile Zylinder wird mit zwei Ausgängen Angesteuert. Für die Grund- bzw. Arbeitsstellung gibt es jeweils einen Ausgang. Hat der Zylinder die Endlage erreicht, kann der Ausgang in der Regel zurückgesetzt werden.
Use Back Output as Enable: Für monostabile Zylinder wird der Ausgang für die Grundstellung als Aktiviert-Ausgang verwendet.
Reset Outputs on InPos: Gibt an, ob bei bistabilen Zylindern die Ausgänge beim Erreichen der Endlage zurückgesetzt werden sollen.
bitToASCII: Jedes Bit wird als ASCII-Zeichen in die Daten geschrieben. Dabei wird für jedes Bit ein Byte benötigt (EIN = ‚1‘ = 0x31 ; AUS = ‚0‘ = 0x30).
Single/Double: Zylindertyp Einzel- oder Doppelzylinder. Der Doppelzylinder hat dabei zwei Schlitten. Jeder Schlitten hat seine eingen Eingangssignale für die Endlagen.
outputs per zyl.: Gibt an, ob ein Doppelzylinder für den zweiten Schlitten separate Ausgänge zum Ansteuern der Endlage hat.
Direction: Bewegungsrichtung des Schlittens von Grundstellung zu Arbeitsstellung. Diese Einstellung ändert das Bild und die Position der Taster 20 und 21.
left2right: Links -> Rechts
right2left: Rechts -> Links
bottom2top: Unten -> Oben
top2bottom: Oben -> Unten
Front Output: Ausgang zum Ansteuern der Arbeitsstellung.
Back Output: Ausgang zum Ansteuern der Grundstellung beim bistabilen Zylinder, bzw. optionaler Aktiviert-Ausgang beim monostabilen Zylinder.
Front Input: Eingang für Endlagen Signal Arbeitsstellung.
Back Input: Eingang für Endlagen Signal Grundstellung.
Inputs: Visualisierung der Eingänge.
Outputs: Visualisierung der Ausgänge.
GoTo Front: Zylinder in Arbeitsstellung fahren.
GoTo Back: Zylinder in Grundstellung fahren.
Signalampel (Signal Lights)¶
Id: Eindeutige numerische ID der Signalampel. Über den GInOutManager wird mit dieser ID auf eine Signalampel zugegriffen.
Name: Anzeigename für die Signalampel.
Blinkinterval: An/Auszeit in [ms] für den Signalstatus blink.
Keep blinktimer alive: Falls angewält, läuft der Blinktimer permanent und setzt zyklisch den Signalstatus (Ein/Aus/Blinkend).
Ouputbit ids out: Liste der Ausgangsbits der Signalampel.
Ouputbit ids mirror: Liste der Ausgangsbits, auf die der Status der Signalampel gespiegelt werden soll, also eine weitere Signalampel, die den identischen Status anzeigen soll.
Signalstate: Aktueller Signalstatus: ‚Aus‘, ‚Ein‘, ‚Blinkend‘.
Vakkumsauger (Suction Tools)¶
- Name
Anzeigename des Saugers
- Vacuum Ok Input
Eingangsbit für den Zustand des Vakuums
- Suction Output
Ausgangsbit zum Aktivieren des Vakuumsaugers
- Blow Off Output
Ausgangsbit für den Abblas-Impuls
- Timeout
Nach dem Setzen von Suction Output muss Vacuum Ok Input innerhalb dieser Zeit anliegen
- SettlingTime
Absetzzeit, die nach dem Deaktivieren von Suction Output und BlowOffTime gewartet wird.
- BlowOffTime
Dauer des Abblas-Impulses