Programmierung des Nockenschaltwerks durch die SPS
Um die Funktion des Nockenschaltwerks sicherzustellen, muss das SPS-Programm das Nockenschaltwerk und einzelne Ausgangsspuren freischalten. Weiterhin müssen Fehler überwacht und gegebenenfalls zurückgesetzt werden. Optional können auch Nockenparameter, wie Schaltpositionen, durch das SPS-Programm geändert werden. Zu diesem Zweck steht eine SPS-Bibliothek zur Verfügung.
Hier klicken um die Bibliothek zu speichern
Definition von Variablen für das Prozessabbild
Um das Prozessabbild des Nockenschaltwerkes für das SPS-Programm verfügbar zu machen, werden im Programm Ein- und Ausgangs-Variablen gleichen Typs angelegt.
VAR_GLOBAL
(*Digital Cam Server Input Process Image - PLC --> DigitalCamServer *)
ReverseMode AT %Q* : UDINT;
Coupled AT %Q* : UDINT;
HPMPreset AT %Q* : UDINT;
HPMDifference AT %Q* : UDINT;
ResetIOErrors AT %Q* : UDINT;
ResetEncoderError AT %Q* : UDINT;
ResetShaftError AT %Q* : UDINT;
ResetHPMError AT %Q* : UDINT;
BrakeEnabled AT %Q* : DWORD;
PlcAndMask AT %Q* : DWORD;
PlcOrMask AT %Q* : DWORD;
(* Digital Cam Server Output Process Image - DigitalCamServer --> PLC *)
ActualHPM AT %I* : UDINT;
IOerrors AT %I* : UDINT;
EncoderError AT %I* : UDINT;
ShaftError AT %I* : UDINT;
HPMError AT %I* : UDINT;
CamInputs AT %I* : DWORD;
CamOutput AT %I* : DWORD;
END_VAR
Das hier beschriebene Prozessabbild entspricht einer Konfiguration mit einer Ausgangsgruppe, also mit 32 digitalen Ausgängen. Falls mehr als eine Ausgangsgruppe (bis zu 10) angelegt werden, wird das Prozessabbild erweitert und es kommen einige Variablen hinzu. In diesem Fall sollten die Variablen BrakeEnabled, PlcAndMask, PlcOrMask und CamOutput als ARRAY angelegt werden.
Nachdem das SPS-Programm kompiliert wurde und in den TwinCAT System Manager importiert wurde, können diese Variablen mit den entsprechenden Variablen des Prozessabbildes des digitalen Nockenschaltwerks verknüpft werden. Das SPS-Programm hat dadurch Zugriff auf den Inhalt dieser Variablen.
Programmierung des Nockenschaltwerks über das Prozessabbild
Um das Nockenschaltwerk zu aktivieren, sind einige Mindestschritte im SPS-Programm notwendig:
- Die gewünschte Solldrehzahl des Nockenschaltwerkes wird in die Variable HPMpresest eingetragen (U/min). Diese Drehzahl dient als Grundlage für die Nockenberechnung und für Überwachungsfunktionen und sollte der tatsächlichen Drehzahl des Nockenencoders entsprechen.
Wichtig: HPM Preset wird in [1/min] angegeben, wenn der Encoder-ParameterUse Encoder Precision FALSE ist. Falls die erhöhte Encoder-Präzision aktiviert wurde, ist die Einheit [1/1000 min] - Die maximale Drehzahlabweichung wird in die Variable HPMdifference eingetragen (z. B. 1 U/min). Dieser Wert wird für Überwachungsfunktionen und zur Neuberechnung der Nockenschaltpunkte benötigt.
- Ausgangsspuren müssen über die Variable PlcAndMask aktiviert werden sobald der Nockenencoder seine konstante Drehzahl erreicht hat. Im einfachsten Fall wird die Variable PlcAndMask auf den Wert 16#FFFFFFF gesetzt, um alle 32 Ausgangsspuren für das Nockenschaltwerk frei zu schalten. (Bei einer Konfiguration mit mehr als einer Ausgangsgruppe gibt es bis zu 10 PlcAndMask-Variablen (ARRAY) über die bis zu 320 Ausgänge aktiviert werden können.)
- Falls Bremsnocken verwendet werden, werden die zugehörigen Ausgangsspuren durch Setzen der entsprechenden Bits der BreakEnabled Variablen aktiviert (ähnlich wie bei der PlcAndMask ).
- Sobald der Encoder seine konstante Solldrehzahl erreicht hat, wird die Variable Coupled auf 1 gesetzt und somit die Überwachungsfunktionen des Nockenschaltwerks freigeschaltet.
SPS-Bibliothek TcDigitalCamServer.lib
Die SPS Bibliothek TcDigitalCamServer.lib enthält Funktionsbausteine um das Nockenschaltwerk durch die SPS zu konfigurieren.
Lesen und Schreiben der Encoder-Konfiguration
Encoderparameter können mit jeweils einem Funktionsbaustein gelesen oder geschrieben werden. Um einzelne Parameter, wie z. B. den Encoder-Offset zu ändern, sollte der Encoderdatensatz zunächst gelesen werden und nach Ändern eines Wertes wieder zurückgeschrieben werden.
Die Parameter-Datenstruktur ist in der Bibliothek definiert.
TYPE ST_DigitalCamEncoder :
STRUCT
EncoderID : UDINT; (* unique ID of the cam encoder *)
EncoderType : UDINT; (* type of the cam encoder *)
EncoderName : STRING(79);
EncoderRevDir : UDINT; (* encoder uses inverted counting direction when TRUE *)
EncoderBoxAddr : UDINT;
EncoderZeroOffset : UDINT; (* zero offset of the encoder position in steps of [1/1000 degrees] *)
EncoderMask : DWORD; (* encoder bit mask defines the maximum counter value passed to the control system *)
END_STRUCT
END_TYPE
Lesen und Schreiben von Nockenparametern
Der Parameter-Datensatz jeder Nocke kann gelesen und geschrieben werden. Auch hier sollte zum Ändern eines Parameters, wie z. B. einer Schaltposition, der gesamte Nockendatensatz gelesen und nach der Änderung wieder zurückgeschrieben werden.
.
Die Auflösung der Positionsdaten in der Parameter-Datenstruktur hängt von der parametrierten Encoder-Auflösung ab. Falls der Parameter Use Encoder Precision in der Encoder- Konfiguration gesetzt ist, werden die Positionsdaten in Einheiten zu [1/1000 Grad] angegeben; anderenfalls in Einheiten zu [1 Grad].
Die Parameter-Datenstruktur ist in der Bibliothek definiert./p>
TYPE ST_DigitalCamStruct :
STRUCT
CamID : UDINT; (* unique cam ID from 1 to 2048 *)
CamType : UDINT; (* type E_DigitalCamType: 1=distance cam, 2=time cam, 3=brake cam *)
CamLine : UDINT; (* number of cam output 0 to 319 that is cam is active on *)
PresetTime : UDINT; (* preset time in steps of [1/10 ms] *)
Counter : UDINT; (* activation counter: 0=inactive, 1=every cycle, 2=every 2nd cycle, etc. *)
HysteresisInc : UDINT; (* not supported *)
StandardActive : UDINT; (* this cam is active when the standard cam table is activated by the PLC *)
ReverseActive : UDINT; (* this cam is active when the reverse cam table is activated by the PLC *)
DynamicEnabled : UDINT; (* preset time is used when TRUE *)
HysteresisEnabled : UDINT; (* not supported *)
StartPosition : UDINT; (* start position of the cam in steps of [1/1000 or 1 degrees] *)
EndPositionOrDuration : UDINT; (* end position of distance cams in steps of [1/1000 or 1 degrees]
or duration of time cams in steps of [1/10 ms] *)
END_STRUCT
END_TYPE
Der Nockentyp CamType kann mit folgenden Werten belegt werden:
TYPE E_DigitalCamType :
(
CAMTYPE_NONE, (* undefined cam type *)
CAMTYPE_DISTANCE,
CAMTYPE_TIME,
CAMTYPE_BREAK
);
END_TYPE
Nocken anlegen und löschen
Üblicherweise werden Nocken im TwinCAT System Manager konfiguriert. Das SPS-Programm sollte dann nur noch die Parametrierung der Nocken ändern. Im Einzelfall kann es notwendig sein, neue Nocken durch das SPS-Programm anzulegen bzw. vollständig zu löschen. Die hier verwendete Parameter-Datenstruktur entspricht der beim Lesen und Schreiben der Nockendaten.
Neuberechnen der Nockentabelle
Das digitale Nockenschaltwerk rechnet alle Nocken-Parameter in eine Nockentabelle zur schnellen Ausgabe um. Diese Nockentabelle wird für eine bestimmte vom Anwender vorgegebene Geschwindigkeit berechnet und nur bei Abweichungen von dieser Geschwindigkeit neu berechnet. Über den Funktionsbaustein DCS_CalcCamData kann der Anwender eine Neuberechnung der Nockentabelle gezielt anstoßen und damit die Berechnung für ein bestimmtes Geschwindigkeitsniveau sicherstellen.
Ausgangssignale der Funktionsbausteine
Alle beschriebenen Funktionsbausteine werden durch eine steigende Flanke am Eingang Execute getriggert. Anschließend wechselt der Ausgang Busy auf TRUE um anzugeigen, dass die Funktion ausgeführt wird. Der Vorgang ist beendet, sobald Busy wieder FALSE ist. Gleichzeitig zeigt der Ausgang Done an, dass die Funktion erfolgreich abgeschlossen wurde. Anderenfalls wird der Ausgang Error TRUE um einen Fehler mit der Fehlernummer in ErrorID zu beschreiben. Busy, Done und Error sind exklusiv, es kann also nur eines der Signale gleichzeitig TRUE sein.