Hinweise zur Dokumentation

Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.
Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt.
Deshalb ist die Dokumentation nicht in jedem Fall vollständig auf die Übereinstimmung mit den beschriebenen Leistungsdaten, Normen oder sonstigen Merkmalen geprüft.
Falls sie technische oder redaktionelle Fehler enthält, behalten wir uns das Recht vor, Änderungen jederzeit und ohne Ankündigung vorzunehmen.
Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden.

Marken

Beckhoff®, TwinCAT®, EtherCAT®, Safety over EtherCAT®, TwinSAFE® und XFC® sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH.
Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die TwinCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP0851348, US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

Copyright

© Beckhoff Automation GmbH.
Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet.
Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster- oder Geschmacksmustereintragung vorbehalten.


TcPlcHydraulics

SPS Bibliotheken: TcPlcHydraulics

Übersicht

Die SPS Bibliothek TcPlcHydraulics fasst eine Reihe von Bausteinen und Funktionen zum Thema hydraulische Achsen sowie die darin verwendeten Datentypen zusammen. Sie erweitert die Unterstützung dieser Antriebstechnologie indem sie den Betrieb von Achsen ermöglicht, die durch ihre Eigenschaften (Grenzfrequenz, stark streuendes Verhalten) nicht zur Lageregelung geeignet sind oder deren Aufgaben sich von dem bei Elektro-Servos üblichen stark unterscheidet.

Um die Nutzung der Bibliothek zu vereinfachen sind die Bausteine entsprechend den Vorgaben der Nutzerorganisation der IEC61131 Anwender (PLCopen) ausgeführt und seit November 2004 zertifiziert.

Aus technischen Gründen wird es ab Version V3.0 der Bibliothek unvermeidbar werden, eine Reihe von Datenstrukturen so zu verändern, dass die Bibliothek zu ihren Vorgängern inkompatibel wird. Aus diesem Grund wird die Version V2.1 nach wie vor verfügbar gehalten und auch dokumentiert. Die Version 3.0 ist im Teststadium und ihre Dokumentation befindet sich im Aufbau.

Funktionsgruppen | Beschreibung
Verwaltungsfunktionen | Funktionen für die Verwaltung und Kontrolle von Achsen, Zugriff auf Parameter und Zustände.
Einzelachsbewegungfunktionen | Auslösen und Überwachen von aktiven Bewegungen für Einzelachsen.
Achsgruppenbewegungfunktionen | Auslösen und Überwachen von aktiven Bewegungen für Achsgruppen.
Antriebsanpassungen | Bausteine zur Vorbereitung von Achsstellwerten für die Ausgabe auf Ausgabegeräte (Klemmen, Steller usw.) in der Peripherie.
Encoderanpassungen | Bausteine zur Auswertung von Istpositionsdaten, die von Eingabegeräte (Klemmen, Encoder usw.) in der Peripherie eingelesen wurden.
Parameterhandhabung | Bausteine für das Speichern, Lesen und Kommunizieren von Parametern.
Bewegungsgeneratoren | Stellwertgeneratoren für aktive Achsbewegungen
Regler | Regler für verschieden Zustandsgrößen: Position, Geschwindigkeit, Druck.
Tabellenfunktionen | Tabellenfunktionen für nichtlineare Abbildungen und Kurvenscheiben
Message Logging | Meldungsaufzeichnung.
Laufzeitfunktionen | Diverse Laufzeitfunktionen.
Datentypen | In der Bibliothek verwendete Aufzählungen und Strukturen


TcPlcHydraulics: PLCopen Motion Control: Funktionen, Bausteine und Typen

Funktionen, Bausteine und Typen

Hinweis: Hier werden alle vorhandenen Funktionen, Bausteine und Datentypen dieser Library aufgelistet. Antworten zu häufig gestellten Fragen sowie Hinweise zum Einsatz der Library, zu Inbetriebnahme und Problemanalyse sowie Beispielprojekte finden Sie in der Knowledge Base.

Einige der hier aufgeführten Komponenten sind nicht für die Benutzung durch eine Applikation vorgesehen. Ihr Vorhandensein, Interface und Verhalten wird dementsprechend nicht garantiert. Da eine TwinCAT PLC Library jedoch strikt offen ist besteht keine Möglichkeit, diese internen Komponenten zu verbergen. Es sollte jedoch unbedingt darauf verzichtet werden, diese entsprechend mit (internal use only) oder (not recommended) gekennzeichneten Komponenten aus einer Applikation heraus direkt zu benutzen. Sollten eine dieser Komponenten für Sie von praktischem Nutzen sein nehmen Sie bitte Kontakt mit unserem Support auf. Wir werden dann die Möglichkeit prüfen, ob Ihnen ein Baustein unabhängig von der Library zur eigenverantwortlichen Verfügung gestellt werden kann.

Sollte die Library Bausteine, Typen oder Konstanten enthalten, die in der Dokumentation nicht aufgeführt werden handelt es sich um nicht freigegebene Elemente, die Gegenstand der aktuellen Softwarepflege und -entwicklung sind. Diese Elemente dürfen auf keinen Fall in einer Applikation direkt verwendet werden, da sie in der Regel noch nicht getestet sind.

Hinweis: Die Hydraulik Library bietet im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

PLC open Motion Control

Die hier aufgeführten Bausteine orientieren sich an:

Technical Specitikation

PLCopen - Technical Comittee 2 - Task Force

Function blocks for motion control

Version 1.0 Part 1 und Part 2 (Definition noch nicht endgültig)

Die Namen dieser Bausteine beginnen mit MC_ und enden mit _BkPlcMc.

Hinweis: Teile der PLCopen Definitionen sind noch nicht endgültig. Es kann hier zu Änderungen in zukünftigen Versionen der Library geben. Diese Änderungen können betreffen

  • Namen, Verhalten oder sogar Existenz von Funktionen, Funktionsblöcken oder abgeleiteten Datentypen
  • Namen, Verhalten, Typen oder Vorhandensein von Eingangs- oder Ausgangssignalen

Administrative Function Blocks

Name | Beschreibung
MC_CamTableSelect_BkPlcMc | Der Funktionsbaustein initialisiert eine Variable vom Typ ST_TcPlcMcCamId und bereitet dadurch eine Kurvenscheibe für die Kopplung von zwei Achsen vor.
MC_Power_BkPlcMc | Funktionsbaustein zum Ansteuern eines externen Stellgeräts.
MC_ReadActualPosition_BkPlcMc | Die Istposition einer Achse wird ermittelt.
MC_ReadActualTorque_BkPlcMc | Die Istkraft bzw. der Istdruck einer Achse wird ermittelt. (Definition noch nicht endgültig)
MC_ReadActualVelocity_BkPlcMc | Die Istgeschwindigkeit einer Achse wird ermittelt. (Definition noch nicht endgültig)
MC_ReadAxisError_BkPlcMc | Der aktuelle Errorcode einer Achse wird ermittelt.
MC_ReadBoolParameter_BkPlcMc | Die boolschen Parameter einer Achse werden ausgelesen.
MC_ReadDigitalOutput_BkPlcMc | Der aktuelle Zustand eines digitalen Ausgangs eines Nockenschaltwerks wird ermittelt. (Definition noch nicht endgültig)
MC_ReadParameter_BkPlcMc | Die nicht boolschen Parameter einer Achse werden ausgelesen.
MC_ReadStatus_BkPlcMc | Der Zustand der Achse wird dekodiert.
MC_Reset_BkPlcMc | Die Achse wird in einen betriebsbereiten Zustand versetzt.
MC_ResetAndStop_BkPlcMc | Die Achse wird in einen betriebsbereiten Zustand versetzt und befindet sich im Stillstand.
MC_SetOverride_BkPlcMc | Der Override der Achse wird gesetzt. (Definition noch nicht endgültig)
MC_SetPosition_BkPlcMc | Die Istposition der Achse wird gesetzt. (Definition noch nicht endgültig)
MC_SetReferenceFlag_BkPlcMc | Das Referenzier-Flag der Achse wird definiert. (Funktion ist nicht durch PLCopen definiert)
MC_WriteBoolParameter_BkPlcMc | Die boolschen Parameter einer Achse werden geschrieben.
MC_WriteDigitalOutput_BkPlcMc | Der aktuelle Zustand eines digitalen Ausgangs eines Nockenschaltwerks wird definiert. (Definition noch nicht endgültig)
MC_WriteParameter_BkPlcMc | Die nicht boolschen Parameter einer Achse werden geschrieben.

Motion Function Blocks, Single Axis

Name | Beschreibung
MC_DigitalCamSwitch_BkPlcMc | In Vorbereitung. (Definition noch nicht endgültig)
MC_Home_BkPlcMc | Auslösung und Überwachung einer Referenzfahrt.
MC_MoveAbsolute_BkPlcMc | Start und Überwachung einer Positionierung mit angebbarer Geschwindigkeit auf eine absolut angegebene Zielkoordinate.
MC_MoveJoySticked_BkPlcMc | Starten und Kontrollieren einer Achsbewegung mit einem proportionalen Steuergerät.
MC_MoveVelocity_BkPlcMc | Start und Überwachung einer Positionierung mit angebbarer Geschwindigkeit, aber ohne Zielangabe.
MC_MoveRelative_BkPlcMc | Start und Überwachung einer Positionierung mit angebbarer Geschwindigkeit um eine absolut angegebene Strecke.
MC_Stop_BkPlcMc | Stoppen einer Bewegung ohne erreichen der Zielposition.

Motion Function Blocks, Multiple Axis

Name | Beschreibung
MC_CamIn_BkPlcMc | Der Funktionsbaustein startet und überwacht eine Kurvenscheiben-Kopplung zwischen zwei Achsen.
MC_CamOut_BkPlcMc | Der Funktionsbaustein löst eine Kurvenscheiben-Kopplung zwischen zwei Achsen.
MC_GearIn_BkPlcMc | Start und Überwachung der Getriebe-Kopplung von zwei Achsen.
MC_GearOut_BkPlcMc | Auflösen der Getriebe-Kopplung von zwei Achsen.

System Function Blocks, Drive

Name | Beschreibung
MC_AxRtDrive_BkPlcMc | Aufbereitung des Stellwerts der Achse für die Ausgabe auf einer Hardware-Baugruppe.
MC_AxRtDriveAx2000_BkPlcMc | (internal use only) Aufbereitung des Stellwerts der Achse für die Ausgabe an einen AX2000 Servoverstärker.
MC_AxRtDriveKL2521_BkPlcMc | (internal use only) Aufbereitung des Stellwerts der Achse für die Ausgabe auf eine Pulsausgabeklemme KL2521.
MC_AxRtDriveKL2531_BkPlcMc | (internal use only) Aufbereitung des Stellwerts der Achse für die Ausgabe auf eine Schrittmotorendstufenklemme KL2531.
MC_AxRtDriveKL2541_BkPlcMc | (internal use only) Aufbereitung des Stellwerts der Achse für die Ausgabe auf eine Schrittmotorendstufenklemme KL2541.
MC_AxRtDriveKL4032_BkPlcMc | (internal use only) Aufbereitung des Stellwerts der Achse für die Ausgabe auf einer KL4032 ±10 V Ausgabeklemme.
MC_AxRtDriveLowCostStepper_BkPlcMc | (internal use only) Aufbereitung des Stellwerts der Achse für die Ausgabe auf digitalen Ausgangsklemmen.
MC_AxRtDriveM2400_BkPlcMc | (internal use only) Aufbereitung des Stellwerts der Achse für die Ausgabe auf einem von vier Kanälen einer ±10 V M2400 Ausgabebox.

System Function Blocks, Encoder und andere Istwerte

Name | Beschreibung
MC_AxRtEncoder_BkPlcMc | Ermittlung der Istposition der Achse aus den Eingangsinformationen einer Hardware-Baugruppe.
MC_AxRtEncoderAx2000_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den Eingangsdaten eines AX2000-Servoverstärkers.
MC_AxRtEncoderDigCam_BkPlcMc | (internal use only) Ermittlung des Positionsnocken-Bytes aus vier digitalen Eingangsbits.
MC_AxRtEncoderDigInc_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus zwei digitalen Eingangssignalen.
MC_AxRtEncoderKL2521_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den von einer Pulsausgabeklemme KL2521 erfassten ausgegebenen Impulsen.
MC_AxRtEncoderKL2531_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den von einer Schrittmotorendstufenklemme KL2531 erfassten ausgegebenen Impulsen.
MC_AxRtEncoderKL2541_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den von einer Schrittmotorendstufenklemme KL2541 erfassten ausgegebenen Impulsen.
MC_AxRtEncoderKL3042_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den Eingangsdaten einer KL3042 0..20mA-Eingangsklemme.
MC_AxRtEncoderKL5001_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den Eingangsdaten einer KL5001 SSI Klemme.
MC_AxRtEncoderKL5101_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den Eingangsdaten einer KL5101 oder KL5111 Inkremental-Klemme.
MC_AxRtEncoderLowCostStepper_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den Ausgangsdaten eines MC_AxRtDriveLowCostStepper_BkPlcMc Bausteins.
MC_AxRtEncoderM3120_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den Eingangsdaten eines M3120 Lightbus Moduls.
MC_AxRtEncoderSimulation_BkPlcMc | (internal use only) Ermittlung der Istposition der Achse aus den Ausgabedaten eines MC_AxRuntime_BkPlcMc Bausteins.
MC_AxRtReadPressureDiff_BkPlcMc | (internal use only) Ermittlung des differentiellen Istdrucks einer Achse.
MC_AxRtReadPressureSingle_BkPlcMc | (internal use only) Ermittlung des einseitigen Istdrucks einer Achse.
MC_AxRtVirtuelEncoder_BkPlcMc | (internal use only) In Vorbereitung.

System Function Blocks, Parameter

Name | Beschreibung
MC_AxAdsCommServer_BkPlcMc | Die Applikation wird mit den Fähigkeiten eines ADS-Servers ausgestattet.
MC_AxAdsReadDecoder_BkPlcMc | Der Funktionsbaustein dekodiert ADS-Read-Zugriffe für einen ADS-Server.
MC_AxAdsWriteDecoder_BkPlcMc | Der Funktionsbaustein dekodiert ADS-Write-Zugriffe für einen ADS-Server.
MC_AxParamAuxLabelsLoad_BkPlcMc | Die Beschriftungstexte für die kundenspezifischen Achsparameter aus einer Datei laden.
MC_AxParamLoad_BkPlcMc | Parameter einer Achse aus einer Datei laden.
MC_AxParamSave_BkPlcMc | Parameter einer Achse in eine Datei schreiben.

System Function Blocks, Generators

Name | Beschreibung
MC_AxRuntime_BkPlcMc | Stellwertgenerierung der Achse.
MC_AxRuntimeCos_BkPlcMc | (not recommended) Es wird ein Profil einer Beschleunigungsphase, einer weggesteuerten Bremsphase nach dem Prinzip der Cosinusfunktion und eine Zielannäherung mit Schleichgeschwindigkeit erzeugt.
MC_AxRuntimeCtrlBased_BkPlcMc | (not recommended) Es wird ein Profil mit einer Beschleunigungsphase, einer weggesteuerten Bremsphase nach dem Prinzip des Wurzelbildners und eine Zielannäherung mit Schleichgeschwindigkeit erzeugt.
MC_AxRuntimeTcPc_BkPlcMc | (not recommended) Es wird ein Profil mit zwei Beschleunigungsphasen, einer weggesteuerten Bremsphase nach dem Prinzip des Wurzelbildners und eine Zielannäherung mit Schleichgeschwindigkeit erzeugt.
MC_AxRunTimeTimeRamp_BkPlcMc | (not recommended) Es wird ein Profil mit zeitgesteuerten Beschleunigungs- und Bremsrampen erzeugt. Der Baustein arbeitet mit Positionsnocken anstelle eines Encoders.

System Function Blocks, Controllers

Name | Beschreibung
MC_AxCtrlAutoZero_BkPlcMc | Automatischer Nullpunktabgleich.
MC_AxCtrlPressure_BkPlcMc | Regler für eine aufbauend wirkende Druckregelung.
MC_AxCtrlPressureCompensation_BkPlcMc | Anpassung der Ausgabewerte einer Achse an den Ventildruckabfall.
MC_AxCtrlPullbackOnPressure_BkPlcMc | Regler für eine verdrängend wirkende Druckregelung.
MC_AxCtrlSlowDownOnPressure_BkPlcMc | Regler für eine ablösende Druckregelung.
MC_AxCtrlStepperDeStall_BkPlcMc | Überwachung der Bewegung einer Schrittmotorachse.
MC_AxCtrlVelocity_BkPlcMc | Regler für die Achs-Geschwindigkeit.
MC_AxCtrlVeloMoving_BkPlcMc | Regler für die Achs-Geschwindigkeit.

System Function Blocks, TableFunctions

Name | Beschreibung
MC_AxTableReadOutNonCyclic_BkPlcMc | (not recommended) Funktionsbaustein zur Ermittlung der einem Master-Wert zugeordneten Slave-Werte mit Hilfe einer Tabelle.

System Function Blocks, Message Logging

Name | Beschreibung
MC_AxRtLogAxisEntry_BkPlcMc | Eine achsbezogene Meldung wird in den LogBuffer der Library eingetragen.
MC_AxRtLogClear_BkPlcMc | Alle Einträge im LogBuffer löschen und initialisieren.
MC_AxRtLogEntry_BkPlcMc | Eine Meldung wird in den LogBuffer der Library eingetragen.
MC_AxRtLoggerDespool_BkPlcMc | Minimalanzahl von freien Meldungen im LogBuffer der Library sicher stellen.
MC_AxRtLoggerRead_BkPlcMc | Lesen einer Meldung aus dem LogBuffer der Library.
MC_AxRtLoggerSpool_BkPlcMc | Übertragung von Meldungen aus dem LogBuffer der Library in die Ereignisanzeige von Windows.

System Function Blocks, Runtime

Name | Beschreibung
MC_AxRtFinish_BkPlcMc | Anpassung des erzeugten Stellwerts an die Besonderheiten der Achse.
MC_AxRtCheckSyncDistance_BkPlcMc | Überwachung der Entfernung zwischen Referenznocken und Nullimpuls.
MC_AxRtGoErrorState_BkPlcMc | (not recommended) Die Achse wird in einen Störzustand versetzt.
MC_AxRtMoveChecking_BkPlcMc | Überwachung der Bewegung einer Achse.
MC_AxRtSetActPos_BkPlcMc | (not recommended) Nullpunktverschiebung einer Achse aktualisieren.
MC_AxRtSetControllerEnable_BkPlcMc | Aktualisiert das Steuerbit der Reglerfreigabe.
MC_AxRtSetFeedEnableMinus_BkPlcMc | Aktualisiert das Steuerbit der richtungsbezogenen Vorschubfreigabe in negativer Richtung.
MC_AxRtSetFeedEnablePlus_BkPlcMc | Aktualisiert das Steuerbit der richtungsbezogenen Vorschubfreigabe in positiver Richtung.
MC_AxRtSetReferencingCamSignal_BkPlcMc | Aktualisiert das Steuerbit des Referenzier-Nockens.
MC_AxStandardBody_BkPlcMc | Aufruf der üblichen Unterbestandteile einer Achse (Encoder, Generator, Finish, Drive).
MC_AxUtiAverageDerivative_BkPlcMc | Ermittlung der Ableitung eines Wertes durch numerische Differentiation über mehr als einen Zyklus.
MC_AxUtiCancelMonitoring_BkPlcMc | Achtung: Sicherheitshinweis beachten: Abbruch der Überwachung einer Funktion.
MC_AxUtiCheckTypedPointers | Absicherung der Pointerstruktur der Achse.
MC_AxUtiSlidingAverage_BkPlcMc | Ermittlung eines gleitenden Mittelwerts.
MC_AxUtiStandardInit_BkPlcMc | Initialisierung und Überwachung der Bestandteile einer Achse.
MC_HomeOnBlock_BkPlcMc | (internal use only) Auslösung und Überwachung einer Referenzfahrt mit Referenzieren am Block.
MC_HomeOnIndex_BkPlcMc | (internal use only) Auslösung und Überwachung einer Referenzfahrt mit Referenzieren an einer Nockenkante.
MC_HomeOnSync_BkPlcMc | (internal use only) Auslösung und Überwachung einer Referenzfahrt mit Referenzieren mit Nockenkante und Null-Impuls.

Datentypen: Enumerationen

Name | Beschreibung
E_TcMcCurrentStep | Diese Enumeration liefert Codes für die internen Zustände der Stellwertgeneratoren.
E_TcMcDriveType | Die Konstanten in dieser Enumeration werden zur Kennzeichnung von für die Stellwertausgabe einer Achse verwendeter Hardware benutzt.
E_TcMcEncoderType | Die Konstanten in dieser Enumeration werden zur Kennzeichnung von für die Istwerterfassung einer Achse verwendeter Hardware benutzt.
E_TcMCFbState | Diese Enumeration liefert Codes für den aktuellen Zustand einer Achse.
E_TcMcHomingType | Diese Enumeration liefert Codes für die Referenziermethode einer Achse.
E_TcMCParameter | Die Konstanten in dieser Auflistung werden zur Parameternummerierung benutzt.
E_TcMcProfileType | Die Konstanten in dieser Auflistung werden zur Kennzeichnung von Stellwertgeneratoren benutzt.
E_TcMCSetPositionMode | Die Konstanten in dieser Auflistung werden zur Kennzeichnung der Methode beim Setzen der Istposition von Achsen benutzt.
MC_Direction_BkPlcMc | Diese Enumeration liefert Codes für die Richtung einer Bewegung, wenn diese Information nicht in anderen Daten enthalten oder aus der Situation heraus feststellbar ist.
MC_StartMode_BkPlcMc | Die Konstanten in dieser Auflistung werden zur Kennzeichnung der Modi beim Starten von Achsen benutzt.

Datentypen: Strukturen

Name | Beschreibung
Axis_Ref_BkPlcMc | Eine Variable von diesem Typ enthält alle nötigen Variablen oder Pointer auf Variablen, die zu einer Achse gehören.
MC_CAM_ID_BkPlcMc | Eine Variable von diesem Typ enthält die Beschreibung einer zur Kopplung vorbereiteten Kurvenscheibe.
MC_CAM_REF_BkPlcMc | Eine Variable von diesem Typ enthält die Beschreibung einer bereitgestellten Kurvenscheibe.
MC_CAMSWITCH_REF_BkPlcMc | In Vorbereitung. (Definition noch nicht endgültig)
MC_OUTPUT_REF_BkPlcMc | In Vorbereitung. (Definition noch nicht endgültig)
MC_TRACK_REF_BkPlcMc | In Vorbereitung. (Definition noch nicht endgültig)
ST_TcMcAuxDataLabels | Eine Variable von diesem Typ enthält Beschriftungstexte der kundenspezifischen Achsparameter.
ST_TcHydAxParam | Eine Variable von diesem Typ enthält alle Parameter einer Achse.
ST_TcHydAxRtData | Eine Variable von diesem Typ enthält die Laufzeitdaten einer Achse.
ST_TcPlcMcLogBuffer | Eine Variable mit dieser Struktur bildet den LogBuffer der Library.
ST_TcPlcMcLogEntry | Eine Variable mit dieser Struktur enthält eine Meldung des LogBuffer der Library.
ST_TcPlcMcAx2000In | Diese Struktur enthält die Eingangsabbild-Variablen eines AX2000 Antriebsstellers.
ST_TcPlcMcAx2000Out | Eine Variable von diesem Typ enthält die Ausgangsabbild-Variablen eines AX2000 Antriebsstellers.
ST_TcPlcMcEncoderIn | Eine Variable von diesem Typ enthält die Eingangsabbild-Variablen eines Encoders.
ST_TcPlcMcEncoderOut | Diese Struktur enthält die Ausgangsabbild-Variablen eines Encoders.
ST_TcPlcMcDriveIn | Diese Struktur enthält die Eingangsabbild-Variablen eines Antriebs.
ST_TcPlcMcDriveOut | Eine Variable von diesem Typ enthält die Ausgangsabbild-Variablen eines Antriebs.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_CamTableSelect_BkPlcMc

FUNCTION_BLOCK MC_CamTableSelect_BkPlcMc

Der Funktionsbaustein initialisiert eine Variable vom Typ ST_TcPlcMcCamId und bereitet dadurch eine Kurvenscheibe für die Kopplung von zwei Achsen vor.

VAR_INPUT
    Execute:		BOOL;
    Periodic:		BOOL;
    MasterAbsolute:	BOOL;
    SlaveAbsolute:	BOOL;
ND_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
    CamTableId:	MC_CAM_ID_BkPlcMc;
END_VAR
VAR_INOUT
    Master:		Axis_Ref_BkPlcMc;
    Slave:		Axis_Ref_BkPlcMc;
    CamTable:		MC_CAM_REF_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet das Kommando.

Periodic: Nicht unterstützt: Hier ist derzeit FALSE zu übergeben.

MasterAbsolute: Nicht unterstützt: Hier ist derzeit TRUE zu übergeben.

SlaveAbsolute: Nicht unterstützt: Hier ist derzeit TRUE zu übergeben.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Initialisierung von CamTableId signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

CamTableId: Hier wird eine Variable des Typs MC_CAM_ID_BkPlcMc zurückgegeben, die an einen Baustein des Typs MC_CamIn_BkPlcMc weitergegeben werden kann.

Master, Slave: Hier ist jeweils die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

CamTable: Hier ist eine Variable des Typs MC_CAM_REF_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn CamTable.pTable nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn CamTable.nLastIdx nicht grösser als CamTable.nFirstIdx ist wird mit Error und ErrorID:=dwTcHydErrCdTblEntryCount reagiert.
  • Wenn CamTable.nFirstIdx und CamTable.nLastIdx eine Tabelle mit mehr als 100 Zeilen definieren wird mit Error und ErrorID:=dwTcHydErrCdTblLineCount reagiert.
  • Wenn MasterAbsolute oder SlaveAbsolute nicht gesetzt oder Periodic gesetzt ist wird mit Error und ErrorID:=dwTcHydErrCdNotSupport reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird CamTableId initialisiert. Dazu werden die Daten aus CamTable und die Eingangsdaten des Bausteins übernommen. CamTableId wird als gültig und verändert markiert. Mit Done wird die Abarbeitung des Kommandos gemeldet.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_Power_BkPlcMc

FUNCTION_BLOCK MC_Power_BkPlcMc

Der Funktionsbaustein dient zum Ansteuern eines externen Stellgeräts. Weitere Informationen zu diesem Thema finden Sie unter FAQ #9.

VAR_INPUT
    Enable:		BOOL;
    Enable_Positive:	BOOL;
    Enable_Negative:	BOOL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Status:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Ein TRUE an diesem Eingang schaltet ein externes Stellgerät einer Achse aktiv.

Enable_Positive: Ein TRUE an diesem Eingang schaltet die richtungsbezogene Freigabe eines externen Stellgeräts einer Achse für Bewegungen in positiver Richtung aktiv.

Enable_Negative: Ein TRUE an diesem Eingang schaltet die richtungsbezogene Freigabe eines externen Stellgeräts einer Achse für Bewegungen in positiver Richtung aktiv.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Status: Hier wird die Betriebsbereitschaft signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlermeldung bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Dieser Baustein dient zur Steuerung von externen Stellgeräten. Dabei kann es sich um Baugruppen zur Ventilansteuerung (Onboard Endstufe des Ventils oder Schaltschrank-Baugruppe), um Frequenzumrichter oder Servoverstärker handeln. Diese Geräte benötigen in der Regel ein digitales Signal zur Freigabe der Energieabgabe durch eine Leistungsstufe. Je nach Ausführung des Geräts können zusätzlich die Bewegungsrichtungen "Positiv" und "Negativ" gezielt aktiv geschaltet werden.

Die Eingangssignale des Bausteins werden in die Interfaces zum Peripherie-Gerät weitergereicht. Zusätzlich wird durch Enable eine Fehlerüberwachung aktiviert.

Hinweis: Wenn keine Steuerung und Überwachung eines externen Stellgeräts benötigt wird kann dieser Baustein entfallen.

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Status ist dann FALSE.
  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Status ist dann FALSE.
  • Ist in nDrive_Type in pStAxRtData der Wert iTcMc_DriveAx2000 eingestellt, wird wie folgt weiter verfahren:
    • Ist einer der Pointer pStAxAx2000In und pStAxAx2000Out in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveIn bzw. dwTcHydErrCdPtrPlcDriveOut. Status ist dann FALSE.
    • Wenn in der Kommunikation mit dem AX-Gerät eine Störung erkannt wird oder im pStAxAx2000In Interface eine Störmeldung des AX-Geräts auftritt reagiert der Baustein mit Error und einem ErrorID, der in den Globalen Konstanten der Bibliothek definiert ist. Status ist dann FALSE und die Achse wird in einen Störzustand mit dem Achsfehler dwTcHydErrCdDriveNotReady versetzt.
    • Andernfalls wird am Status der Wert von Enable zurückgegeben.
  • Ist in nDrive_Type in pStAxRtData der Wert iTcMc_DriveKL2531 oder iTcMc_DriveKL2541 eingestellt, wird wie folgt weiter verfahren:
    • Die Pointer pStAxDriveInput and pStAxDriveOutput in Axis_Ref_BkPlcMc werden überprüft. Sind diese Pointer nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveIn bzw. dwTcHydErrCdPtrPlcDriveOut. Status ist dann FALSE.
    • Wenn in der Kommunikation mit der E/A-Klemme eine Störung erkannt wird oder im pStAxDriveInput Interface eine Störmeldung der Klemme auftritt reagiert der Baustein mit Error und einem ErrorID, der in den Globalen Konstanten der Bibliothek definiert ist. Status ist dann FALSE und die Achse wird in einen Störzustand mit dem Achsfehler dwTcHydErrCdDriveNotReady versetzt.
    • Enable wird benutzt um die Klemmenendstufe durch ein Bit in pStAxDriveOutput.bKL2531Ctrl zu aktivieren. Das Bereit-Signal in pStAxDriveInput.bKL2531State wird als Status zurückgegeben.
    • Der Wert von Enable_Positive wird bei fehlerfreiem Zustand des Antriebsinterfaces mit der Maske dwTcHydDcDwFdPosEna in nDeCtrlDWord von pStAxRtData eingetragen.
    • Der Wert von Enable_Negative wird bei fehlerfreiem Zustand des Antriebsinterfaces mit der Maske dwTcHydDcDwFdNegEna in nDeCtrlDWord von pStAxRtData eingetragen.
  • Andernfalls wird eine Überprüfung der Pointer pStAxDriveInput und pStAxDriveOutput in Axis_Ref_BkPlcMc vorgenommen. Sind diese Pointer nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveIn bzw. dwTcHydErrCdPtrPlcDriveOut. Status ist dann FALSE.
    • Andernfalls wird am Status der Wert von bPowerOk aus pStAxDriveInput zurückgegeben.
  • Der Wert von Enable wird bei fehlerfreiem Zustand des Antriebsinterfaces mit der Maske dwTcHydDcDwCtrlEnable in nDeCtrlDWord von pStAxRtData eingetragen.
  • Der Wert von Enable_Positive wird bei fehlerfreiem Zustand des Antriebsinterfaces mit der Maske dwTcHydDcDwFdPosEna in nDeCtrlDWord von pStAxRtData eingetragen.
  • Der Wert von Enable_Negative wird bei fehlerfreiem Zustand des Antriebsinterfaces mit der Maske dwTcHydDcDwFdNegEna in nDeCtrlDWord von pStAxRtData eingetragen.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ReadActualPosition_BkPlcMc

FUNCTION_BLOCK MC_ReadActualPosition_BkPlcMc

Der Funktionsbaustein ermittelt die aktuelle Position einer Achse.

VAR_INPUT
    Enable:		BOOL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
    Position:		LREAL;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst eine Aktualisierung des Positionswertes aus.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Ermittlung der Istposition signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Position: Die Istposition.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Enable hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Befindet sich die Achse in einem gestörten Zustand und ist die Ursache ein Encoder-Problem wird mit Error und ErrorID:=Errorcode des Encoders reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition ermittelt und Done gemeldet.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ReadActualTorque_BkPlcMc

FUNCTION_BLOCK MC_ReadActualTorque_BkPlcMc

Der Funktionsbaustein ermittelt die aktuelle Istkraft bzw. den Istdruck einer Achse.

VAR_INPUT
    Enable:		BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Busy:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
    Torque:		LREAL;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst eine Aktualisierung des Geschwindigkeitswertes aus.

Done: Hier wird die erfolgreiche Ermittlung der Geschwindigkeit signalisiert.

Busy: Dieser Ausgang ist für die Dauer der Abarbeitung des Kommandos auf TRUE.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Torque: Die Istkraft bzw. der Istdruck.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Enable hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Befindet sich die Achse in einem gestörten Zustand und ist die Ursache ein Encoder-Problem wird mit Error und ErrorID:=Errorcode des Encoders reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istkraft bzw. der Istdruck ermittelt und Done gemeldet.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ReadActualVelocity_BkPlcMc

FUNCTION_BLOCK MC_ReadActualVelocity_BkPlcMc

Der Funktionsbaustein ermittelt die aktuelle Geschwindigkeit einer Achse.

VAR_INPUT
    Enable:		BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Busy:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
    Velocity:		LREAL;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst eine Aktualisierung des Geschwindigkeitswertes aus.

Done: Hier wird die erfolgreiche Ermittlung der Geschwindigkeit signalisiert.

Busy: Dieser Ausgang ist für die Dauer der Abarbeitung des Kommandos auf TRUE.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Velocity: Die Istgeschwindigkeit.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Enable hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Befindet sich die Achse in einem gestörten Zustand und ist die Ursache ein Encoder-Problem wird mit Error und ErrorID:=Errorcode des Encoders reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Geschwindigkeit ermittelt und Done gemeldet.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ReadAxisError_BkPlcMc

FUNCTION_BLOCK MC_ReadAxisError_BkPlcMc

Der Funktionsbaustein ermittelt den aktuellen Errorcode einer Achse.

VAR_INPUT
    Enable:		BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst eine Aktualisierung des Errorcodes aus.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Ermittlung der Istposition signalisiert.

Error: Hier wird der aktuelle Errorcode signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Enable hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Befindet sich die Achse in einem gestörten Zustand wird mit Error und ErrorID:=Errorcode der Achse reagiert.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ReadBoolParameter_BkPlcMc

FUNCTION_BLOCK MC_ReadBoolParameter_BkPlcMc

Der Funktionsbaustein liest die boolschen Parameter einer Achse aus. Für nicht boolsche Parameter steht der Baustein MC_ReadParameter_BkPlcMc zur Verfügung.

VAR_INPUT
    Enable:		BOOL;
    ParameterNumber:	INT;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
    Value:		BOOL;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst einen Lesevorgang aus.

ParameterNumber: Diese Kennummer legt den auszulesenden Parameter fest. Es sollten nur benannte Konstanten aus E_TcMCParameter verwendet werden.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Durchführung des Lesevorgangs signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Value: Hier wird der Wert des Parameters zur Verfügung gestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Enable hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Wenn an ParameterNumber ein nicht unterstützter Wert angelegt wurde wird mit Error und ErrorID:=dwTcHydErrCdNotSupport reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten steht an Value der gewünschte Parameterwert zur Verfügung und Done wird gemeldet.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ReadDigitalOutput_BkPlcMc

FUNCTION_BLOCK MC_ReadDigitalOutput_BkPlcMc

Der Funktionsbaustein ermittelt den aktuellen Zustand eines digitalen Ausgangs eines Nockenschaltwerks.

VAR_INPUT
    Enable:		BOOL;
    OutputNumber:	INT;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Busy:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
    Value:		BOOL;
END_VAR
VAR_INOUT
    Outputs:		MC_OUTPUT_REF_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst eine Aktualisierung des Zustands aus.

OutputNumber: Die Nummer des zu ermittelnden Ausgangs.

Valid: Hier wird die erfolgreiche Ermittlung des Zustands signalisiert.

Busy: Dieser Ausgang ist für die Dauer der Abarbeitung des Kommandos auf TRUE.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Value: Der Zustand des digitalen Ausgangs.

Outputs: Hier ist die Adresse einer Variablen vom Typ MC_OUTPUT_REF_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei einem TRUE an Enable untersucht der Baustein die übergebene Parameter. Dabei kann ein Problem erkannt und gemeldet werden:

  • Wenn der Wert von OutputNumber nicht im zulässigen Bereich [0..31] liegt wird mit Error und ErrorID:=dwTcHydErrCdIllegalOutputNumber reagiert.

Wenn dies Überprüfung ohne Problem durchgeführt werden konnten wird der Zustand des digitalen Ausgangs ermittelt und Valid gemeldet.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ReadParameter_BkPlcMc

FUNCTION_BLOCK MC_ReadParameter_BkPlcMc

Der Funktionsbaustein liest die nicht boolschen Parameter einer Achse aus. Für boolsche Parameter steht der Baustein MC_ReadBoolParameter_BkPlcMc zur Verfügung.

VAR_INPUT
    Enable:		BOOL;
    ParameterNumber:	INT;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
    Value:		LREAL;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst einen Lesevorgang aus.

ParameterNumber: Diese Kennummer legt den auszulesenden Parameter fest. Es sollten nur benannte Konstanten aus E_TcMCParameter verwendet werden.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Durchführung des Lesevorgangs signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Value: Hier wird der Wert des Parameters zur Verfügung gestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Enable hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Wenn an ParameterNumber ein nicht unterstützter Wert angelegt wurde wird mit Error und ErrorID:=dwTcHydErrCdNotSupport reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten steht an Value der gewünschte Parameterwert zur Verfügung und Done wird gemeldet.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ReadStatus_BkPlcMc

FUNCTION_BLOCK MC_ReadStatus_BkPlcMc

Der Funktionsbaustein ermittelt den aktuellen Errorcode einer Achse.

VAR_INPUT
    Enable:			BOOL;
END_VAR
VAR_OUTPUT
    Busy:			BOOL;
    Done:			BOOL;
    Error:			BOOL;
    ErrorID:			UDINT;
    Errorstop:		BOOL;
    Stopping:			BOOL;
    StandStill:		BOOL;
    DiscreteMotion:		BOOL;
    ContinousMotion:		BOOL;
    SynchronizedMotion:	BOOL;
    Homing:			BOOL;
    ConstantVelocity:		BOOL;
    Accelerating:		BOOL;
    Decelerating:		BOOL;
END_VAR
VAR_INOUT
    Axis:			Axis_Ref_BkPlcMc;
END_VAR

Enable: Ein TRUE Zustand an diesem Eingang aktiviert eine Aktualisierung des Bausteins aus.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Ermittlung der Istposition signalisiert.

Error: Hier wird der aktuelle Errorcode signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Errorstop: Dieses Signal zeigt an, dass die Achse eines Fehlers in einen nicht betriebsbereiten Zustand versetzt wurde. Dieser Zustand ist nur durch die Aktivierung eines MC_Reset_BkPlcMc oder MC_ResetAndStop_BkPlcMc Bausteins aufhebbar.

Stopping: Dieses Signal zeigt an, dass eine aktive Bewegung der Achse durch einen MC_Stop_BkPlcMc oder MC_ResetAndStop_BkPlcMc Baustein beendet wird. Sobald die Achse den Stillstand erreicht hat wird dieses Signal gelöscht.

StandStill: Dieses Signal zeigt an, dass die Achse weder gestört noch aktiv ist.

DiscreteMotion: Dieses Signal zeigt an, dass die Achse eine eigenständige (nicht durch eine Kopplung zustande gekommene) Bewegung mit definiertem Ziel ausführt.

ContinousMotion: Dieses Signal zeigt an, dass die Achse eine eigenständige (nicht durch eine Kopplung zustande gekommene) Bewegung mit definierter Geschwindigkeit, aber ohne festgelegtes Ziel ausführt.

SynchronizedMotion: Dieses Signal zeigt an, dass die Achse durch eine Getriebekopplung kontrolliert wird.

Homing: Dieses Signal zeigt an, dass die Achse eine Referenzfahrt ausführt.

ConstantVelocity: Dieses Signal zeigt an, dass die Achse mit konstanter Geschwindigkeit bewegt wird.

Accelerating: Dieses Signal zeigt an, dass die Achse ihre Geschwindigkeit einem vorgesehenen Wert annähert. Hinweis: Dies bedeutet nicht immer eine Betragserhöhung der Geschwindigkeit: beim Starten einer bereits fahrenden Achse kann es vorkommen, dass die Achse entgegen dem aktuellen Geschwindigkeitsvorzeichen beschleunigt, um eine vorgesehene Geschwindigkeit in Gegenrichtung aufzubauen. Dies ist aus Sicht der ursprünglichen Bewegung eine Verzögerung, aus Sicht der aktuellen (neuen) Bewegung jedoch eine Beschleunigung.

Decelerating: Dieses Signal zeigt an, dass die Achse ihre Geschwindigkeit reduziert, um eine Bewegung mit einer geringeren als der aktuellen Geschwindigkeit fortzusetzen oder zu beenden.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Wenn an Enable TRUE anliegt untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.

Ein LOW Zustand an Enable löscht alle anstehenden Ausgangssignale.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_SetReferenceFlag_BkPlcMc

FUNCTION_BLOCK MC_SetReferenceFlag_BkPlcMc

(Funktion ist nicht durch PLCopen definiert) Der Funktionsbaustein definiert das Referenzier-Flag einer Achse.

VAR_INPUT
    Execute:		BOOL;
    ReferenceFlag:	BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Busy:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang setzt die Istposition der Achse.

ReferenceFlag: Der neue Zustand des Referenzier-Flags der Achse.

Done: Hier wird die erfolgreiche Abarbeitung des Befehls signalisiert.

Busy: Dieser Ausgang ist für die Dauer der Abarbeitung des Kommandos auf TRUE.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird das Referenzier-Flag in ST_TcHydAxRtData.nStateDWord aktualisiert. Dazu wird abhängig von ReferenceFlag das entsprechende Bit mit dwTcHydNsDwReferenced gelöscht oder gesetzt. Die erfolgreiche Ausführung der Funktion wird mir Done signalisiert. Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_Reset_BkPlcMc

FUNCTION_BLOCK MC_Reset_BkPlcMc

Der Funktionsbaustein beseitigt eines Störzustand und versetzt die Achse in einen betriebsbereiten Zustand.

VAR_INPUT
    Execute:		BOOL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang löst einen Achsreset aus.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Durchführung des Achsreset signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Achsreset durchgeführt, die Achse wird soweit möglich in einem betriebsbereiten Zustand versetzt und Done gemeldet. Ist dies nicht möglich wird mit Error und ErrorID:=Achs-ErrorCode reagiert.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale.

Hinweis: Bei einigen Antriebstypen ist zur Behebung bestimmter Fehler ein Signalaustausch mit einem externen Gerät erforderlich. Während der dafür benötigten Zeit kann der Baustein kein endgültiges Ergebnis (Done oder Error) melden, sondern signalisiert mit Busy die andauernde Bearbeitung der Funktion.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_ResetAndStop_BkPlcMc

FUNCTION_BLOCK MC_ResetAndStop_BkPlcMc

Der Funktionsbaustein versetzt eine gestörte Achse in einen betriebsbereiten Zustand. Wenn die Achse einen Fahrauftrag abarbeitet wird dieser abgebrochen und die dazu nötige Stopp-Operation wird überwacht.

VAR_INPUT
    Execute:		BOOL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang löst einen Achsreset und eine Stopoperation aus.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Durchführung des Achsreset signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Ist ein anstehender Störzustand der Achse durch die Reset-Operation nicht erfolgreich zu beheben wird mit Error und ErrorID:=Achs-ErrorCode reagiert.
  • Wird die Achse im Verlauf einer eventuell erforderlichen Stop-Operation in einen Störzustand versetzt wird mit Error und ErrorID:=Achs-ErrorCode reagiert.

Nach erfolgreichem Abschluss beider Operationen wird Done gemeldet. Die Achse ist dann störungsfrei und im Stillstand.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale.

Hinweis: Wenn die Achse eine Bewegung ausführt wird sie bis zum Stillstand abgebremst. Zusätzlich ist bei einigen Antriebstypen zur Behebung bestimmter Fehler ein Signalaustausch mit einem externen Gerät erforderlich. Während der dafür benötigten Zeit kann der Baustein kein endgültiges Ergebnis (Done oder Error) melden, sondern signalisiert mit Busy die andauernde Bearbeitung der Funktion.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_SetOverride_BkPlcMc

FUNCTION_BLOCK MC_SetOverride_BkPlcMc

Der Funktionsbaustein setzt den Override einer Achse.

Achtung: Dieser Baustein wirkt nur bei Verwendung des Profiltyps iTcMc_ProfileCtrlBased.

VAR_INPUT
    Execute:		BOOL;
    VelFactor:	LREAL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Busy:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang setzt die Istposition der Achse.

VelFactor: Der neue Override der Achse.

Done: Hier wird die erfolgreiche Abarbeitung des Befehls signalisiert.

Busy: Dieser Ausgang ist für die Dauer der Abarbeitung des Kommandos auf TRUE.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
Wenn diese Überprüfung ohne Problem durchgeführt werden konnte wird der als VelOverride übergebene Wert auf den Bereich 0.0 bis 1.0 begrenzt und in Axis.pStAxParams^.fOverride eingetragen. Done wird auf TRUE gesetzt.

Eine fallende Flanke an Execute löscht alle Ausgänge.

Alle durch eine Override-Änderung hervorgerufenen Geschwindigkeitsänderungen werden entsprechend der maximal zulässigen Beschleunigungen und Verzögerungen begrenzt.

Hinweis: Um ein reproduzierbares Verhalten bei der Zielanfahrt zu garantieren wird durch den Override die Fahrgeschwindigkeit nur bis auf pStAxParams.fCreepSpeed reduziert. Dadurch ist es nicht möglich, die Achse durch einen Override von 0.0 in der Bewegung zu stoppen.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_SetPosition_BkPlcMc

FUNCTION_BLOCK MC_SetPosition_BkPlcMc

Der Funktionsbaustein setzt die Istposition einer Achse.

VAR_INPUT
    Execute:		BOOL;
    Position:		LREAL;
    Mode:		BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Busy:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang setzt die Istposition der Achse.

Position: Die neue Istposition der Achse.

Mode: Dieser Parameter legt den Arbeitsmodus fest. Bei Mode=TRUE wird die Istposition um Position geändert, bei Mode=FALSE wird die Istposition auf Position gesetzt.

Done: Hier wird die erfolgreiche Abarbeitung des Befehls signalisiert.

Busy: Dieser Ausgang ist für die Dauer der Abarbeitung des Kommandos auf TRUE.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Als nächstes wird überprüft, ob die durch Position und Mode festgelegte neue Istposition hinter einem aktiven Software-Endschalter liegt. In diesem Fall wird mit Error und ErrorID:=dwTcHydErrCdSoftEnd reagiert.
  • In Abhängigkeit vom in Axis.pStAxParams^.nEnc_Type festgelegten Encodertyp wird entweder ST_TcHydAxRtData.fEnc_RefShift oder ST_TcHydAxParam.fEnc_ZeroShift so aktualisiert, dass die Istposition der Achse den geforderten Wert annimmt. Ist der Encodertyp nicht bekannt oder der Encoder läst ein Setzen des Istwerts nicht zu wird mit Error und ErrorID:=dwTcHydErrCdEncType reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten werden alle ebenfalls betroffenen Elemente in ST_TcHydAxRtData automatisch aktualisiert. Dadurch ist dieser Baustein auch bei Achsen aktivierbar, die eine aktive Bewegung ausführen. Die erfolgreiche Ausführung der Funktion wird mir Done signalisiert. Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_WriteBoolParameter_BkPlcMc

FUNCTION_BLOCK MC_WriteBoolParameter_BkPlcMc

Der Funktionsbaustein schreibt die boolschen Parameter einer Achse aus. Für nicht boolsche Parameter steht der Baustein MC_WriteParameter_BkPlcMc zur Verfügung.

VAR_INPUT
    Enable:		BOOL;
    ParameterNumber:	INT;
    Value:		BOOL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst einen Schreibvorgang aus.

ParameterNumber: Diese Kennummer legt den auszulesenden Parameter fest. Es sollten nur benannte Konstanten aus E_TcMCParameter verwendet werden.

Value: Hier ist der Wert des Parameters bereit zu stellen.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Durchführung des Schreibvorgangs signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Enable hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Wenn an ParameterNumber ein nicht unterstützter Wert angelegt wurde wird mit Error und ErrorID:=dwTcHydErrCdNotSupport reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird Value in den gewünschte Parameterwert eingetragen und Done wird gemeldet.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_WriteDigitalOutput_BkPlcMc

FUNCTION_BLOCK MC_WriteDigitalOutput_BkPlcMc

Der Funktionsbaustein definiert den Zustand eines digitalen Ausgangs eines Nockenschaltwerks.

VAR_INPUT
    Execute:		BOOL;
    OutputNumber:	INT;
    Value:		BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Busy:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Outputs:		MC_OUTPUT_REF_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang löst eine Aktualisierung des Zustands aus.

OutputNumber: Die Nummer des zu ermittelnden Ausgangs.

Value: Der Zustand des digitalen Ausgangs.

Done: Hier wird die erfolgreiche Ermittlung des Zustands signalisiert.

Busy: Dieser Ausgang ist für die Dauer der Abarbeitung des Kommandos auf TRUE.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Outputs: Hier ist die Adresse einer Variablen vom Typ MC_OUTPUT_REF_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei einer steigenden Flanke an Execute untersucht der Baustein die übergebene Parameter. Dabei kann ein Problem erkannt und gemeldet werden:

  • Wenn der Wert von OutputNumber nicht im zulässigen Bereich [0..31] liegt wird mit Error und ErrorID:=dwTcHydErrCdIllegalOutputNumber reagiert.

Wenn dies Überprüfung ohne Problem durchgeführt werden konnten wird der Zustand des digitalen Ausgangs entsprechend dem Wert von Value definiert und Done gemeldet.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale.


TcPlcHydraulics: PLCopen Motion Control: Administrative: MC_WriteParameter_BkPlcMc

FUNCTION_BLOCK MC_WriteParameter_BkPlcMc

Der Funktionsbaustein schreibt die nicht boolschen Parameter einer Achse aus. Für boolsche Parameter steht der Baustein MC_WriteBoolParameter_BkPlcMc zur Verfügung.

VAR_INPUT
    Enable:		BOOL;
    ParameterNumber:	INT;
    Value:		LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Enable: Eine steigende Flanke an diesem Eingang löst einen Schreibvorgang aus.

ParameterNumber: Diese Kennummer legt den auszulesenden Parameter fest. Es sollten nur benannte Konstanten aus E_TcMCParameter verwendet werden.

Value: Hier ist der Wert des Parameters bereit zu stellen.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Durchführung des Schreibvorgangs signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Enable hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Wenn an ParameterNumber ein nicht unterstützter Wert angelegt wurde wird mit Error und ErrorID:=dwTcHydErrCdNotSupport reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird Value in den gewünschte Parameterwert eingetragen und Done wird gemeldet.

Eine fallende Flanke an Enable löscht alle anstehenden Ausgangssignale.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_CamIn_BkPlcMc

FUNCTION_BLOCK MC_CamIn_BkPlcMc

Der Funktionsbaustein startet und überwacht eine Kurvenscheiben-Kopplung zwischen zwei Achsen.

VAR_INPUT
    Execute:		BOOL;
    MasterOffset:	LREAL:=0.0;
    SlaveOffset:	LREAL:=0.0;
    MasterScaling:	LREAL:=0.0;
    SlaveScaling:	LREAL:=0.0;
    StartMode:	MC_StartMode_BkPlcMc:=MC_StartMode_Absolute;
    CamTableId:	MC_CAM_ID_BkPlcMc;
ND_VAR
VAR_OUTPUT
    Busy:		BOOL;
    InSync:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
    EndOfProfile:	BOOL;
END_VAR
VAR_INOUT
    Master:		Axis_Ref_BkPlcMc;
    Slave:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Kopplung.

MasterOffset, MasterScaling: Diese Werte werden mit der Istposition des Masters verrechnet, bevor der sich ergebende Wert in der Master-Spalte der Tabelle gesucht wird.

SlaveOffset, SlaveScaling: Diese Werte werden mit der Slave-Position aus der Tabelle verrechnet.

StartMode: Ein Wert aus MC_StartMode_BkPlcMc, der das Verhalten der Slave-Achse beim aktivieren der Kopplung festlegt.

CamTableId: Hier ist eine Variable des Typs MC_CAM_ID_BkPlcMc zu übergeben, die von einem Baustein des Typs MC_CamTableSelect_BkPlcMc initialisiert wurde.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

InSync: Hier wird das erstmalige erfolgreiche Aufsynchronisieren der Achsen signalisiert. Das Signal bleibt anschließend auch dann anstehen, wenn die Synchronisierung zu einem späteren Zeitpunkt zeitweise oder bleibend aussetzt.

CommandAborted: Hier wird ein Abbruch der Kopplung signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

EndOfProfile: Hier wird signalisiert, ob der Master das Ende des definierten Bereichs erreicht hat.

Master, Slave: Hier ist jeweils die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn CamTableId.bValidated nicht durch einen Baustein vom Typ MC_CamTableSelect_BkPlcMc gesetzt wurde wird mit Error und ErrorID:=dwTcHydErrCdTblNoInitreagiert.
  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc für den Master oder den Slave nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc für den Master oder den Slave nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Wenn sich entweder Master oder Slave nicht im Ruhezustand befinden wird mit Error und ErrorID:=dwTcHydErrCdNotStartable reagiert.
  • Wenn als StartMode der Wert MC_StartMode_RampIn vorgegeben wird reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdNotSupport reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Kopplung initiiert. In Abhängigkeit von StartMode wird die Bezugsposition für Slave entweder auf den Wert 0.0 oder mit der aktuellen Istposition von Slave festgelegt. Die Achse befindet sich ab jetzt im Zustand McState_Synchronizedmotion und der Baustein beginnt mit der Berechnung und Überwachung der Kopplung.

Sollposition und Sollgeschwindigkeit von Slave werden in Abhängigkeit von Istposition und Sollgeschwindigkeit des Masters und der Tabelle berechnet.

Wenn bei aktiver Kopplung die Slaveachse erstmalig die durch die Kopplung geforderte Geschwindigkeit erreicht wird dies am Ausgang InGear signalisiert. Da die Kopplung derzeit nur im Stillstand aktiviert werden kann ist dies unmittelbar der Fall. Sollte während bei aktiver Kopplung die Slaveachse aus einem beliebigen Grund den Vorgaben nicht folgen können bleibt InGear unverändert.

Tritt bei aktiver Kopplung im Bewegungsgenerator ein Fehlercode auf wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert.

Eine fallende Flanke an Execute beendet weder die Berechnung noch die Überwachung der Kopplung. Dies kann nur dadurch erreicht werden, dass die Kopplung durch einen MC_CamOut_BkPlcMc Baustein oder das Auftreten eines Fehler bewirkt werden. Erst dann werden alle anstehenden Ausgangssignale gelöscht.

Hinweis: Dieser Baustein übernimmt zeitweise die Aufgabe der Sollwertgenerierung. Um dies zu signalisieren wird Busy nicht nur bis zum Übergang in die Synchronität TRUE, sondern bleibt bis zum Auflösen der Kopplung anstehen.

Achtung: Es ist zwingend erforderlich, diesen Baustein zyklisch aufzurufen wenn Busy auf TRUE steht. Anschließend ist der Baustein noch mindestens einmal mit Execute:=FALSE aufzurufen.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_CamOut_BkPlcMc

FUNCTION_BLOCK MC_CamOut_BkPlcMc

Der Funktionsbaustein löst eine durch einen MC_CamIn_BkPlcMc Baustein gestartete Kurvenscheiben-Kopplung zwischen zwei Achsen.

VAR_INPUT
    Execute:		BOOL;
ND_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Slave:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Kopplung.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung des Kommandos signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Slave: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Wenn sich die Achse nicht gekoppelt ist reagiert der Baustein ohne weitere Prüfungen oder Aktivitäten mit Done.
  • Ist die aktuelle Sollgeschwindigkeit der Achse kleiner als die von pStAxParams.fCreepSpeed festgelegte Geschwindigkeit geht die Achse unmittelbar in McState_Standstill über und baut die Restgeschwindigkeit ab. Es wird Done signalisiert und alle weiteren Überprüfungen oder Aktivitäten werden unterlassen.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten und nicht bereits aus einem der genannten Gründe Done signalisiert wird erfolgt eine Umwandlung der von der Kurvenscheibenkopplung kontrollierten Bewegung in eine vom Master unabhängige endlose Bewegung mit gleicher Geschwindigkeit und Richtung. Wenn diese Umwandlung erfolgreich ausgeführt wurde wird Done signalisiert, andernfalls wird mit Error und ErrorID:=Fehlercode reagiert.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen und ist nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_DigitalCamSwitch_BkPlcMc

FUNCTION_BLOCK MC_DigitalCamSwitch_BkPlcMc

Der Funktionsbaustein .

VAR_INPUT
    Enable:		BOOL;
    EnableMask:	DWORD;
END_VAR
VAR_OUTPUT
    InOperation:	BOOL;
    Busy:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
    Switches:		ARRAY [ciBkPlcMc_CamSwitchRef_MinIdx..ciBkPlcMc_CamSwitchRef_MaxIdx] OF MC_CAMSWITCH_REF_BkPlcMc;
    Outputs:		MC_OUTPUT_REF_BkPlcMc;
    TrackOptions:	ARRAY [ciBkPlcMc_TrackRef_MinIdx..ciBkPlcMc_TrackRef_MaxIdx] OF MC_TRACK_REF_BkPlcMc;
END_VAR

Enable: Dieser Eingang kontrolliert alle Aktivitäten des Bausteins.

EnableMask: Eine Maske, deren Bits die Freigabe der Ausgängen in Outputs festlegen.

InOperation: Hier wird signalisiert, ob der Baustein aktiv ist.

Busy: Dieser Ausgang ist für die Dauer der Abarbeitung des Kommandos auf TRUE.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Switches: Hier ist ein Array vom Typ MC_CAMSWITCH_REF_BkPlcMc zu übergeben.

Outputs: Hier ist die Adresse einer Variablen vom Typ MC_OUTPUT_REF_BkPlcMc zu übergeben.

TrackOptions: Hier ist ein Array vom Typ MC_TRACK_REF_BkPlcMc zu übergeben.

Verhalten des Bausteins


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_GearIn_BkPlcMc

FUNCTION_BLOCK MC_GearIn_BkPlcMc

Der Funktionsbaustein startet und überwacht eine Kopplung zwischen zwei Achsen.

VAR_INPUT
    Execute:		BOOL;
    RatioNumerator:	INT;
    RatioDenominator:	INT;
    Acceleration:	LREAL;
    Deceleration:	LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    InGear:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Master:		Axis_Ref_BkPlcMc;
    Slave:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Kopplung.

RatioNumerator, RatioDenominator: Diese Parameter beschreiben den Kopplungsfaktor in der Form eines Getriebes.

Acceleration: Die für das Aufsynchronisieren zulässige Beschleunigung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Deceleration: Die für das Aufsynchronisieren zulässige Verzögerung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

InGear: Hier wird das erstmalige erfolgreiche Aufsynchronisieren der Achsen signalisiert. Das Signal bleibt anschließend auch dann anstehen, wenn die Synchronisierung zu einem späteren Zeitpunkt zeitweise oder bleibend aussetzt.

CommandAborted: Hier wird ein Abbruch der Kopplung signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Master, Slave: Hier ist jeweils die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc für den Master oder den Slave nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc für den Master oder den Slave nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Als nächstes wird überprüft, ob RatioDenominator gleich 0 ist. In diesem Fall wird mit Error und ErrorID:=dwTcHydErrCdIllegalGearFactor reagiert.
  • Derzeit kann die Kopplung nur dann aktiviert werden, wenn sowohl der Master als auch der Slave im Stillstand sind. Andernfalls wird mit Error und ErrorID:=dwTcHydErrCdNotStartable reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn der Bewegungsalgorithmus bereits einen Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Kopplung initiiert. Die Achse befindet sich ab jetzt im Zustand McState_Synchronizedmotion und der Baustein beginnt mit der Überwachung der Kopplung.

Wenn bei aktiver Kopplung die Slaveachse erstmalig die durch die Kopplung geforderte Geschwindigkeit erreicht wird dies am Ausgang InGear signalisiert. Da die Kopplung derzeit nur im Stillstand aktiviert werden kann ist dies unmittelbar der Fall. Sollte während bei aktiver Kopplung die Slaveachse aus einem beliebigen Grund den Vorgaben nicht folgen können bleibt InGear unverändert.

Tritt bei aktiver Kopplung im Bewegungsgenerator ein Fehlercode auf wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Kopplung auf FALSE gesetzt bleibt die bestehende Kopplung unbeeinflusst wirksam.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_GearOut_BkPlcMc

FUNCTION_BLOCK MC_GearOut_BkPlcMc

Der Funktionsbaustein löst eine Kopplung zwischen zwei Achsen.

VAR_INPUT
    Execute:		BOOL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Slave:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang löst die Kopplung.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung der Bewegung signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Slave: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Wenn die Achse nicht in einer Getriebekopplung betrieben wird signalisiert der Baustein unmittelbar Done und unterlässt alle weiteren Überprüfungen oder Aktivitäten.
  • Ist die aktuelle Sollgeschwindigkeit der Achse kleiner als die von pStAxParams.fCreepSpeed festgelegte Geschwindigkeit geht die Achse unmittelbar in McState_Standstill über und baut die Restgeschwindigkeit ab. Es wird Done signalisiert und alle weiteren Überprüfungen oder Aktivitäten werden unterlassen.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten und nicht bereits aus einem der genannten Gründe Done signalisiert wird erfolgt eine Umwandlung der von der Getriebekopplung kontrollierten Bewegung in eine vom Master unabhängige endlose Bewegung mit gleicher Geschwindigkeit und Richtung. Wenn diese Umwandlung erfolgreich ausgeführt wurde wird Done signalisiert, andernfalls wird mit Error und ErrorID:=Fehlercode reagiert.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_Home_BkPlcMc

FUNCTION_BLOCK MC_Home_BkPlcMc

Der Funktionsbaustein startet und überwacht die Referenzfahrt einer Achse. Dazu werden Bausteine der Typen MC_HomeOnBlock_BkPlcMc, MC_HomeOnIndex_BkPlcMc oder MC_HomeOnSync_BkPlcMc aufgerufen.

VAR_INPUT
    Execute:		BOOL;
    Position:		LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Referenzfahrt.

Position: Die Referenzposition.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung der Referenzfahrt signalisiert.

CommandAborted: Hier wird ein Abbruch der Referenzfahrt signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Eine Referenzfahrt kann nur aus einem fehlerfreien Stillstand begonnen werden. Ist dies nicht der Fall wird mit Error und ErrorID:=dwTcHydErrCdNotStartable bzw. dem vorliegenden Errorcode reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn eine der in den Achs-Parametern angegebene Geschwindigkeiten zu klein (weniger als 1% der Referenzgeschwindigkeit) ist wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Referenzfahrt initiiert. Der genaue Ablauf wird von nEnc_HomingType in den Achs-Parametern festgelegt.

Sollte während der Abarbeitung der Referenzfahrt vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Referenzfahrt durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Ein erfolgreicher Abschluss der Referenzfahrt wird mit Done gemeldet.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Referenzfahrt auf FALSE gesetzt wird die eingeleitete Referenzfahrt unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, Done ) werden für einen Zyklus gegeben.

Hinweis: Wenn die Applikation nicht selbst eine Referenzposition festlegt, sondern ein mit den Maschinendaten abgespeicherter und geladener Wert Verwendung finden soll ist die Benutzung von fEnc_DefaultHomePosition in pStAxParams vorgesehen. Sollten situationsabhängig verschiedene Werte benötigt werden sollte auf fCustomerData[] in pStAxParams zurückgegriffen werden.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_MoveAbsolute_BkPlcMc

FUNCTION_BLOCK MC_MoveAbsolute_BkPlcMc

Der Funktionsbaustein startet und überwacht die Bewegung einer Achse.

VAR_INPUT
    Execute:		BOOL;
    Position:		LREAL;
    Velocity:		LREAL;
    Acceleration:	LREAL;
    Deceleration:	LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Bewegung.

Position: Die Zielposition der Bewegung in Istwert-Einheiten der Achse.

Velocity: Die geforderte Geschwindigkeit der Bewegung in Istwert-Einheiten der Achse pro Sekunde.

Acceleration: Die geforderte Beschleunigung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Deceleration: Die geforderte Verzögerung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung der Bewegung signalisiert.

CommandAborted: Hier wird ein Abbruch der Bewegung signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Als nächstes wird überprüft, ob Position hinter einem aktiven Software-Endschalter liegt. In diesem Fall wird mit Error und ErrorID:=dwTcHydErrCdSoftEnd reagiert.
  • In Abhängigkeit vom in Axis.pStAxParams^.nProfile festgelegten Bewegungsalgorithmus kann die Achse entweder nur aus dem Stillstand oder auch aus einer anderen noch nicht abgeschlossenen Bewegung heraus die hier gestartete Bewegung beginnen. Sollte sie derzeit nicht in der Lage sein diesen neuen Auftrag zu akzeptieren wird mit Error und ErrorID:=dwTcHydErrCdNotStartable reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn Velocity zu klein (weniger als 1% der Referenzgeschwindigkeit) ist wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.
  • Wenn Acceleration zu klein ist (Velocity kann nicht innerhalb von 100 Sekunden erreicht werden) wird mit Error und ErrorID:=dwTcHydErrCdAcc reagiert.
  • Wenn Deceleration zu klein ist (Velocity kann nicht innerhalb von 100 Sekunden abgebaut werden) wird mit Error und ErrorID:=dwTcHydErrCdDec reagiert.
  • Wenn der Bewegungsalgorithmus bereits einen Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Bewegung initiiert. Dazu werden die Parameter Position, Velocity, Acceleration und Deceleration auf die maximal zulässigen Werte begrenzt und an den Bewegungsalgorithmus übergeben. Die Achse befindet sich ab jetzt im Zustand McState_DiscreteMotion und der Baustein beginnt mit der Überwachung der Bewegung.

Sollte während der Abarbeitung der Bewegung vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Bewegung durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Erreicht der Bewegungsalgorithmus die Zielbedingungen der Achse wird mit Done reagiert.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Bewegung auf FALSE gesetzt wird die eingeleitete Bewegung unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, Done ) werden für einen Zyklus gegeben.

Hinweis: Die Überwachung der Bewegung durch diesen Baustein kann durch den Aufruf eines Bausteins vom Typ MC_AxUtiCancelMonitoring_BkPlcMc abgebrochen werden. In diesem Fall wird der nächste Aufruf des MC_MoveAbsolute_BkPlcMc Bausteins CommandAborted signalisieren. Nach einem anschließenden Aufruf mit Execute=FALSE ist der Baustein im Ruhezustand.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_MoveJoySticked_BkPlcMc

FUNCTION_BLOCK MC_MoveJoySticked_BkPlcMc

Der Funktionsbaustein startet und überwacht die Bewegung einer Achse.

Hinweis: Diese Funktion wird derzeit nur durch Achsen unterstützt, die durch einen Baustein vom Typ MC_AxRuntimeCtrlBased_BkPlcMc kontrolliert werden (in Vorbereitung: MC_AxRunTimeTimeRamp_BkPlcMc). Die Auswahl eines solchen Bausteins erfolgt dadurch, dass in nProfileType in ST_TcHydAxParam die entsprechende Konstante aus E_TcMcProfileType vorgegeben wird.

VAR_INPUT
    Execute:		BOOL;
    JoyStick:		LREAL;
    Acceleration:	LREAL;
    Deceleration:	LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Bewegung.

JoyStick: Die auf den Wertebereich ±1.0 normierte Geschwindigkeitsvorgabe durch das Kontrollgerät.

Acceleration: Die geforderte Beschleunigung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Deceleration: Die geforderte Verzögerung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

CommandAborted: Hier wird ein Abbruch der Bewegung signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn der Bewegungsalgorithmus bereits einen Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert.
  • Als nächstes wird überprüft, ob der Generator der Achse die geforderte Funktion unterstützt. Ist dies nicht der Fall wird mit Error und ErrorID:=dwTcHydErrCdNotCompatible reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Bewegung initiiert. Dazu wird der Bewegungsalgorithmus in den Zustand iTcHydStateExtGenerated und die Achse in den Zustand McState_Synchronizedmotion versetzt. Die Geschwindigkeit der Achse wird durch JoyStick und ST_TcHydAxParam.fRefVelo festgelegt. Bei einer Änderung der Geschwindigkeit wird eine Rampenbegrenzung auf ST_TcHydAxParam.fMaxAcc vorgenommen. Fährt die Achse in Richtung auf aktiven Software-Endschalter, wird die Geschwindigkeit in Abhängigkeit von der verbleibenden Entfernung so begrenzt, dass eine korrekte Zielanfahrt auf den Endschalter zustande kommt.

Eine fallende Flanke an Execute versetzt den Bewegungsalgorithmus in den Zustand iTcHydStateTcDecP oder iTcHydStateTcDecM und die Achse in den Zustand McState_Standstill. Falls sich die Achse zu diesem Zeitpunkt bewegt wird sie mit einer Stoprampe abgebremst und geht in den Zustand iTcHydStateIdle über.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_MoveRelative_BkPlcMc

FUNCTION_BLOCK MC_MoveRelative_BkPlcMc

Der Funktionsbaustein startet und überwacht die Bewegung einer Achse.

VAR_INPUT
    Execute:		BOOL;
    Distance:		LREAL;
    Velocity:		LREAL;
    Acceleration:	LREAL;
    Deceleration:	LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Bewegung.

Distance: Die Entfernung zur Zielposition der Bewegung in Istwert-Einheiten der Achse.

Velocity: Die geforderte Geschwindigkeit der Bewegung in Istwert-Einheiten der Achse pro Sekunde.

Acceleration: Die geforderte Beschleunigung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Deceleration: Die geforderte Verzögerung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung der Bewegung signalisiert.

CommandAborted: Hier wird ein Abbruch der Bewegung signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Als nächstes wird überprüft, ob eine Bewegung um Distance zu einem Konflikt mit einem aktiven Software-Endschalter liegt. In diesem Fall wird mit Error und ErrorID:=dwTcHydErrCdSoftEnd reagiert.
  • In Abhängigkeit vom in Axis.pStAxParams^.nProfile festgelegten Bewegungsalgorithmus kann die Achse entweder nur aus dem Stillstand oder auch aus einer anderen noch nicht abgeschlossenen Bewegung heraus die hier gestartete Bewegung beginnen. Sollte sie derzeit nicht in der Lage sein diesen neuen Auftrag zu akzeptieren wird mit Error und ErrorID:=dwTcHydErrCdNotStartable reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn Velocity zu klein (weniger als 1% der Referenzgeschwindigkeit) ist wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.
  • Wenn Acceleration zu klein ist (Velocity kann nicht innerhalb von 100 Sekunden erreicht werden) wird mit Error und ErrorID:=dwTcHydErrCdAcc reagiert.
  • Wenn Deceleration zu klein ist (Velocity kann nicht innerhalb von 100 Sekunden abgebaut werden) wird mit Error und ErrorID:=dwTcHydErrCdDec reagiert.
  • Wenn der Bewegungsalgorithmus bereits einen Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Bewegung initiiert. Dazu werden die Parameter Distance, Velocity, Acceleration und Deceleration auf die maximal zulässigen Werte begrenzt und an den Bewegungsalgorithmus übergeben. Die Achse befindet sich ab jetzt im Zustand McState_DiscreteMotion und der Baustein beginnt mit der Überwachung der Bewegung.

Sollte während der Abarbeitung der Bewegung vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Bewegung durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Erreicht der Bewegungsalgorithmus die Zielbedingungen der Achse wird mit Done reagiert.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Bewegung auf FALSE gesetzt wird die eingeleitete Bewegung unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, Done ) werden für einen Zyklus gegeben.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_MoveVelocity_BkPlcMc

FUNCTION_BLOCK MC_MoveVelocity_BkPlcMc

Der Funktionsbaustein startet und überwacht die Bewegung einer Achse.

VAR_INPUT
    Execute:		BOOL;
    Velocity:		LREAL;
    Acceleration:	LREAL;
    Deceleration:	LREAL;
    Direction:	MC_Direction_BkPlcMc;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    InVelocity:	BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Bewegung.

Velocity: Die geforderte Geschwindigkeit der Bewegung in Istwert-Einheiten der Achse pro Sekunde.

Acceleration: Die geforderte Beschleunigung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Deceleration: Die geforderte Verzögerung in Istwert-Einheiten der Achse pro Quadrat-Sekunde.

Direction: Eine entsprechend MC_Direction_BkPlcMc codierte Richtungsangabe.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

InVelocity: Dieser Ausgang wird TRUE, wenn die Achse das erste mal die geforderte Geschwindigkeit erreicht.

CommandAborted: Hier wird ein Abbruch der Bewegung signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • In Abhängigkeit vom in Axis.pStAxParams^.nProfile festgelegten Bewegungsalgorithmus kann die Achse entweder nur aus dem Stillstand oder auch aus einer anderen noch nicht abgeschlossenen Bewegung heraus die hier gestartete Bewegung beginnen. Sollte sie derzeit nicht in der Lage sein diesen neuen Auftrag zu akzeptieren wird mit Error und ErrorID:=dwTcHydErrCdNotStartable reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn Velocity zu klein (weniger als 1% der Referenzgeschwindigkeit) ist wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.
  • Wenn der Bewegungsalgorithmus bereits einen Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Bewegung initiiert. Dazu wird in Abhängigkeit von Direction und den Parametern der Softwareendschalter ein Wert für die Zielposition gewählt. Dann werden die Parameter Velocity, Acceleration und Deceleration auf die maximal zulässigen Werte begrenzt und an den Bewegungsalgorithmus übergeben. Die Achse befindet sich ab jetzt im Zustand McState_Continousmotion und der Baustein beginnt mit der Überwachung der Bewegung.

Sollte während der Abarbeitung der Bewegung vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Bewegung durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Erreicht der Bewegungsalgorithmus die geforderte Geschwindigkeit wird InVelocity gesetzt.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Bewegung auf FALSE gesetzt wird die eingeleitete Bewegung unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, InVelocity) werden für einen Zyklus gegeben.

Hinweis: Die Überwachung der Bewegung durch diesen Baustein kann durch den Aufruf eines Bausteins vom Typ MC_AxUtiCancelMonitoring_BkPlcMc abgebrochen werden. In diesem Fall wird der nächste Aufruf des MC_MoveVelocity_BkPlcMc Bausteins CommandAborted signalisieren. Nach einem anschließenden Aufruf mit Execute=FALSE ist der Baustein im Ruhezustand.


TcPlcHydraulics: PLCopen Motion Control: Motion: MC_Stop_BkPlcMc

FUNCTION_BLOCK MC_Stop_BkPlcMc

Der Funktionsbaustein bricht eine aktuell ausgeführte Bewegung einer Achse ab und überwacht die Stoppoperation.

VAR_INPUT
    Execute:		BOOL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang beendet eine Bewegung der Achse.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung der Operation signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Ein Stopp kann nur ausgeführt werden, wenn die Achse eine aktive Bewegung ausführt. Befindet sie sich im Stillstand meldet der Baustein sofort Done .
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Stop-Operation initiiert.

Sollte während der Abarbeitung der Bewegung vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Abarbeitung durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Ein erfolgreicher Abschluss der Operation wird mit Done gemeldet.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Operation auf FALSE gesetzt wird der eingeleitete Stopp unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, Done ) werden für einen Zyklus gegeben.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: Axis_Ref_BkPlcMc

TYPE Axis_Ref_BkPlcMc

Die Variablen in dieser Struktur fassen die Unterbestandteile der Achse zusammen. Eine Variable dieses Typs wird an die meisten Bausteine der Bibliothek übergeben und somit entspricht dieser Typ dem AXIS_REF Datentyp der PlcOpen.

TYPE Axis_Ref_BkPlcMc:
STRUCT
    sAxisName:	STRING := 'NoName';
    pStAxParams:	POINTER TO ST_TcHydAxParam:=0;
    pStAxRtData:	POINTER TO ST_TcHydAxRtData:=0;
    pStAxLogBuffer: 	POINTER TO ST_TcMcLogBuffer:=0;
    pStAxEncInput:	POINTER TO ST_TcPlcMcEncoderIn:=0;
    pStAxEncOutput:	POINTER TO ST_TcPlcMcEncoderOut:=0;
    pStAxDriveInput:	POINTER TO ST_TcPlcMcDriveIn:=0;
    pStAxDriveOutput:	POINTER TO ST_TcPlcMcDriveOut:=0;
    pStAxAx2000In:	POINTER TO ST_TcPlcMcAx2000In:=0;
    pStAxAx2000Out:	POINTER TO ST_TcPlcMcAx2000Out:=0;
    pStAxAuxLabels:	POINTER TO ST_TcMcAuxDataLabels:=0;
    nActiveRequest:	UDINT:=0;
    bParamsEnable:	BOOL:=FALSE;
    nState:		E_TcMCFbState:=McState_Standstill;
    nInitState:	INT:=0;
    nInitError:	DINT:=0;
    nInterfaceType:	UINT := 16#FFFF;
    nRtDataType:	UINT := 16#FFFF;
    nParamType:	UINT := 16#FFFF;
    nEncInType:	UINT := 16#FFFF;
    nEncOutType:	UINT := 16#FFFF;
    nDriveInType:	UINT := 16#FFFF;
    nDriveOutType:	UINT := 16#FFFF;
    nAx2000InType:	UINT := 16#FFFF;
    nAx2000OutType:	UINT := 16#FFFF;
    nLogBufferType:	UINT := 16#FFFF;
    nLogLevel:	DINT := 0;
END_STRUCT
END_TYPE

sAxisName: Der Text-Name der Achse.

pStAxParams: Die Adresse einer Variablen vom Typ ST_TcHydAxParam. Diese Variable enthält die Parameter der Achse.

pStAxRtData: Die Adresse einer Variablen vom Typ ST_TcHydAxRtData. Diese Variable enthält die Laufzeitdaten der Achse.

pStAxLogBuffer: Die Adresse einer Variablen vom Typ ST_TcMcLogBuffer. Diese Variable enthält den LogBuffer der Library.

pStAxEncInput: Die Adresse einer Variablen vom Typ ST_TcPlcMcEncoderIn. Diese Variable enthält das Encoder-Eingangsinterface der Achse.

pStAxEncOutput: Die Adresse einer Variablen vom Typ ST_TcPlcMcEncoderOut. Diese Variable enthält das Encoder-Ausgangsinterface der Achse.

pStAxDriveInput: Die Adresse einer Variablen vom Typ ST_TcPlcMcDriveIn. Diese Variable enthält das Antriebs-Eingangsinterface der Achse.

pStAxDriveOutput: Die Adresse einer Variablen vom Typ ST_TcPlcMcDriveOut. Diese Variable enthält das Antriebs-Ausgangsinterface der Achse.

pStAxAx2000In: Die Adresse einer Variablen vom Typ ST_TcPlcMcAx2000In. Diese Variable enthält das Antriebs-Eingangsinterface der Achse.

pStAxAx2000Out: Die Adresse einer Variablen vom Typ ST_TcPlcMcAx2000Out. Diese Variable enthält das Antriebs-Ausgangsinterface der Achse.

pStAxAuxLabels: Die Adresse einer Variable vom Typ ST_TcMcAuxDataLabels. Diese Variable enthält optional die Bezeichnungen der Applikations-Parameter in ST_TcHydAxParam:fCustomerData[..].

nActiveRequest: Hier stellt jeder Baustein eine Kennzahl ein, der eine Funktion auf dieser Achse startet. Anschließend überwacht der Baustein diese Variable auf Veränderung durch einen anderen Baustein, der durch eine andere Funktion die Kontrolle übernimmt. So kann jeder Baustein feststellen, ob die von ihm gestartete Funktion durch einen anderen Baustein abgebrochen wurde und entsprechende Signale erzeugen.

bParamsEnable: Diese Variable ist nur auf TRUE, wenn die Parameter durch Laden aus einer Datei in einen gültigen Zustand versetzt wurden. Ein Abspeichern der Parameter setzt ebenfalls dieses Signal, da die Übereinstimmung der Daten in der Parameterstruktur und in der Datei ebenfalls sicher gestellt ist. Solange diese Variable nicht auf TRUE steht ist die Achse nicht betriebsbereit. Hinweis: Zur Laufzeit wird bei schreibenden Zugriffen auf die Parameterstruktur diese Variable temporär auf FALSE und anschließend wieder auf ihren Vorzustand gesetzt.

nState: Hier ist in einer entsprechend E_TcMCFbState codierten Form der aktuelle Zustand der Achse hinterlegt.

nInitState: Der aktuelle Zustand der Initialisierung.

nInitError: Ein eventuell beim Initialisieren festgestellte Fehlercode.

nInterfaceType: Der Typecode des derzeit gültigen Variablentyps.

nRtDataType: Der Typecode des derzeit gültigen Variablentyps.

nParamType: Der Typecode des derzeit gültigen Variablentyps.

nEncInType: Der Typecode des derzeit gültigen Variablentyps.

nEncOutType: Der Typecode des derzeit gültigen Variablentyps.

nDriveInType: Der Typecode des derzeit gültigen Variablentyps.

nDriveOutType: Der Typecode des derzeit gültigen Variablentyps.

nAx2000InType: Der Typecode des derzeit gültigen Variablentyps.

nAx2000OutType: Der Typecode des derzeit gültigen Variablentyps.

nLogBufferType:

nLogLevel:


TcPlcHydraulics: PLCopen Motion Control: Datentypen: E_TcMcCurrentStep

TYPE E_TcMcCurrentStep

Die Konstanten in dieser Auflistung werden für die Kennzeichnung der internen Zustände der Stellwertgeneratoren benutzt.

Hinweis: Nicht jeder dieser Zustände wird von allen Stellwertgeneratoren benutzt.

TYPE E_TcMcCurrentStep :(
iTcHydStateIdle,
iTcHydStateTcAccP,
iTcHydStateTcAccM,
iTcHydStatePcAccP,
iTcHydStatePcAccM,
iTcHydStateConstVeloP,
iTcHydStateConstVeloM,
iTcHydStatePcDecP,
iTcHydStatePcDecM,
iTcHydStateCreepVeloP,
iTcHydStateCreepVeloM,
iTcHydStateTcDecP,
iTcHydStateTcDecM,
iTcHydStateFeedStopPos,
iTcHydStateFeedStopNeg,
iTcHydStateDoBrake,
iTcHydStateCoupling := 1000,
iTcHydStateCoupled,
iTcHydStateExtGenerated := 2000,
iTcHydStateEmergencyBreak := -9999,
iTcHydStateFault := -9998
);
END_TYPE

iTcHydStateIdle: Die Achse führt keine aktive Fahrbewegung aus. Ihr Verhalten wird von ST_TcHydAxParam.fLagAmp, ST_TcHydAxParam.fTargetClamping und ST_TcHydAxParam.fReposDistance bestimmt.

iTcHydStateTcAccP: Die Achse baut entsprechend ST_TcHydAxRtData.fDestAcc einen positiven Stellwert auf. Dieser Wert wird durch einen der Startbausteine entsprechend den Daten des Fahrauftrags gesetzt. Erreicht der Stellwert den vorgesehenen Fahrstellwert wird in den Zustand gewechselt. Wird vorher festgestellt, dass der Bremsvorgang für die Zielanfahrt eingeleitet werden muss wird in den Zustand iTcHydStatePcDecP gewechselt. Bei Wegfall der Vorschubfreigabe wird in den Zustand iTcHydStateFeedStopPos gewechselt.

iTcHydStateTcAccM: Die Achse baut entsprechend ST_TcHydAxRtData.fDestAcc einen negativen Stellwert auf. Dieser Wert wird durch einen der Startbausteine entsprechend den Daten des Fahrauftrags gesetzt. Erreicht der Stellwert den vorgesehenen Fahrstellwert wird in den Zustand gewechselt. Wird vorher festgestellt, dass der Bremsvorgang für die Zielanfahrt eingeleitet werden muss wird in den Zustand iTcHydStatePcDecM gewechselt. Bei Wegfall der Vorschubfreigabe wird in den Zustand iTcHydStateFeedStopNeg gewechselt.

iTcHydStatePcAccP: Die Achse befindet sich in der weggesteuerten Beschleunigungsphase einer Fahrbewegung in positiver Richtung. Dabei wird der Stellwert entsprechend ST_TcHydAxRtData.fDestAcc auf einen vom Fahrauftrag festgelegten Wert aufgebaut. Anschließend wird in den Zustand iTcHydStateConstVeloP gewechselt.

iTcHydStatePcAccM: Die Achse befindet sich in der weggesteuerten Beschleunigungsphase einer Fahrbewegung in negativer Richtung. Dabei wird der Stellwert entsprechend ST_TcHydAxRtData.fDestAcc auf einen vom Fahrauftrag festgelegten Wert aufgebaut. Anschließend wird in den Zustand iTcHydStateConstVeloM gewechselt.

iTcHydStateConstVeloP: Die Achse fahrt mit konstantem Stellwert in positiver Richtung. Der Stellwert wird durch den Fahrauftrag festgelegt.

iTcHydStateConstVeloM: Die Achse fahrt mit konstantem Stellwert in negativer Richtung. Der Stellwert wird durch den Fahrauftrag festgelegt.

iTcHydStatePcDecP: Die Achse befindet sich in der weggesteuerten Bremsphase einer Fahrbewegung in positiver Richtung. Dabei wird der Stellwert bis auf ST_TcHydAxParam.fCreepSpeed abgebaut. Anschließend wird in den Zustand iTcHydStateCreepVeloP gewechselt.

iTcHydStatePcDecM: Die Achse befindet sich in der weggesteuerten Bremsphase einer Fahrbewegung in negativer Richtung. Dabei wird der Stellwert bis auf ST_TcHydAxParam.fCreepSpeed abgebaut. Anschließend wird in den Zustand iTcHydStateCreepVeloM gewechselt.

iTcHydStateCreepVeloP: Die Achse fahrt mit konstantem Stellwert in positiver Richtung. Der Stellwert wird durch ST_TcHydAxParam.fCreepSpeed festgelegt.

iTcHydStateCreepVeloM: Die Achse fahrt mit konstantem Stellwert in negativer Richtung. Der Stellwert wird durch ST_TcHydAxParam.fCreepSpeed festgelegt.

iTcHydStateTcDecP: Die Achse führt ausgehend von einer Fahrbewegung in positiver Richtung einen regulären Stopp aus. Dabei wird der Stellwert mit ST_TcHydAxParam.fStopRamp abgebaut. Anschließend wird in den Zustand iTcHydStateIdle gewechselt.

iTcHydStateTcDecM: Die Achse führt ausgehend von einer Fahrbewegung in negativer Richtung einen regulären Stopp aus. Dabei wird der Stellwert mit ST_TcHydAxParam.fStopRamp abgebaut. Anschließend wird in den Zustand iTcHydStateIdle gewechselt.

iTcHydStateFeedStopPos: Die Achse führt wegen nicht anstehender Vorschubfreigabe in positiver Richtung (in ST_TcHydAxRtData.nDeCtrlDWord ist dwTcHydDcDwFdPosEna nicht gesetzt) einen Zwischenstopp aus. Dabei wird der Stellwert mit ST_TcHydAxParam.fStopRamp abgebaut. Anschließend wird auf eine Vorschubfreigabe gewartet.

iTcHydStateFeedStopNeg: Die Achse führt wegen nicht anstehender Vorschubfreigabe in negativer Richtung (in ST_TcHydAxRtData.nDeCtrlDWord ist dwTcHydDcDwFdNegEna nicht gesetzt) einen Zwischenstopp aus. Dabei wird der Stellwert mit ST_TcHydAxParam.fStopRamp abgebaut. Anschließend wird auf eine Vorschubfreigabe gewartet.

iTcHydStateDoBrake: Die Achse führt eine Wartezeit aus. Dies ist erforderlich, wenn wegen eine Bremse oder ein Schaltventils geschaltet werden muss.

iTcHydStateCoupling: Die Achse befindet sich im Übergang in den Zustand iTcHydStateCoupled.

iTcHydStateCoupled: Der Stellwert der Achse wird nach dem Prinzip des elektronischen Getriebes vom Stellwert einer anderen Achse abgeleitet.

iTcHydStateExtGenerated: Der Stellwert der Achse wird durch einen externen Baustein erzeugt. dabei kann es sich um einen Baustein der Library oder um einen applikationsspezifischen Baustein handeln.

iTcHydStateEmergencyBreak: Die Achse führt einen Notstop aus. Dabei wird der Stellwert mit ST_TcHydAxParam.fEmergencyRamp abgebaut. Anschließend wird untersucht, ob sich die Achse in einem Störzustand (ST_TcHydAxRtData.nErrorCode ungleich 0) befindet. Wenn ja wird in den Zustand iTcHydStateFault gewechselt, andernfalls in den Zustand iTcHydStateIdle.

iTcHydStateFault: Die Achse ist in einem Störzustand. Sie führt keine aktiv kontrollierten Bewegungen aus und nimmt auch keine Bewegungsaufträge an. Um die Achse wieder in einen ungestörten Zustand zu versetzen ist ein Baustein des Typs MC_Reset_BkPlcMc oder MC_ResetAndStop_BkPlcMc aufzurufen.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: E_TcMcDriveType

TYPE E_TcMcDriveType

Die Konstanten in dieser Auflistung werden zur Kennzeichnung von für die Stellwertausgabe einer Achse verwendeter Hardware benutzt.

TYPE E_TcMcDriveType :(
(*
Die bestehende Reihenfolge darf nicht verändert werden.
Neue Typen müssen am Ende eingefügt werden.
Wenn ein Typ wegfallen sollte, muß er durch einen Dummy
ersetzt werden, um die numerische Zuordnung zu garantieren.
*)
iTcMc_Drive_Customized,
iTcMc_DriveLowCostStepper,
iTcMc_DriveKL2521,
iTcMc_DriveKL4032,
iTcMc_DriveAx2000,
iTcMc_DriveM2400_D1,
iTcMc_DriveM2400_D2,
iTcMc_DriveM2400_D3,
iTcMc_DriveM2400_D4,
iTcMc_DriveLowCostStepperHS,
iTcMc_DriveLowCostStepperFS,
iTcMc_DriveIx2512_1Coil,
iTcMc_DriveIx2512_2Coil,
iTcMc_DriveKL2531,
iTcMc_DriveKL2541,
iTcMc_DriveEL4032
);
END_TYPE

iTcMc_Drive_Customized: Der Stellwert für den Antrieb wird nicht für die Ausgabe auf einer bestimmten Hardware aufbereitet. Diese Aufbereitung ist durch die PLC-Applikation selbst vorzunehmen.

iTcMc_DriveLowCostStepper: Die inkrementelle Sollpositionänderungen werden als digitale Ausgangssignale für einen direkt angesteuerten Schrittmotor erzeugt. Dies ist ein aus Gründen der Kompatibilität weiterhin unterstützter Code und ist gleibedeutend mit iTcMc_DriveLowCostStepperHS.

iTcMc_DriveKL2521: Der Stellwert für den Antrieb wird für die Ausgabe auf eine Pulse Train Klemme KL2521 aufbereitet.

iTcMc_DriveKL4032: Der Stellwert für den Antrieb wird für die Ausgabe auf einer Analog-Ausgangsklemme ±10 V KL4032 aufbereitet.

iTcMc_DriveAx2000: Der Stellwert für den Antrieb wird für die Ausgabe auf einem AX2000 Stellgerät am Beckhoff II/O oder am Sercos Feldbus aufbereitet.

iTcMc_DriveM2400_D1: Der Stellwert für den Antrieb wird für die Ausgabe auf dem ersten Kanal einer M2400 Box am Beckhoff II/O aufbereitet.

iTcMc_DriveM2400_D2: Der Stellwert für den Antrieb wird für die Ausgabe auf dem zweiten Kanal einer M2400 Box am Beckhoff II/O aufbereitet.

iTcMc_DriveM2400_D3: Der Stellwert für den Antrieb wird für die Ausgabe auf dem dritten Kanal einer M2400 Box am Beckhoff II/O aufbereitet.

iTcMc_DriveM2400_D4: Der Stellwert für den Antrieb wird für die Ausgabe auf dem vierten Kanal einer M2400 Box am Beckhoff II/O aufbereitet.

iTcMc_DriveLowCostStepperHS: Die inkrementelle Sollpositionänderungen werden als digitale Ausgangssignale für einen direkt angesteuerten Schrittmotor erzeugt. Es wird das Halbschritt-Verfahren angewendet.

iTcMc_DriveLowCostStepperFS: Die inkrementelle Sollpositionänderungen werden als digitale Ausgangssignale für einen direkt angesteuerten Schrittmotor erzeugt. Es wird das Vollschritt-Verfahren angewendet.

iTcMc_DriveIx2512_1Coil: Der Stellwert für den Antrieb wird für die Ausgabe auf eine Feldbus Box IP/IE2512 aufbereitet. Es gelten die Regeln für Ventile mit einer Spule.

iTcMc_DriveIx2512_2Coil: Der Stellwert für den Antrieb wird für die Ausgabe auf eine Feldbus Box IP/IE2512 aufbereitet. Es gelten die Regeln für Ventile mit zwei Spulen.

iTcMc_DriveKL2531: Der Stellwert für den Antrieb wird für die Ausgabe auf eine Schrittmotorendstufenklemme KL2531 aufbereitet.

iTcMc_DriveKL2541: reserviert.

iTcMc_DriveEL4032: reserviert.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: E_TcMcEncoderType

TYPE E_TcMcEncoderType

Die Konstanten in dieser Auflistung werden zur Kennzeichnung von für die Istwerterfassung einer Achse verwendeter Hardware benutzt.

TYPE E_TcMcEncoderType :(
(*
Die bestehende Reihenfolge darf nicht verändert werden.
Neue Typen müssen am Ende eingefügt werden.
Wenn ein Typ wegfallen sollte, muß er durch einen Dummy
ersetzt werden, um die numerische Zuordnung zu garantieren.
*)
iTcMc_EncoderSim,
iTcMc_EncoderDigIncrement,
iTcMc_EncoderLowCostStepper,
iTcMc_EncoderKL2521,
iTcMc_EncoderKL3042,
iTcMc_EncoderKL5001,
iTcMc_EncoderKL5101,
iTcMc_EncoderAx2000,
iTcMc_EncoderDigCam,
iTcMc_EncoderIx5009,
iTcMc_EncoderM2510,
iTcMc_EncoderKL3002,
iTcMc_EncoderKL2531,
iTcMc_EncoderKL5111,
iTcMc_EncoderAbs32,
iTcMc_EncoderM3120,
iTcMc_EncoderKL2541,
iTcMc_EncoderEL3002,
iTcMc_EncoderEL3042,
iTcMc_EncoderEL5001,
iTcMc_EncoderEL5101
);
END_TYPE

iTcMc_EncoderSim: Die virtuelle Istposition der Achse ist eine Kopie der Sollposition. Achtung: Dieser Typ darf an einer realen Maschine nur bei virtuellen Achsen eingestellt sein. Andernfalls wird die Achse unkontrollierte und nicht vorhersagbare Bewegungen ausführen.

iTcMc_EncoderDigIncrement: Der inkrementelle Istwert der Achse wird durch Auswertung von zwei digitalen Eingangsbits gebildet. Diese stellen die A- und B-Spur eines Inkremental-Encoders dar und werden entsprechend dem Prinzip des Quadratur-Decoders mit Vierfachauswertung ausgewertet. Achtung: Es darf pro PLC-Zyklus nur eines der Eingangsbits seinen Zustand ändern. Die maximale Geschwindigkeit beträgt also 1 Inkrement pro TCycle.

iTcMc_EncoderLowCostStepper: Die inkrementelle Istposition wird aus den Ausgangssignalen für einen digital angesteuerten Schrittmotor erzeugt.

iTcMc_EncoderKL2521: Die inkrementelle Istposition wird aus dem Impulszähler einer Pulse Train Klemme KL2521 erzeugt.

iTcMc_EncoderKL3042: Die absolute Istposition wird aus dem ADW-Wert einer Analog-Eingangsklemme 0..20 mA KL3042 erzeugt.

iTcMc_EncoderKL5001: Die absolute Istposition wird aus dem Zähler-Wert einer SSI-Eingangsklemme KL5001 erzeugt.

iTcMc_EncoderKL5101: Die inkrementelle Istposition wird aus dem Zähler-Wert einer Eingangsklemme KL5101 erzeugt.

iTcMc_EncoderAx2000: Die inkrementelle Istposition wird aus dem Zähler-Wert eines AX2000 Stellgeräts am Beckhoff II/O oder Sercos Feldbus ermittelt.

iTcMc_EncoderDigCam: Das Positionsnocken-Byte wird aus vier digitalen Eingangsbits gebildet.

iTcMc_EncoderIx5009: Die absolute Istposition wird aus dem Zähler-Wert einer SSI-Feldbusbox IP/IE5009 erzeugt.

iTcMc_EncoderM2510: Die absolute Istposition wird aus dem ADW-Wert einer Analog-Eingangsbox ±10V M2510 erzeugt.

iTcMc_EncoderKL3002: Die absolute Istposition wird aus dem ADW-Wert einer Analog-Eingangsklemme ±10V KL3002 erzeugt.

iTcMc_EncoderKL2531: Die inkrementelle Istposition wird aus dem Impulszähler einer Schrittmotor Klemme KL2531 erzeugt.

iTcMc_EncoderKL5111: Die inkrementelle Istposition wird aus dem Zähler-Wert einer Eingangsklemme KL5111 erzeugt.

iTcMc_EncoderAbs32: Die absolute Istposition wird aus dem 32-Bit-Wert einer allgemeinen Eingangselektronik erzeugt.

iTcMc_EncoderM3120: Die inkrementelle Istposition wird aus dem Zähler-Wert eines M3120 Lightbus Moduls erzeugt.

iTcMc_EncoderKL2541: reserviert.

iTcMc_EncoderEL3002: reserviert.

iTcMc_EncoderEL3042: reserviert.

iTcMc_EncoderEL5001: reserviert.

iTcMc_EncoderEL5101: reserviert.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: E_TcMCFbState

TYPE E_TcMCFbState

Die Konstanten in dieser Auflistung werden zur Kennzeichnung der Laufzeitzustände von Achsen benutzt.

TYPE E_TcMCFbState :
(
McState_Standstill := 0,
McState_DiscreteMotion,
McState_Continousmotion,
McState_Synchronizedmotion,
McState_Stopping,
McState_Errorstop
);
END_TYPE

McState_Standstill: Die Achse hat keinen Fahrauftrag. Je nach Parametrierung erfolgt eine aktive Lageregelung, eine Repositionier-Überwachung, die Ausgabe eines Press-Stellwerts oder nichts davon.

McState_DiscreteMotion: Die Achse führt ein Bewegung mit einer definierten Zielposition und Geschwindigkeit aus.

McState_Continousmotion: Die Achse führt ein Bewegung ohne definierten Zielposition aus. Lediglich die Geschwindigkeit ist vorgegeben.

McState_Synchronizedmotion: Die Achse führt ein Bewegung aus, die von der Bewegung einer anderen Achse abgeleitet ist.

McState_Stopping: Die Achse führt eine Stop-Operation aus.

McState_Errorstop: Die Achse wurde wegen eines Problems gestoppt. Sie ist derzeit nicht startbar und muss durch einen Reset wieder in einen startbereiten Zustand versetzt werden.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: E_TcMcHomingType

TYPE E_TcMcHomingType

Die Konstanten in dieser Auflistung werden zur Kennzeichnung der Referenziermethode von Achsen benutzt.

TYPE E_TcMcHomingType :(
iTcMc_HomingOnBlock,
iTcMc_HomingOnIndex,
iTcMc_HomingOnSync
);
END_TYPE

iTcMc_HomingOnBlock: Die Achse wird mit ST_TcHydAxParam.fEnc_RefIndexVelo in der durch ST_TcHydAxParam.bEnc_RefIndexPositive festgelegten Richtung bewegt. Wird für eine Zeitdauer von 2 Sekunden keine Bewegung festgestellt gilt der Festanschlag (Block) als erreicht. Der Istwert der Achse wird auf den Wert der Referenzposition gesetzt.

iTcMc_HomingOnIndex: Die Achse wird mit ST_TcHydAxParam.fEnc_RefIndexVelo in der durch ST_TcHydAxParam.bEnc_RefIndexPositive festgelegten Richtung bewegt. Wird in ST_TcHydAxRtData.nDeCtrlDWord die Referenznocke (Bit 5, dwTcHydDcDwRefIndex) erkannt stoppt die Achse. Anschließend wird sie mit ST_TcHydAxParam.fEnc_RefSyncVelo in der durch ST_TcHydAxParam.bEnc_RefSyncPositive festgelegten Richtung bewegt, bis die Referenznocke wieder verlassen wird. Der Istwert der Achse wird auf den Wert der Referenzposition gesetzt.

iTcMc_HomingOnSync: Die Achse wird mit ST_TcHydAxParam.fEnc_RefIndexVelo in der durch ST_TcHydAxParam.bEnc_RefIndexPositive festgelegten Richtung bewegt. Wird in ST_TcHydAxRtData.nDeCtrlDWord die Referenznocke (Bit 5, dwTcHydDcDwRefIndex) erkannt stoppt die Achse. Anschließend wird sie mit ST_TcHydAxParam.fEnc_RefSyncVelo in der durch ST_TcHydAxParam.bEnc_RefSyncPositive festgelegten Richtung bewegt, bis die Referenznocke wieder verlassen wird. Dann wird das Hardware-Latch des Encoders aktiviert und die Achse so lange weiter bewegt, bis das Latch gültig wird. Nach dem Stoppen der Achse wird der Istwert der Achse auf einen Wert gesetzt, der aus der Referenzposition und der seit dem Sync-Puls des Encoders zurückgelegten Strecke errechnet wird.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: E_TcMCParameter

TYPE E_TcMCParameter

Die Konstanten in dieser Auflistung werden zur Parameternummerierung benutzt.

TYPE E_TcMCParameter :
(
(*
=================================================================
= A C H T U N G =
=================================================================
= Diese Codes werden auch zur Kennzeichnung von Parametern =
= in den Dateien verwendet. Eine Veränderung der Codes würde =
= die Dateien (nicht erkennbar) inkompatibel machen und könnte =
= zum Systemabsturz führen! =
=================================================================
= ALSO: Es dürfen nur neue Codes dazugefügt werden! =
=================================================================
= Diese Codes werden ebenfalls für die ADS-Kommunikation benutzt =
=================================================================
*)
McPara_CommandedPosition := 1,
McPara_SWLimitPos,
McPara_SWLimitNeg,
McPara_EnableLimitPos,
McPara_EnableLimitNeg,
McPara_MaxVelocitySystem,
McPara_MaxVelocityAppl,
McPara_ActualVelocity,
McPara_CommandedVelocity,
McPara_MaxAccelerationSystem,
McPara_MaxAccelerationAppl,
McPara_MaxDecelerationSystem,
McPara_MaxDecelerationAppl,
(* ============================================================== *)
McPara_BkPlcMc_ProfilType:=1000, (* Typ-Codes *)
McPara_BkPlcMc_EnvCycletime,
McPara_BkPlcMc_AxName,
(* Encoder-Parameter *)
McPara_BkPlcMc_EncoderType:=1100,
McPara_BkPlcMc_EncoderHomingType,
McPara_BkPlcMc_EncoderZeroShift,
McPara_BkPlcMc_EncoderIncWeighting,
McPara_BkPlcMc_EncoderRefIndexVelo,
McPara_BkPlcMc_EncoderRefIndexPositive,
McPara_BkPlcMc_EncoderRefSyncVelo,
McPara_BkPlcMc_EncoderRefSyncPositive,
(* Ventil-Parameter *)
McPara_BkPlcMc_ValveOverlapComp:=1200,
McPara_BkPlcMc_ValveBendPointVelo,
McPara_BkPlcMc_ValveBendPointOutput,
(* Achs-Parameter *)
McPara_BkPlcMc_DriveType:=1300,
McPara_BkPlcMc_AreaRatio,
(* Beschleunigungsphase *)
McPara_BkPlcMc_StartRamp:=1400,
McPara_BkPlcMc_PosCtrlAccEna,
McPara_BkPlcMc_StartAccDistance,
(* Bremsphase *)
McPara_BkPlcMc_StopRamp:=1500,
McPara_BkPlcMc_EmergencyRamp,
(* Zielannäherung *)
McPara_BkPlcMc_CreepSpeed:=1600,
McPara_BkPlcMc_CreepDistance,
McPara_BkPlcMc_BrakeDistance,
McPara_BkPlcMc_BrakeDeadTime,
(* Ruhezustand *)
McPara_BkPlcMc_LagAmp:=1700,
McPara_BkPlcMc_LagAmpAdaptLimit,
McPara_BkPlcMc_LagAmpAdaptFactor,
McPara_BkPlcMc_ZeroCompensation,
McPara_BkPlcMc_TargetClamping,
McPara_BkPlcMc_ReposDistance,
(* Diverse Signale *)
McPara_BkPlcMc_MonPositionRange:=1800,
McPara_BkPlcMc_MonTargetRange,
McPara_BkPlcMc_MonTargetFilter,
(* Handfahrt *)
McPara_BkPlcMc_JogVeloFast:=1900,
McPara_BkPlcMc_JogVeloSlow,
(* Kundendaten *)
McPara_BkPlcMc_CustomerData:=2000,
(**)
McPara_BkPlcMc_
);
END_TYPE


TcPlcHydraulics: PLCopen Motion Control: Datentypen: E_TcMcProfileType

TYPE E_TcMcProfileType

Die Konstanten in dieser Auflistung werden zur Kennzeichnung der Regeln für die Stellwertgenerierung einer Achse verwendet.

TYPE E_TcMcProfileType :
(
iTcMc_ProfileConstAcc,
iTcMc_ProfileTimePosCtrl,
iTcMc_ProfileCosine,
iTcMc_ProfileCtrlBased,
iTcMc_ProfileTimeRamp
);
END_TYPE

iTcMc_ProfileConstAcc: Der Stellwert für den Antrieb wird mit abschnittsweise konstanten Beschleunigungen und Verzögerungen erzeugt. Als steuernde Größe wirken die Zeit (Beschleunigung, Geschwindigkeitswechsel, Stopp) und der Weg (Positionieren).

iTcMc_ProfileTimePosCtrl: Der Stellwert für den Antrieb wird mit abschnittsweise konstanten Beschleunigungen und Verzögerungen erzeugt. Als steuernde Größe wirken die Zeit (Beschleunigung, Stopp) und der Weg (Beschleunigung, Positionieren).

iTcMc_ProfileCosine: Der Stellwert für den Antrieb wird mit abschnittsweise kosinusförmigen Verläufen für Beschleunigung und Verzögerung erzeugt. Als steuernde Größe wirken die Zeit (Anfahren, Stopp) und der Weg (Beschleunigung, Positionieren).

iTcMc_ProfileCtrlBased: Der Stellwert für den Antrieb wird mit abschnittsweise konstanten Beschleunigungen und Verzögerungen erzeugt. Als steuernde Größe wirken die Zeit (Beschleunigung, Geschwindigkeitswechsel, Stopp) und der Weg (Positionieren).

iTcMc_ProfileTimeRamp: Der Stellwert für den Antrieb wird mit zeitgesteuerten Rampen für Beschleunigungen und Verzögerungen erzeugt. Als steuernde Größe wirken die Zeit (Beschleunigung, Geschwindigkeitswechsel, Stopp) und der Weg (Abbremsen, anhalten).


TcPlcHydraulics: PLCopen Motion Control: Datentypen: E_TcMCSetPositionMode

TYPE E_TcMCSetPositionMode

Die Konstanten in dieser Auflistung werden zur Kennzeichnung der Methode beim Setzen der Istposition von Achsen benutzt.

TYPE E_TcMCSetPositionMode:(
RELATIVE := 0,
ABSOLUTE :=1
);
END_TYPE

RELATIVE: Die Istposition der Achse wird um den übergebenen Wert geändert.

ABSOLUTE: Die Istposition der Achse wird auf den übergebenen Wert gesetzt.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: MC_CAM_ID_BkPlcMc

TYPE MC_CAM_ID_BkPlcMc

(internal use only) .

TYPE MC_CAM_ID_BkPlcMc:
STRUCT
    stCamRef:		MC_CAM_REF_BkPlcMc;
    bValidated:	BOOL:=FALSE;
    bPeriodic:	BOOL:=FALSE;
    bMasterAbs:	BOOL:=FALSE;
    bSlaveAbs:	BOOL:=FALSE;
    bIsChanged:	BOOL:=TRUE;
END_STRUCT
END_TYPE

stCamRef: Eine Kopie der MC_CAM_REF_BkPlcMc Struktur.

bValidated: Hier wird diese Struktur als gültig gekennzeichnet, wenn sie durch einen Baustein vom Typ MC_CamTableSelect_BkPlcMc initialisiert wurde.

bPeriodic: Reserviert.

bMasterAbs: Hier wird festgelegt, ob die Daten der Master-Spalte absolut sind oder sich auch die Masterposition zum Zeitpunkt der Kopplung beziehen.

bSlaveAbs: Hier wird festgelegt, ob die Daten der Slave-Spalte absolut sind oder sich auch die Slaveposition zum Zeitpunkt der Kopplung beziehen.

bIsChanged: Reserviert.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: MC_CAM_REF_BkPlcMc

TYPE MC_CAM_REF_BkPlcMc

(internal use only) .

TYPE MC_CAM_REF_BkPlcMc:
STRUCT
    pTable:		POINTER TO LREAL:=0;
    nFirstIdx:	UDINT:=1;
    nLastIdx:		UDINT:=1;
    bEquiDistant:	BOOL:=FALSE;
END_STRUCT
END_TYPE

pTable: Die Adresse der Kurventabelle.

nFirstIdx: Der Index der ersten Tabellenzeile.

nLastIdx: Der Index der letzten Tabellenzeile.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: MC_CAMSWITCH_REF_BkPlcMc

TYPE MC_CAMSWITCH_REF_BkPlcMc

TYPE MC_CAMSWITCH_REF_BkPlcMc:
STRUCT
    TrackNumber:	INT;
    FirstOnPosition:	LREAL;
    LastOnPosition:	LREAL;
    AxisDirection:	INT;
    CamSwitchMode: 	INT;
    Duration:		LREAL;
    (* private members, do not touch *)
    bCurrentState:	BOOL;
    fTimer:		LREAL;
    (**)
END_STRUCT
END_TYPE

TrackNumber: Dies ist ein Index in ein ARRAY [ciBkPlcMc_TrackRef_MinIdx..ciBkPlcMc_TrackRef_MaxIdx] OF MC_TRACK_REF_BkPlcMc , das an einen Baustein vom Typ MC_DigitalCamSwitch_BkPlcMc übergeben wird.

FirstOnPosition:

LastOnPosition:

AxisDirection: Hier wird festgelegt, bei welcher Bewegungsrichtung der Nocken aktiv wird: 0 = beide Richtung, 1 = positive Richtung, 2 = negative Richtung.

CamSwitchMode: Der Arbeitsmodus des Nockens: Für weggesteuerte Nocken ist hier der Wert 0, für zeitgesteuerte Nocken der Wert 1 einzutragen.

Duration: Bei zeitgesteuerten Nocken ist hier die Einschaltdauer in Sekunden einzutragen.

Die nachfolgenden Elemente sind Laufzeitvariablen und dürfen nicht von der Applikation beeinflusst oder benutzt werden.

bCurrentState:

fTimer:


TcPlcHydraulics: PLCopen Motion Control: Datentypen: MC_Direction_BkPlcMc

TYPE MC_Direction_BkPlcMc

Die Konstanten in dieser Auflistung werden zur Kennzeichnung der Bewegungsrichtung von Achsen benutzt.

TYPE MC_Direction_BkPlcMc:
(
MC_Positive_Direction_BkPlcMc := 1,
MC_Shortest_Way_BkPlcMc,
MC_Negative_Direction_BkPlcMc,
MC_Current_Direction_BkPlcMc
);
END_TYPE

MC_Positive_Direction_BkPlcMc: Die Bewegung erfolgt in Richtung steigender Positionswerte.

MC_Shortest_Way_BkPlcMc: Die Bewegungsrichtung wird so gewählt, dass sich eine möglichst kurze Weglänge ergibt.

MC_Negative_Direction_BkPlcMc: Die Bewegung erfolgt in Richtung sinkender Positionswerte.

MC_Current_Direction_BkPlcMc: Die Bewegung erfolgt in gleicher Richtung wie die zuletzt ausgeführte Bewegung.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: MC_OUTPUT_REF_BkPlcMc

TYPE MC_OUTPUT_REF_BkPlcMc

TYPE MC_OUTPUT_REF_BkPlcMc:
STRUCT
    OutputBits: UDINT:=0;
END_STRUCT
END_TYPE

OutputBits: Die über diese Struktur adressierten Ausgänge.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: MC_StartMode_BkPlcMc

TYPE MC_StartMode_BkPlcMc

Die Konstanten in dieser Auflistung werden zur Kennzeichnung der Modi beim Starten von Achsen benutzt.

TYPE MC_StartMode_BkPlcMc:
(
    MC_StartMode_Absolute:=1,
    MC_StartMode_Relative,
    MC_StartMode_RampIn
);
END_TYPE

MC_StartMode_Absolute: Die von MC_CamIn_BkPlcMc Bausteinen ermittelte Slave-Sollposition wird als Absolutwert betrachtet.

MC_StartMode_Relative: Die von MC_CamIn_BkPlcMc Bausteinen ermittelte Slave-Sollposition wird als Entfernung vom Ort der Ankopplung betrachtet.

MC_StartMode_RampIn: Nicht unterstützt.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: MC_TRACK_REF_BkPlcMc

TYPE MC_TRACK_REF_BkPlcMc

TYPE MC_TRACK_REF_BkPlcMc:
STRUCT
    OnCompensation:	LREAL;
    OffCompensation:	LREAL;
    Hysteresis:	LREAL;
END_STRUCT
END_TYPE

OnCompensation: Die zu kompensierende Einschalttotzeit in Sekunden.

OffCompensation: Die zu kompensierende Ausschalttotzeit in Sekunden.

Hysteresis: Nicht unterstützt.

Wenn als Totzeitkompensation ein positiver Wert angegeben wird, erfolgt die Signalgabe verzögert. Ein negativer Wert verursacht eine voreilende Signalgabe.

Hinweis: Die Zeit kann nicht genau eingehalten werden, wenn sich die steuernde Größe mit schwankender Rate ändert. Ist diese steuernde Größe eine Achsenistposition, muss dazu die Achsenistgeschwindigkeit konstant sein.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcHydAxParam

TYPE ST_TcHydAxParam

Diese Struktur enthält sämtliche Parameter der Achse.

TYPE ST_TcHydAxParam :
STRUCT
    (* ===========================================================================
    this section isn't saved / dieser Bereich wird nicht gesichert
    =========================================================================== *)
    sParamFileName:		STRING(255) := 'DefAxParmFile.dat';

    (* ===========================================================================
    from this point all parameters are saved / von hier an werden alle Parameter gesichert
    =========================================================================== *)
    nProfileType:		E_TcMcProfileType:=iTcMc_ProfileConstAcc;
    (*
    Valve parameters / Ventilparameter
    *)
    fValve_OverlapComp:	LREAL := 0.0; (* Valve overlap compensation / Überdeckungskompensation *)
    fValve_BendPointVelo:	LREAL := 0.0;
    fValve_BendPointOutput:	LREAL := 0.0;
    (*
    Encoder parameters / Enkoderparameter
    *)
    nEnc_Type:		E_TcMcEncoderType:=iTcMc_EncoderSim;
    nEnc_HomingType:		E_TcMcHomingType:=iTcMc_HomingOnBlock;
    fEnc_ZeroShift:		LREAL := 0.0; (* Zero shift / Nullpunktverschiebung *)
    fEnc_IncWeighting:		LREAL := 0.001; (* Increment weighting factor / Inkrement-Bewertung *)
    fEnc_IncInterpolation:	LREAL := 1.000; (* Increment interpolation factor / Inkrement-Interpolation *)
    fEnc_RefIndexVelo:		LREAL := 0.1; (* Speed for index search / Geschwindigkeit für Nockensuche *)
    bEnc_RefIndexPositive:	BOOL := FALSE; (* Direction for index search is positive / Richtung für Nockensuche ist positiv *)
    fEnc_RefSyncVelo:		LREAL := 0.1; (* Speed for sync pulse search / Geschwindigkeit für Referenzpulssuche *)
    bEnc_RefSyncPositive:	BOOL := FALSE; (* Direction for sync pulse search is positive / Richtung für Referenzpulssuche ist positiv *)
    fEnc_DefaultHomePosition:	LREAL := 0.0; (* / *)
    bEnc_Reversed:		BOOL := FALSE; (* Encoder is reversed / Enkoder zählt umgekehrt *)
    (*
    Environment parameters / Umgebungsparameter
    *)
    fCycletime:		LREAL := 0.010; (* Cycle time of calling PLC task / Zykluszeit der aufrufenden PLC Task *)
    (*
    Axis parameters / Achsparameter
    *)
    nDrive_Type:		E_TcMcDriveType:=iTcMc_DriveKL4032;
    fRefVelo:			LREAL := 500.0; (* Reference velocity, unit mm/sec / Bezugsgeschwindigkeit, Einheit mm/sek *)
    fAreaRatio:		LREAL := 1.0; (* Ratio of cylinder areas, unit none / Verhältnis der Zylinderflächen, Einheit ohne *)
    bDrive_Reversed:		BOOL := FALSE; (* Drive is reversed / Antrieb fährt umgekehrt *)
    (*
    Logical end of path / Software-Endschalter
    *)
    bSoftEndMinEna:		BOOL := FALSE; (* Enable for lower logical end of path / Freigabe für untere Software-Endlage *)
    fSoftEndMin:		LREAL := 0.0; (* Lower logical end of path, unit mm / Untere Software-Endlage, Einheit mm *)
    bSoftEndMaxEna:		BOOL := FALSE; (* Enable for upper logical end of path / Freigabe für obere Software-Endlage *)
    fSoftEndMax:		LREAL := 10000.0; (* Upper logical end of path, unit mm / Obere Software-Endlage, Einheit mm *)
    (*
    time controlled ramp up / zeitgesteuerte Beschleunigungsfunktion
    *)
    fStartRamp:		LREAL := 1.0; (* time to ref speed, unit second / Zeit bis zur Refferenzgeschwindigkeit, Einheit Sekunde *)
    (*
    position controled ramp up / weggesteuerte Beschleunigungsfunktion
    *)
    bPosCtrlAccEna:		BOOL := FALSE; (* Enable for position controled ramp up / Freigabe für weggesteuerte Beschleunigungsfunktion *)
    fStartAccDistance:		LREAL := 1.0; (* Displacement, unit mm / Abstand, Einheit mm *)
    fAcc:			LREAL := 2000.0; (* Acceleration, unit mm/second^2 / Beschleunigung, Einheit mm/Sekunde^2 *)
    (*
    position controled ramp down / weggesteuerte Bremsfunktion
    *)
    fDec:			LREAL := 500.0; (* Deceleration / Verzögerung *)
    (*
    targeting / Zielanfahrt
    *)
    fCreepSpeed:		LREAL := 80.0; (* creeping speed / Kriechgeschwindigkeit *)
    fCreepDistance:		LREAL := 1.0; (* creeping distance / Kriechstrecke *)
    fBrakeDistance:		LREAL := 0.03; (* braking distance / Bremsweg *)
    fBrakeDeadTime:		LREAL := 0.0; (* braking dead time / Bremstotzeit *)
    (*
    stop function / Anhaltefunktion
    *)
    fEmergencyRamp:		LREAL := 0.1;
    fStopRamp:		LREAL := 1.0;
    (*
    idling function / Ruhezustand
    *)
    fLagAmp:			LREAL := 0.05; (* lag error amplification / Lagereglerverstärkung *)
    fLagAmpAdaptLimit:		LREAL := 0.0;
    fLagAmpAdaptFactor:	LREAL := 0.0;
    fZeroCompensation:		LREAL := 0.0; (* offset compensation / Offsetabgleich *)
    fTargetClamping:		LREAL := 0.0; (* clamping output at target / Anpressdruck im Ziel *)
    fReposDistance:		LREAL := 0.0; (* distance from target to reposition *)
    (*
    monitoring / Überwachung
    *)
    fMonPositionRange:		LREAL := 1.0;
    fMonTargetRange:		LREAL := 1.0;
    fMonTargetFilter:		LREAL := 1.0;
    (*
    Jog velocitys / Handfahrgeschwindigkeiten
    *)
    fJogVeloFast:		LREAL := 100.0; (* Jog velocity fast, unit mm/sec / Schnelle Handfahrgeschwindigkeit, Einheit mm/sek *)
    fJogVeloSlow:		LREAL := 25.0; (* Jog velocity slow, unit mm/sec / Langsame Handfahrgeschwindigkeit, Einheit mm/sek *)
    (*
    Application limits / Begrenzungen der Anwendung
    *)
    fMaxVelo:			LREAL := 500.0; (* Max. enabled velocity, unit mm/sec / Zugelassene Maximalgeschwindigkeit, Einheit mm/sek *)
    fMaxAcc:			LREAL := 500.0; (* Max. enabled acceleration, unit mm/sec^2 / Zugelassene Beschleunigung, Einheit mm/sek^2 *)
    fMaxDec:			LREAL := 500.0; (* Max. enabled deceleration, unit mm/sec^2 / Zugelassene Verzögerung, Einheit mm/sek^2 *)
    (*
    *)
    fBrakeOnDelay:		LREAL := 500.0; (* Brake delay ON / Bremsverzögerung EIN *)
    fBrakeOffDelay:		LREAL := 500.0; (* Brake delay OFF / Bremsverzögerung AUS *)
    fBrakeSafetyDelay:		LREAL := 0.0; (* Brake delay SAFETY / Bremsverzögerung SAFETY *)
    (*
    Customer data / Kundendaten
    *)
    fCustomerData:		ARRAY [1..iTcHydfCustDataMaxIdx] OF LREAL;
    (*-------------------------------------------------------------------------------------------------------------*)
END_STRUCT
END_TYPE

Hinweise zur Achsinbetriebnahme finden Sie unter Setup.

sParamFileName | Wirkung / Reaktion
MC_AxParamLoad_BkPlcMc, MC_AxParamSave_BkPlcMc | Hier wird der Dateiname (inklusive Pfad) festgelegt, unter dem die Parameter dieser Achse geladen und gespeichert werden.
nProfileType | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc, MC_MoveAbsolute_BkPlcMc, MC_MoveVelocity_BkPlcMc, MC_MoveRelative_BkPlcMc, MC_MoveJoySticked_BkPlcMc | In Abhängigkeit von diesem Parameter wird ein Generator-Baustein zur Stellwerterzeugung aufgerufen. Die MC_Move-Bausteine prüfen die Ausführbarkeit eines Positionierauftrags in Abhängigkeit dieses Parameters. Hinweis: Es sind nur Werte aus E_TcMcProfileType zulässig.
fValve_OverlapComp Wirkung / Reaktion
MC_AxRuntime_BkPlcMc, MC_AxRtFinish_BkPlcMc Sobald die Achse aktiv gefahren wird stellen die Generator-Bausteine diesen Wert vorzeichenrichtig als aktuell wirksame Überdeckungskompensation ein. Dieser Wert wird von den MC_AxRtFinish-Bausteinen als Ausgabe-Anteil zum Stellwert addiert. Typische Werte für Ventile mit Überdeckung sind 0.1 bis 0.2 für 10 bis 20%. Diese Angabe kann in der Regel mit ausreichender Genauigkeit aus dem Ventil-Datenblatt übernommen werden.

Hinweis: Die Überlappung des Ventils kommt durch die Konstruktion des Ventils zustande. In einem Bereich um die Mittelstellung des Ventils ist sowohl die A- als auch die B-Seite abgesperrt oder mit geringem Querschnitt ausschließlich zum Tank hin geöffnet. So wird ein übermäßiger Leckölstrom verhindert und die Achse ist festgestellt.

Hinweis: Bei Nullschnitt-Ventilen ist die Überlappung auf 0.0 zu stellen.

Hinweis: Um den Geschwindigkeitsbereich von 0 bis fRefVelo darzustellen steht nur der Stellwert-Bereich fOverlapComp bis 1.0 zur Verfügung. Dies wird vom MC_AxRtFinish-Baustein berücksichtigt.

fValve_BendPointVelo fValve_BendPointOutput | Wirkung / Reaktion
MC_AxRtFinish_BkPlcMc | Wenn fBendPoint1Velo > 0.0 ist wird der aktive Aussteuerungsbereich des Stellwerts in zwei Bereiche mit unterschiedlicher Steigung unterteilt. Typische Werte sind 0.4 oder 0.6 für 40% oder 60% als fBendPoint1Output und 0.1 bis 0.2 für 10% bis 20% als fBendPoint1Velo. Die Umrechnungskennlinie ist von drei Stützpunkten festgelegt: Stellwert = fOverlapComp für Geschwindigkeit = 0.0 Stellwert = fBendPointOutput für Geschwindigkeit = fBendPointVelo * fRefVelo Stellwert = 1.0 für Geschwindigkeit = fRefVelo Hinweis: Der beschriebene Kennlinienknick kommt durch die Konstruktion des Ventils zustande. Sowohl im positiven als auch im negativen Stellbereich des Ventilschiebers ist die Blende mit einer Stufe ausgeführt. So wird erreicht, dass kleine Geschwindigkeiten feiner dosierbar sind ohne dafür die Maximal-Geschwindigkeit zu verringern. Hinweis: Bei Ventilen ohne Kennlinienknick sind diese Parameter auf 0.0 zu stellen.
nEnc_Type | Wirkung / Reaktion
MC_AxRtEncoder_BkPlcMc, MC_Home_BkPlcMc, MC_SetPosition_BkPlcMc | In Abhängigkeit von diesem Parameter wird ein Encoder-Baustein zur Istwerterfassung aufgerufen. Die Referenzfahrt und die Setzfunktionen für die Istposition reagieren entsprechend. Hinweis: Es sind nur Werte aus E_TcMcEncoderType zulässig.
nEnc_HomingType | Wirkung / Reaktion
MC_Home_BkPlcMc | Dieser Parameter legt den Ablauf der Referenzfahrt fest. Hinweis: Es sind nur Werte aus E_TcMcHomingType zulässig.
fEnc_ZeroShift | Wirkung / Reaktion
MC_AxRtEncoder_BkPlcMc | Dieser Parameter dient der Nullpunkt-Verschiebung bei absoluten Wegmeßsystemen.
fEnc_IncWeighting | Wirkung / Reaktion
MC_AxRtEncoder_BkPlcMc | Dieser Parameter legt die Inkrementbewertung von absoluten und inkrementellen Wegmeßsystemen fest.
fEnc_IncInterpolation | Wirkung / Reaktion
MC_AxRtEncoder_BkPlcMc | Dieser Parameter legt die Inkrementbewertung von absoluten und inkrementellen Wegmeßsystemen fest.
fEnc_RefIndexVelo | Wirkung / Reaktion
MC_Home_BkPlcMc | Mit der hier vorgegebenen Geschwindigkeit wird bei der Referenzfahrt die Nocke bzw. der Festanschlag aufgesucht.
bEnc_RefIndexPositive | Wirkung / Reaktion
MC_Home_BkPlcMc | Dieser Parameter definiert die Bewegungsrichtung bei der Suche der Nocke bzw. des Festanschlag. Die Einstellung TRUE legt als Suchbewegung eine Fahrt in Richtung steigender Positionswerte fest.
fEnc_RefSyncVelo | Wirkung / Reaktion
MC_Home_BkPlcMc | Mit der hier vorgegebenen Geschwindigkeit wird bei der Referenzfahrt von der Nocke freigefahren. Wenn als nEnc_HomingType die Einstellung iTcMc_HomingOnSync vorgegeben ist wird anschließend mit dieser Geschwindigkeit der Synchronpuls des Encoders gesucht.
bEnc_RefSyncPositive | Wirkung / Reaktion
MC_Home_BkPlcMc | Dieser Parameter definiert die Bewegungsrichtung bei der Suche des Synchronpuls des Encoders. Die Einstellung TRUE legt als Suchbewegung eine Fahrt in Richtung steigender Positionswerte fest.
fEnc_DefaultHomePosition | Wirkung / Reaktion
MC_Home_BkPlcMc | Dieser Parameter definiert die Referenzposition der Achse fest.
bEnc_Reversed | Wirkung / Reaktion
MC_AxRtEncoder_BkPlcMc | Dieser Parameter legt die Zählrichtung der Achse fest.
fCycletime Wirkung / Reaktion
MC_AxRuntime_BkPlcMc,

diverse Bausteine

Hier ist die PLC-Taskzykluszeit einzustellen.

Hinweis: Dieser Wert dient als Parameter für alle zeitgesteuerten oder zeitabhängigen Vorgänge. Ein falscher Wert führt dazu, dass Stellwert-Rampen zu schnell oder zu langsam ablaufen oder das Überwachungszeiten nicht korrekt arbeiten.

Hinweis: Bei der Ermittlung der Istgeschwindigkeit wird dieser Parameter verwendet. Ein falscher Wert führt zu nicht korrekten Istwerten.

nDrive_Type | Wirkung / Reaktion
MC_AxRtDrive_BkPlcMc | In Abhängigkeit von diesem Parameter wird ein Drive-Baustein zur Stellwertausgabe aufgerufen. Hinweis: Es sind nur Werte aus E_TcMcDriveType zulässig.
fRefVelo Wirkung / Reaktion

MC_AxRtFinish_BkPlcMc,

diverse Bausteine

Dieser Parameter wird für die Umrechnung von physikalischen Geschwindigkeiten (z.B. in mm/s, Wertebereich ±fRefVelo) in normierte Geschwindigkeiten (ohne Einheit, Wertebereich ±1.0).

Hinweis: Für einen ersten Eingabewert kann eine näherungsweise Berechnung mit Datenblattangaben erfolgen: fRefVelo = 167 * Qnenn / F mit Qnenn in Liter/Minute und F = min (A, B) in cm2.

Hinweis: Als fRefVelo ist immer die höchste fahrbare Geschwindigkeit anzugeben. Dies gilt auch für Differential-Zylinder. Hier ist dann die Angabe für die "schnellere" Richtung zu machen.

Hinweis: Ein falscher Wert führt dazu, dass der Betrag des Stellwerts falsch berechnet wird. Die Reaktion der Achse ist dabei dem Fehler entgegen gerichtet: Eine zu kleine Angabe für fRefVelo führt zu einer überhöhten Achsgeschwindigkeit und umgekehrt.

Hinweis: Ein falscher Wert führt dazu, dass die Überlappungskompensation und die Knickkompensation falsch durchgeführt werden. Dies führt dazu, dass die Geschwindigkeit beim Beschleunigen und Verzögern mehr oder weniger deutlich nichtlinear verlaufen.

fAreaRatio Wirkung / Reaktion

MC_AxRtFinish_BkPlcMc

Dieser Parameter gibt das Flächenverhältnis der A- zur B-Seite des Kolbens an. Dabei wird die Seite als A bezeichnet, deren Beaufschlagung mit Druck bzw. Volumenstrom zu einer Bewegung mit positiver werdenden Istpositionen führt. Dieser Wert ist direkt der mechanischen Konstruktion zu entnehmen und wird für die Umrechnung der Sollgeschwindigkeit in den Stellwert benutzt. Er wirkt dabei so, dass für die gleiche Sollgeschwindigkeit in der langsameren Richtung ein entsprechend größerer Stellwert ausgegeben wird.

Hinweis: Bei Gleichlauf-Zylindern ist dieser Wert auf 1.0 zu stellen. Für Differential-Zylinder ist dieser Wert größer oder kleiner als 1.0 zu setzen.

Hinweis: Ein Wert > 1.0 wird so interpretiert, dass die fRefVelo für die Bewegung in Richtung negativer werdende Istpositionen gilt. In positiver werdender Richtung steht demnach nur fRefVelo / fAreaRatio zur Verfügung.

Hinweis: Ein Wert < 1.0 wird so interpretiert, dass die fRefVelo für die Bewegung in Richtung positiver werdende Istpositionen gilt. In negativer werdender Richtung steht demnach nur fRefVelo / fAreaRatio zur Verfügung.

bSoftEndMinEna | Wirkung / Reaktion
diverse Bausteine | Wenn dieses Signal ansteht wird die Zielposition eines Startbefehls in fTargetPos darauf hin überprüft, ob sie gleich oder größer als bSoftEndMin ist.
bSoftEndMin | Wirkung / Reaktion
diverse Bausteine | Wenn bSoftEndMinEna gesetzt ist wird die Zielposition eines Startbefehls in fTargetPos darauf hin überprüft, ob sie gleich oder größer als dieser Wert ist.
bSoftEndMaxEna | Wirkung / Reaktion
diverse Bausteine | Wenn dieses Signal ansteht wird die Zielposition eines Startbefehls in fTargetPos darauf hin überprüft, ob sie gleich oder kleiner als bSoftEndMax ist.
bSoftEndMax | Wirkung / Reaktion
diverse Bausteine | Wenn bSoftEndMaxEna gesetzt ist wird die Zielposition eines Startbefehls in fTargetPos darauf hin überprüft, ob sie gleich oder kleiner als dieser Wert ist.
fStartRamp | Wirkung / Reaktion
 | Dieser Parameter legt die Steigung der zeitgesteuerten Beschleunigungsrampe fest. Er gibt die Zeit an, in der die Sollgeschwindigkeit fRefVelo erreicht. Wird auf eine kleinere Geschwindigkeit beschleunigt ist die dafür benötigte Zeit entsprechend kürzer. Hinweis: Ein Wert < fCycletime wird nicht akzeptiert. Hinweis: Um diesen Zeitwert in eine Beschleunigung umzurechnen ist folgende Formel zu verwenden: A = fRefVelo / fStartRamp.
 | Dieser Parameter legt die Steigung der zeitgesteuerten Beschleunigungsrampe fest. Er gibt die Zeit an, in der die Sollgeschwindigkeit fRefVelo erreicht. Wird auf eine kleinere Geschwindigkeit beschleunigt ist die dafür benötigte Zeit entsprechend kürzer. Hinweis: Ein Wert < fCycletime wird nicht akzeptiert. Hinweis: Um den Startpunkt verlassen zu können ist eine zeitgesteuerte Anlasserfunktion erforderlich, die mit dem Parameter fStartRamp arbeitet. Dieser Parameter sollte auch einen relativ großen Wert von einigen 10 Sekunden eingestellt werden, um auf der einen Seite ein sicheres Anfahren zu erhalten, auf der anderen Seite die anregungsarme Bewegungsführung nicht unnötig zu beeinträchtigen.
bPosCtrlAccEna | Wirkung / Reaktion
fStartAccDistance Wirkung / Reaktion
Bei Verwendung der weggesteuerten Beschleunigungsrampe kann der Bezugspunkt für die Berechnung des Stellwerts gegenüber dem Startpunkt versetzt werden.

Hinweis: Um eine weggesteuerten oder eine zweiteilige Beschleunigungsrampe zu erhalten sind in diesem und weiteren Parametern besondere Einstellungen zu machen. Näheres dazu finden Sie weiter unten.

Hinweis: Wenn eine reine zeitgesteuerten Beschleunigungsrampe gewünscht wird ist dieser Parameter auf einen größeren positiven Wert wie z.B. 100.0 einzustellen.

fAcc Wirkung / Reaktion
Bei Verwendung der weggesteuerten Beschleunigungsrampe legt dieser Parameter die Beschleunigung fest.

Hinweis: Um eine weggesteuerten oder eine zweiteilige Beschleunigungsrampe zu erhalten sind in diesem und weiteren Parametern besondere Einstellungen zu machen. Näheres dazu finden Sie weiter unten.

Hinweis: Wenn eine reine zeitgesteuerten Beschleunigungsrampe gewünscht wird ist dieser Parameter auf einen kleinen positiven Wert (deutlich kleiner als die bei fStartRamp beschriebene umgerechnete Beschleunigung) wie z.B. 1.0 einzustellen.

Hinweis: Um diese Beschleunigung in einen Zeitwert umzurechnen ist folgende Formel zu verwenden: T = fRefVelo / fAcc.

Dieser Parameter legt die während der Hochlauframpe maximal angewendete Beschleunigung fest.

Hinweis: Um den Startpunkt verlassen zu können ist eine zeitgesteuerte Anlasserfunktion erforderlich, die mit dem Parameter fStartRamp arbeitet. Dieser Parameter sollte auch einen relativ großen Wert von einigen 10 Sekunden eingestellt werden, um auf der einen Seite ein sicheres Anfahren zu erhalten, auf der anderen Seite die anregungsarme Bewegungsführung nicht unnötig zu beeinträchtigen.
fDec Wirkung / Reaktion
Beim Abbremsen von Fahrgeschwindigkeit auf fCreepSpeed wird mit der hier einstellbaren Verzögerung gearbeitet.

Hinweis: Da das Abbremsen mit einer weggesteuerten Verzögerungsrampe erfolgt wird dieser Wert nicht exakt eingehalten. Die Abweichungen sind durch das Arbeitsprinzip bedingt und dienen dazu, die Achse ohne Überlagerung einer Positionsregelung im gestellten Betrieb in die Zielposition zu fahren.

Hinweis: Wenn im praktischen Betrieb die auftretende Verzögerung zeitweise deutlich vom hier eingestellten Wert abweicht und / oder im Verlauf eines Abbremsens stark variiert ist dies in der Regel ein Zeichen dafür, dass die Verzögerung zu hoch oder andere Parameter (z.B. fOverlapComp, fRefVelo, Knickpunkt-Kompensation) deutlich falsch eingestellt sind.

Hinweis: Um diese Verzögerung in einen Zeitwert umzurechnen ist folgende Formel zu verwenden: T = fRefVelo / fDec.

Dieser Parameter legt die während der Hochlauframpe maximal angewendete Verzögerung fest.
fCreepSpeed | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Die Anfahrt der Zielposition erfolgt mit der hier vorgegebenen Geschwindigkeit. Hinweis: Dieser Parameter hat einen wesentlichen Einfluss auf die erreichbare Genauigkeit. Wenn diese Geschwindigkeit mit der Zykluszeit fCycletime multipliziert wird ergibt sich die theoretisch auftretende Streuung bei wiederholten Fahrten. Diese Abschätzung gilt jedoch nur, wenn die Schleichstrecke in fCreepDistance mindestens so groß eingestellt ist, dass die Istgeschwindigkeit der Achse stabil geworden ist.
fCreepDistance Wirkung / Reaktion
MC_AxRuntime_BkPlcMc In dieser Entfernung vom Ziel ist der Stellwert auf fCreepSpeed reduziert. Die endgültige Anfahrt des Ziels erfolgt mit fCreepSpeed.

Hinweis: Dieser Parameter sollte so eingestellt werden, dass die Istgeschwindigkeit der Achse beim Erreichen des Abschaltpunkts stabil geworden ist.

Hinweis: Wenn die Achse mit deutlich variierender Genauigkeit im Ziel ankommt kann dies ein Zeichen für einen zu kleinen Wert in diesem Parameter sein.

fBrakeDistance | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | In dieser Entfernung vom Ziel wird der Stellwert endgültig abgeschaltet. Die Achse kehrt zum eingestellten Ruheverhalten zurück. Hinweis: Wenn die Achse mit deutlich einseitiger verteilter Streuung der Endposition im Ziel ankommt (unter Berücksichtigung der Bewegungsrichtung immer oder überwiegend vor bzw. hinter dem Ziel) ist dies in der Regel ein Zeichen für einen nicht korrekten Wert in diesem Parameter sein.
fBrakeDeadTime Wirkung / Reaktion
MC_AxRuntime_BkPlcMc Für die Entscheidung zum Übergang in das Ruheverhalten kann an Stelle von (oder in Kombination mit) einer Entfernung auch diese Verzögerungszeit verwendet werden. Das Produkt aus der Istgeschwindigkeit und dieser Verzögerungszeit wird vor dem Vergleich mit fBrakeDistance von der Entfernung zum Ziel subtrahiert. Dieses Verfahren verbessert die Wiederholgenauigkeit, in dem es streuende Wirkungen des Stellwerts auf die Istgeschwindigkeit während der Zielannäherung teilweise kompensiert.

Hinweis: Wenn die Achse mit deutlich einseitiger verteilter Streuung der Endposition im Ziel ankommt (unter Berücksichtigung der Bewegungsrichtung immer oder überwiegend vor bzw. hinter dem Ziel) ist dies in der Regel ein Zeichen für einen nicht korrekten Wert in diesem Parameter sein.

Hinweis: Bei Verwendung dieser Kompensation kann es zu unerwarteten Reaktionen (Stopp weit vor dem Ziel) kommen. Siehe hierzu finden Sie in der Knowledge Base unter Trouble Shooting als KP3.

fEmergencyRamp Wirkung / Reaktion
MC_AxRuntime_BkPlcMc Wenn bei fahrender Achse über das Auftragsinterface ein Reset ausgelöst wird muss der Stellwert so schnell wie sinnvoll abgebaut werden. Um die durch ein unmittelbares Abschalten verursachten Probleme (Beschädigung von Maschine, Werkstücken, Ventilen durch z.B. auftretende Kräfte, Druckspitzen, Kavitation) zu vermeiden kann die Verzögerungsrampe für diesen Fall vorgegeben werden.

Hinweis: Der Wert dieses Parameter sollte sinnvollerweise deutlich niedriger als der in fStopRamp sein.

Hinweis: Der Wert dieses Parameter sollte sinnvollerweise deutlich niedriger als der beim Umrechnen von fDec einen Zeitwert erhaltene sein.

Hinweis: Um diesen Zeitwert in eine Verzögerung umzurechnen ist folgende Formel zu verwenden: A = fRefVelo / fEmergencyRamp.

fStopRamp Wirkung / Reaktion
MC_AxRuntime_BkPlcMc Dieser Parameter legt die Steigung der zeitgesteuerten Verzögerungsrampe fest. Er gibt die Zeit an, in der die Sollgeschwindigkeit von fRefVelo auf 0.0 abgebaut wird. Wird von einer kleineren Geschwindigkeit verzögert ist die dafür benötigte Zeit entsprechend kürzer.

Hinweis: Mit dieser Rampe wird beim Übergang in den Ruhezustand der Stellwert von fCreepSpeed auf Null abgebaut.

Hinweis: Ein Wert < fCycletime wird nicht akzeptiert.

Hinweis: Um diesen Zeitwert in eine Verzögerung umzurechnen ist folgende Formel zu verwenden: A = fRefVelo / fStopRamp.

fLagAmp Wirkung / Reaktion
MC_AxRuntime_BkPlcMc Dies ist der Lageregelfaktor im Ruhezustand der Achse. Der Wert ist ein Einheiten_von_fRefVelo pro Einheit_der_Istposition anzugeben. Wenn die Geschwindigkeiten in mm/s und die Positionen in mm dargestellt sind ergibt sich also die Einheit 1/s. Um auf die ebenfalls verbreitete Einheit (m/min)/mm zu kommen ist mit dem Faktor 100/6 zu multiplizieren.

Hinweis: Die besten Ergebnisse erzielt eine Lageregelung mit lagegeregelten Nullschnittventilen.

Hinweis: Wenn keine Lageregelung gewünscht wird ist dieser Parameter auf 0.0 zu stellen.

Hinweis: Wenn eine Ausgabe auf Grund des Parameters fTargetClamping aktiv ist wird keine Lageregelung vorgenommen. Sollte diese Ausgabe zurückgesetzt werden wird eine Lageregelung aktiviert.

Hinweis: Weicht die Position der Achse im Ziel übermäßig von der Sollposition ab ist dieser Parameter zu klein gewählt. Möglicherweise ist die Achse oder das Ventil nicht für eine Lageregelung geeignet und es ist auf ein anderes Ruheverhalten auszuweichen.

Hinweis: Wenn die Achse im Ziel erkennbar zittert oder schwingt ist der Wert dieses Parameters zu groß gewählt. Möglicherweise ist die Achse oder das Ventil nicht für eine Lageregelung geeignet und es ist auf ein anderes Ruheverhalten auszuweichen.

fLagAmpAdaptLimit | Wirkung / Reaktion
fLagAmpAdaptFactor | Wirkung / Reaktion
fZeroCompensation | Wirkung / Reaktion
MC_AxRtFinish_BkPlcMc | Dies ist der Offset-Abgleich für die analoge Stellwertausgabe.
fTargetClamping Wirkung / Reaktion
MC_AxRuntime_BkPlcMc,

MC_AxRtFinish_BkPlcMc

Wenn die Achse durch eine aktive Fahrbewegung ein Ziel erreicht hat wird anschließend im Ruheverhalten dieser Stellwert ausgegeben. So kann ein aktives Anpressen erreicht werden.

Hinweis: Wenn die Fahrbewegung mit einem Reset oder durch Wegfallen der Freigaben abgebrochen wird erfolgt keine Ausgabe dieses Wertes.

Hinweis: Wenn im Ruhezustand nach dem Erreichen des Ziels ein Reset ausgelöst oder die richtungsbezogene Freigabe oder die Reglerfreigabe ungültig werden wird die Ausgabe dieses Wertes eingestellt.

Hinweis: fTargetClamping darf nicht in Kombination mit der automatische Repositionierung aktiv sein. Es besteht sonst die Gefahr, dass ein Überfahren des Ziels eine Repositionierung entgegen der ursprünglichen Fahrtrichtung und somit die anschließende Ausgabe eines Stellwerts entgegen der vorgesehenen Richtung bewirkt. Dies würde zu einem ständigen Hin- und Herpendeln der Achse führen und die vorgesehene Ausgabe eines Anpress-Stellwerts verhindern.

Hinweis: Wenn eine Ausgabe dieses Stellwerts aktiv ist wird keine Lageregelung vorgenommen. Sollte dieser Stellwert zurückgesetzt werden wird eine eventuelle Lageregelung aktiviert.

fReposDistance Wirkung / Reaktion
MC_AxRuntime_BkPlcMc Wenn im Ruhezustand der Achse die Istposition um mehr als den hier eingestellten Wert von der Zielposition abweicht wird ohne externen Startbefehl in einen aktiven Fahrzustand gewechselt. Die Achse fährt die Zielposition mit fCreepSpeed erneut an. Anschließend kehrt sie in den Ruhezustand zurück.

Hinweis: Wenn keine automatische Repositionierung gewünscht wird ist dieser Parameter auf 0.0 zu stellen.

Hinweis: Bei fReposDistance < fBrakeDistance wird keine automatische Repositionierung durchgeführt.

Hinweis: Die automatische Repositionierung darf nicht in Kombination mit fTargetClamping aktiv sein. Es besteht sonst die Gefahr, dass ein Überfahren des Ziels eine Repositionierung entgegen der ursprünglichen Fahrtrichtung und somit die anschließende Ausgabe eines Stellwerts entgegen der vorgesehenen Richtung bewirkt. Dies würde zu einem ständigen Hin- und Herpendeln der Achse führen und die vorgesehene Ausgabe eines Anpress-Stellwerts verhindern.

Hinweis: Wenn die Achse im Ziel ständig mit wechselnder Richtung repositioniert ist der Wert dieses Parameters zu klein gewählt.

fMonPositionRange | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Wenn die Differenz zwischen Istposition und Zielposition der Achse kleiner als der hier eingestellte Wert ist wird dies mit dwTcHydNsDwInTargRng (Bit 3) in nStateDWord signalisiert.
fMonTargetRange, fMonTargetFilter | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Wenn die Differenz zwischen Istposition und Zielposition der Achse ohne Unterbrechung für mindestens die in fMonTargetFilter eingestellte Zeit kleiner als der in fMonTargetRange eingestellte Wert ist wird dies mit dwTcHydNsDwInTarget (Bit 4) in nStateDWord signalisiert.
fJogVeloFast | Wirkung / Reaktion
 | Sollgeschwindigkeit für die schnelle Handfahrt.
fJogVeloSlow | Wirkung / Reaktion
 | Sollgeschwindigkeit für die langsame Handfahrt.
fMaxVelo | Wirkung / Reaktion
MC_MoveAbsolute_BkPlcMc, MC_MoveVelocity_BkPlcMc, MC_MoveRelative_BkPlcMc, MC_MoveJoySticked_BkPlcMc | Die Geschwindigkeitsvorgabe eines Fahrauftrages werden so begrenzt, dass sie kleiner sind als die hier festgelegte Obergrenze.
fMaxAcc | Wirkung / Reaktion
MC_MoveAbsolute_BkPlcMc, MC_MoveVelocity_BkPlcMc, MC_MoveRelative_BkPlcMc, MC_MoveJoySticked_BkPlcMc | Die Beschleunigungsvorgabe eines Fahrauftrages werden so begrenzt, dass sie kleiner sind als die hier festgelegte Obergrenze.
fMaxDec | Wirkung / Reaktion
MC_MoveAbsolute_BkPlcMc, MC_MoveVelocity_BkPlcMc, MC_MoveRelative_BkPlcMc, MC_MoveJoySticked_BkPlcMc | Die Verzögerungsvorgabe eines Fahrauftrages werden so begrenzt, dass sie kleiner sind als die hier festgelegte Obergrenze.
fCustomerData | Wirkung / Reaktion
MC_AxParamLoad_BkPlcMc, MC_AxParamSave_BkPlcMc | Dieses Array[1..iTcHydfCustDataMaxIdx] OF LREAL wird mit den Parametern der Achse gesichert und geladen. Die Werte stehen jedoch der Applikation zur freien Verfügung. Hinweis: Während eines Ladevorgangs ist die Konsistenz dieser Daten nicht gesichert. Es sind entsprechende Vorkehrungen in der Applikation vorzusehen.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcHydAxRtData

TYPE ST_TcHydAxRtData

Die Variablen in dieser Struktur geben den Laufzeit-Zustand der Achse wieder.

Für V2.1:

TYPE ST_TcHydAxRtData :
STRUCT
    (*-------------------------------------------------------------------------------------------------------------*)
    (* Data in this Area has to be supplied by the application *)
    (* Daten in diesem Bereich sind durch die Applikation bereitzustellen *)
    (*-------------------------------------------------------------------------------------------------------------*)
    fActPos:		LREAL := 0.0;
    bActPosCams:	BYTE := 0;
    fActPressure:	LREAL := 0.0;
    nDeCtrlDWord:	DWORD := 0;
    (*-------------------------------------------------------------------------------------------------------------*)
    (* Data in this Area may to be used by the application *)
    (* Daten in diesem Bereich können durch die Applikation verwendet werden *)
    (* Do not change data in this area *)
    (* Daten in diesem Bereich dürfen nicht verändert werden *)
    (*-------------------------------------------------------------------------------------------------------------*)
    iValveOut:	INT := 0;
    iReserve:		WORD := 0;
    fOutput:		LREAL := 0.0;
    nStateDWord:	DWORD := 0;
    nAxisState:	DWORD := 0;
    nCalibrationState:	DWORD := 0;
    fActVelo:		LREAL := 0.0;
    fClampingOutput:	LREAL := 0.0;
    fPosError:	LREAL:=0.0;
    fVeloError:	LREAL:=0.0;
    fLagCtrlOutput:	LREAL := 0.0;
    fDistanceToTarget:	LREAL := 0.0;
    nErrorCode:	DWORD := 0;
    (*-------------------------------------------------------------------------------------------------------------*)
    (* Do not change data in this area *)
    (* Daten in diesem Bereich dürfen nicht verändert werden *)
    (*-------------------------------------------------------------------------------------------------------------*)
    iCurrentStep:	E_TcMcCurrentStep;
    fInternalOutput:	LREAL := 0.0;
    fActiveOverlap:	LREAL := 0.0;
    fStartPos:	LREAL := 0.0;
    fStartRampAnchor:	LREAL := 0.0;
    fDestRampEnd:	LREAL := 0.0;
    fDestPos:		LREAL := 0.0;
    fDestSpeed:	LREAL := 0.0;
    fStartRamp:	LREAL := 0.0;
    fDestAcc:		LREAL := 0.0;
    fDestDec:		LREAL := 0.0;
    fSetSpeed:	LREAL := 0.0;
    fSetSpeedOld:	LREAL := 0.0;
    fSetPos:		LREAL := 0.0;
    fSetPosOld:	LREAL := 0.0;
    fTimerTPM:	LREAL := 0.0;
    fDecDist:		LREAL := 0.0;
    fDecTime:		LREAL := 0.0;
    fAccDist:		LREAL := 0.0;
    fAccTime:		LREAL := 0.0;
    (*-------------------------------------------------------------------------------------------------------------*)
    fGearSetting:	LREAL := 0.0;
    fGearActive:	LREAL := 0.0;
    pMasterRtData:	DWORD := 0;
    pMasterParam:	DWORD := 0;
    (*-------------------------------------------------------------------------------------------------------------*)
    bEncDoLatch:	BOOL := FALSE;
    bEncLatchValid:	BOOL := FALSE;
    fEnc_RefShift:	LREAL := 0.0; (* Homing offset / Refferenzverschiebung *)
    fLatchedPos:	LREAL := 0.0;
    (*-------------------------------------------------------------------------------------------------------------*)
END_STRUCT
END_TYPE

Für V2.2 (nicht freigegeben):

TYPE ST_TcHydAxRtData :
STRUCT
    (*-------------------------------------------------------------------------------------------------------------*)
    fActPos:		LREAL := 0.0;
    bActPosCams:	BYTE := 0;
    fActVelo:		LREAL := 0.0;
    fActPressure:	LREAL := 0.0;
    fReserved_1:	LREAL := 0.0;  (* reserved / reserviert *)
    fReserved_2:	LREAL := 0.0;  (* reserved / reserviert *)
    fReserved_3:	LREAL := 0.0;  (* reserved / reserviert *)
    fReserved_4:	LREAL := 0.0;  (* reserved / reserviert *)
    fReserved_5:	LREAL := 0.0;  (* reserved / reserviert *)
    (*-------------------------------*)
    fSetPos:		LREAL := 0.0;
    fSetSpeed:	LREAL := 0.0;
    fReserved_6:	LREAL := 0.0;  (* reserved / reserviert *)
    fReserved_7:	LREAL := 0.0;  (* reserved / reserviert *)
    (*-------------------------------*)
    fPosError:	LREAL:=0.0;
    fDistanceToTarget:	LREAL := 0.0;
    nStateDWord:	DWORD := 0;
    nDeCtrlDWord:	DWORD := 0;
    (*-------------------------------*)
    nAxisState:	DWORD := 0;
    nCalibrationState:	DWORD := 0;
    nErrorCode:	DWORD := 0;
    iCurrentStep:	E_TcMcCurrentStep;
    (*-------------------------------*)
    fClampingOutput:	LREAL := 0.0;
    fLagCtrlOutput:	LREAL := 0.0;
    fActiveOverlap:	LREAL := 0.0;
    fOutput:		LREAL := 0.0;
    (*-------------------------------*)
    fStartPos:	LREAL := 0.0;
    fStartRamp:	LREAL := 0.0;
    fStartRampAnchor:	LREAL := 0.0;
    fAccDist:		LREAL := 0.0;
    fAccTime:		LREAL := 0.0;
    (*-------------------------------*)
    fDestRampEnd:	LREAL := 0.0;
    fDestPos:		LREAL := 0.0;
    fDestSpeed:	LREAL := 0.0;
    fDestAcc:		LREAL := 0.0;
    fDestDec:		LREAL := 0.0;
    fReserved_8:	LREAL := 0.0;  (* reserved / reserviert *)
    fDestCreepDistance:LREAL := 0.0;
    fDestCreepSpeed:	LREAL := 0.0;
    fDecDist:		LREAL := 0.0;
    fDecTime:		LREAL := 0.0;
    fSetSpeedOld:	LREAL := 0.0;
    fSetPosOld:	LREAL := 0.0;
    fTimerTPM:	LREAL := 0.0;
    (*-------------------------------*)
    fGearSetting:	LREAL := 0.0;
    fGearActive:	LREAL := 0.0;
    pMasterRtData:	DWORD := 0;
    pMasterParam:	DWORD := 0;
    (*-------------------------------*)
    bEncDoLatch:	BOOL := FALSE;
    bEncLatchValid:	BOOL := FALSE;
    fEnc_RefShift:	LREAL := 0.0; (* Homing offset / Refferenzverschiebung *)
    fLatchedPos:	LREAL := 0.0;
    (*-------------------------------*)
    fOverride:	LREAL := 1.0;
    fCreepOverride:	LREAL := 1.0;
    fTargetPos:	LREAL := 0.0;
    (*-------------------------------*)
    fBrakeOnTimer:	LREAL := 0.0;
    fBrakeOffTimer:	LREAL := 0.0;
    fBrakeSafetyTimer:	LREAL := 0.0;
    bBrakeOff:	BOOL := FALSE;
    bBrakeOffInverted:	BOOL := FALSE;
    (*-------------------------------*)
    bTargeting:	BOOL := FALSE;
    (*-------------------------------*)
    fReserve:		ARRAY [1..10] OF LREAL := 0.0;
    bReserve:		ARRAY [1..11] OF BOOL := FALSE;
    nReserve:		ARRAY [1..10] OF DWORD := 0;
    (*-------------------------------------------------------------------------------------------------------------*)
END_STRUCT
END_TYPE

fActPos | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Dies ist der zentrale (von der PLC-Applikation zu versorgende) Achs-Istwert für Achsen mit echter Positionserfassung: Diverse Bausteine werten diese Variable zur Berechnung von Stellwerten, zur (optionalen) Lageregelung, zum (optionalen) Repositionieren und zum Umschalten zwischen Fahrzuständen aus.
bActPosCams | Wirkung / Reaktion
 | Dies ist der zentrale (von der PLC-Applikation zu versorgende) Achs-Istwert für Achsen ohne echte Positionserfassung. Derzeit ist kein Positionierverfahren implementiert, dass mit dieser Variablen arbeitet.
fActPressure | Wirkung / Reaktion
 | Dies ist ein optionaler (von der PLC-Applikation zu versorgende) Neben-Istwert der Achse.
nDeCtrlDWord Wirkung / Reaktion
MC_AxRtSetControllerEnable_BkPlcMc, MC_AxRtSetFeedEnableMinus_BkPlcMc, MC_AxRtSetFeedEnablePlus_BkPlcMc, MC_AxRtSetReferencingCamSignal_BkPlcMc Freigaben und andere Steuerbits der Achse:
Bit | Signal-Belegung
0 | Reglerfreigabe = dwTcHydDcDwCtrlEnable
1 | Richtungsbezogene Vorschubfreigabe, positiv = dwTcHydDcDwFdPosEna
2 | Richtungsbezogene Vorschubfreigabe, negativ = dwTcHydDcDwFdNegEna
3 | reserviert
4 | reserviert
5 | Referenzier-Nocken = dwTcHydDcDwRefIndex
6 | reserviert
7 | reserviert
8 | reserviert
9 | reserviert
10 | reserviert
11 | reserviert
12 | reserviert
13 | reserviert
14 | reserviert
15 | reserviert

iValveOut | Wirkung / Reaktion
MC_AxRtFinish_BkPlcMc, MC_AxRuntime_BkPlcMc | Hier wird der Stellwert als INT-Wert im Bereich -32768 bis +32767 ausgegeben. In dieser Form kann der Stellwert unmittelbar auf Analogausgaben z.B. vom Typ KL4032, KL4034, KL4132 oder IP4132, IE4132 ausgegeben werden.
iM2400Out | Wirkung / Reaktion
FB_TcHydRtExtM2400 | Hier wird ein zuvor von einem FB_TcHydAxRtFinish Baustein bearbeiteter Stellwert an das Datenformat des M2400-Moduls angepasst.
fOutput | Wirkung / Reaktion
MC_AxRtFinish_BkPlcMc | Hier wird der Stellwert als LREAL-Wert im Bereich -1.0 bis +1.0 ausgegeben. In dieser Form kann er vorteilhaft für Scope-Aufzeichnungen oder zum Umrechnen in nicht standardisierte Ausgabe-Formate verwendet werden.
nStateDWord Wirkung / Reaktion

MC_AxRuntime_BkPlcMc

Statusbits der Achse. Bitmasken sind unter Global Constants abgelegt.
Bit | Signal-Belegung
0 | Achse ist betriebsbereit = dwTcHydNsDwFunctional
1 | Achse ist referenziert = dwTcHydNsDwReferenced
2 | Achse im logischen Stillstand, fährt nicht aktiv = dwTcHydNsDwSteady
3 | Achse ist im Zielbereichsfenster = dwTcHydNsDwInTargRng
4 | Achse in Zielposition = dwTcHydNsDwInTarget
5 | reserviert
6 | reserviert
7 | Achse wurde gestoppt oder führt einen Stopp aus = dwTcHydNsDwStopped
8 | Achse führt Fahrauftrag aus = dwTcHydNsDwBusy
9 | Achse fährt in Richtung positiverer Positionen = dwTcHydNsDwMoveUp
10 | Achse fährt in Richtung negativerer Positionen = dwTcHydNsDwMoveDown
11 | reserviert
12 | Achse fährt mit konstanter Geschwindigkeit = dwTcHydNsDwConstVelo
13 | reserviert
14 | reserviert
15 | reserviert
16 | reserviert
17 | reserviert
18 | reserviert
19 | reserviert
20 | reserviert
21 | reserviert
22 | reserviert
23 | reserviert
24 | reserviert
25 | reserviert
26 | reserviert
27 | reserviert
28 | reserviert
29 | reserviert
30 | reserviert
31 | Achse im Fehlerzustand = dwTcHydNsDwErrState
nAxisState Wirkung / Reaktion
MC_AxRuntime_BkPlcMc Hier wird über Zahlenwerte kodiert der aktuelle Bewegungszustand der Achse dargestellt:
0 | Ruhezustand, kein Fahrauftrag
1 | nicht benutzt
2 | nicht benutzt
3 | Achse fährt mit konstanter Geschwindigkeit
4 | Achse beschleunigt
5 | Achse verzögert

fActVelo | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Der Baustein erzeugt durch numerisches Differenzieren die Istgeschwindigkeit der Achse.
fClampingOutput | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Hier wird der aktuell wirksame Stellwertanteil der Pressdruckausgabe abgelegt. Hinweis: Der Wert kann manipuliert werden, wobei die Verträglichkeit mit dem Verhalten der Bausteine beachtet werden muss. Bei einem Update der Bibliothek ist die Applikation zu überprüfen.
fDistanceToTarget | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Hier wird der Restweg bis zum Ziel abgelegt.
nErrorCode | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Der aktuelle Fehlercode der Achse. Dieser Wert wird bei einem Reset oder Start der Achse gelöscht und anschließend beim ersten Auftreten eines Fehlers auf einen Fehlercode gesetzt. Die auftretenden Werte sind unter Global Constants abgelegt.
iCurrentStep | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | In dieser Variablen ist der aktuelle Fahrzustand der Achse kodiert. Die Konstanten sind in E_TcHydCurrentStep festgelegt. Hinweis: Dieser Wert wird beim Starten einer Achse berechnet und darf nicht manipuliert werden.
fInternalOutput | Wirkung / Reaktion
MC_AxRtFinish_BkPlcMc | Dies ist ein interner Zwischenwert der Bausteine. Hinweis: Dieser Wert wird beim Starten einer Achse berechnet und darf nicht manipuliert werden.
fActiveOverlap | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc, MC_AxRtFinish_BkPlcMc | Dies ist ein interner Zwischenwert der Bausteine. Hinweis: Dieser Wert wird beim Starten einer Achse berechnet und darf nicht manipuliert werden.
fStartPos | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Bei einem Startbefehl wird fActPos hierher kopiert.
fStartRampEnd | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Dies ist der Bezugswert für die weggeführte Beschleunigung. Hinweis: Dieser Wert wird beim Starten einer Achse berechnet und darf nicht manipuliert werden.
fDestRampEnd | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Dies ist der Bezugswert für das weggeführte Bremsen. Hinweis: Dieser Wert wird beim Starten einer Achse berechnet und darf nicht manipuliert werden.
fDestPos | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Bei einem Startbefehl wird die Zielposition aus dem Auftrag hierher kopiert.
fSetSpeed | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc, MC_AxRtFinish_BkPlcMc | Dies ist ein interner Zwischenwert der Bausteine. Hinweis: Dieser Wert wird während der Bewegung einer Achse berechnet und darf nicht manipuliert werden.
fTimerTPM | Wirkung / Reaktion
MC_AxRuntime_BkPlcMc | Dies ist ein interner Zwischenwert der Bausteine. Hinweis: Dieser Wert wird beim Starten einer Achse berechnet und darf nicht manipuliert werden.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcMcAuxDataLabels

TYPE ST_TcMcAuxDataLabels

In dieser Struktur werden die Beschriftungstexte der kundenspezifischen Achsparameter abgelegt. Eine Struktur dieses Typs kann durch einen MC_AxUtiStandardInit_BkPlcMc Baustein durch einen Pointer in der Axis_Ref_BkPlcMc Strktur mit der Achse verbunden werden.

TYPE ST_TcMcAuxDataLabels:
STRUCT
    stLabel:		ARRAY [1..20] OF STRING(20);
END_STRUCT
END_TYPE

stLabel: Die Beschriftungstexte.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcPlcMcAx2000In

TYPE ST_TcPlcMcAx2000In

Diese Struktur enthält die Eingangsabbild-Variablen eines Antriebs.

TYPE ST_TcPlcMcAx2000In :
STRUCT
    DriveError:	UDINT:=0;
    ActualTorque:	ARRAY [0..1] OF UINT:=0;
    ActualVelo:	ARRAY [0..1] OF UINT:=0;
    ActualPos:	ARRAY [0..1] OF UINT:=0;
    DriveState:	ARRAY [0..4] OF USINT:=0;
    ActualPosEx:	ARRAY [0..1] OF UINT:=0;
    DigInputs:	DWORD:=0;
    AnaInputs:	ARRAY [0..1] OF UINT:=0;
    (**)
    bPowerOk:		BOOL:=FALSE;
    bReserved:	BOOL:=FALSE;
    (**)
    BoxState:		UINT:=0;
    btemp:		BYTE:=0;
END_STRUCT
END_TYPE

nDriveError: Bausteine vom Typ MC_Power_BkPlcMc überwachen hier den Betriebszustand eines externen Leistungsteils.

ActualPos: Bausteine vom Typ MC_AxRtEncoderAx2000_BkPlcMc verwenden diesen Wert für die Ermittlung der Istposition.

uiBoxState: Status-Wort des externen Leistungsteils.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcPlcMcAx2000Out

TYPE ST_TcPlcMcAx2000Out

Diese Struktur enthält die Ausgangsabbild-Variablen eines Antriebs.

TYPE ST_TcPlcMcAx2000Out :
STRUCT
    DriveCtrl:	ARRAY [0..3] OF USINT:=0;
    NominalTorque:	ARRAY[0..1] OF UINT:=0;
    NominalVelo:	DINT:=0;
    DigOutputs:	WORD:=0;
    AnaOutputs:	ARRAY[0..1] OF UINT:=0;
    LED_Control:	BYTE:=0;
    LEDs1:		BYTE:=0;
    LEDs2:		BYTE:=0;
    LEDs3:		BYTE:=0;
    TermDiag:		UINT:=0;
    Ctrl0:		BYTE:=0;
    Ctrl1:		BYTE:=0;
END_STRUCT
END_TYPE

DriveCtrl: Bausteine vom Typ MC_Power_BkPlcMc geben hier Aktivierungssignale an ein externes Leistungsteil aus.

NominalVelo: Hier wird durch einen Baustein des Typs MC_AxRtDriveAx2000_BkPlcMc der Ausgabewert für die Sollgeschwindigkeit bereitgestellt.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcPlcMcDriveIn

TYPE ST_TcPlcMcDriveIn

Diese Struktur enthält die Eingangsabbild-Variablen eines Antriebs.

Für V2.1:

TYPE ST_TcPlcMcDriveIn :
STRUCT
    bPowerOk:		BOOL:=FALSE;
    bEnAck:		BOOL:=FALSE;
    bReady:		BOOL:=FALSE;
    (**)
    bKL2531State:	BYTE:=0;
    uiKL2531State2:	WORD:=0;
    (**)
    uiBoxState:	UINT:=0;
    (**)
    nReserve:		ARRAY [1..20] OF BYTE;
END_STRUCT
END_TYPE

Für V2.2 (nicht freigegeben):

TYPE ST_TcPlcMcDriveIn :
STRUCT
    bPowerOk:		BOOL:=FALSE;
    bEnAck:		BOOL:=FALSE;
    bReady:		BOOL:=FALSE;
    (**)
    bTerminalState:	BYTE:=0;
    uiTerminalData:	WORD:=0;
    uiKL2531State2:	WORD:=0;
    (**)
    uiBoxState:	UINT:=0;
    wDevState:	WORD:=0;
    wWcState:		BYTE:=0;
    (**)
    nReserve:		ARRAY [1..16] OF BYTE;
END_STRUCT
END_TYPE

bPowerOk: Dieses Signal wird von Bausteinen des Typs MC_Power_BkPlcMc ausgewertet.

bEnAck: reserviert.

bReady: reserviert.

bKL2531State: Status-Byte einer KL2531 Stepper Leistungsklemme. Dieses Signal wird von Bausteinen des Typs MC_AxRtDriveKL2531_BkPlcMc ausgewertet.

uiKL2531State2: Status-Wort einer KL2531 Stepper Leistungsklemme.

uiBoxState: Status-Wort des Buskopplers.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcPlcMcDriveOut

TYPE ST_TcPlcMcDriveOut

Diese Struktur enthält die Ausgangsabbild-Variablen eines Antriebs.

Für V2.1:

TYPE ST_TcPlcMcDriveOut :
STRUCT
    nDacOut:		INT:=0;
    bDigOutAp:	BOOL:=FALSE;
    bDigOutAn:	BOOL:=FALSE;
    bDigOutBp:	BOOL:=FALSE;
    bDigOutBn:	BOOL:=FALSE;
    uiCount:		UINT:=0;
    (**)
    bPowerOn:		BOOL:=FALSE;
    bEnable:		BOOL:=FALSE;
    bEnablePos:	BOOL:=FALSE;
    bEnableNeg:	BOOL:=FALSE;
    (**)
    uiDacOutA:	UINT:=0;
    uiDacOutB:	UINT:=0;
    bMovePos:		BOOL:=FALSE;
    bMoveNeg:		BOOL:=FALSE;
    (**)
    bBrakeOff:	BOOL:=FALSE;
    bBrakeOffInverted:	BOOL:=FALSE;
    (**)
    bKL2531Ctrl:	BYTE:=0;
    uiKL2531Ctrl2:	WORD:=0;
    (**)
    nReserve:		ARRAY [1..20] OF BYTE;
    (**)
END_STRUCT
END_TYPE

Für V2.2 (nicht freigegeben):

TYPE ST_TcPlcMcDriveOut :
STRUCT
    nDacOut:		INT:=0;
    bDigOutAp:	BOOL:=FALSE;
    bDigOutAn:	BOOL:=FALSE;
    bDigOutBp:	BOOL:=FALSE;
    bDigOutBn:	BOOL:=FALSE;
    uiCount:		UINT:=0;
    (**)
    bPowerOn:		BOOL:=FALSE;
    bEnable:		BOOL:=FALSE;
    bEnablePos:	BOOL:=FALSE;
    bEnableNeg:	BOOL:=FALSE;
    (**)
    uiDacOutA:	UINT:=0;
    uiDacOutB:	UINT:=0;
    bMovePos:		BOOL:=FALSE;
    bMoveNeg:		BOOL:=FALSE;
    (**)
    bBrakeOff:	BOOL:=FALSE;
    bBrakeOffInverted:	BOOL:=FALSE;
    (**)
    bTerminalCtrl:	BYTE:=0;
    uiKL2531Ctrl2:	WORD:=0;
    nResetState:	BYTE:=0;
    (**)
    uiBoxState:	UINT:=0;
    wDevState:	WORD:=0;
    wWcState:		BYTE:=0;
    (**)
    nReserve:		ARRAY [1..16] OF BYTE;
    (**)
END_STRUCT
END_TYPE

nDacOut: Dieses analoge Ausgangssignal wird von Bausteinen des Typs MC_AxRtDriveKL4032_BkPlcMc, MC_AxRtDriveM2400_BkPlcMc oder MC_AxRtDriveKL2521_BkPlcMc erzeugt.

bDigOutAp, bDigOutAn, bDigOutBp, bDigOutBn: Diese digitalen Signale werden von Bausteinen des Typs MC_AxRtDriveLowCostStepper_BkPlcMc erzeugt.

uiCount: Dieses Signal wird von Bausteinen des Typs MC_AxRtDriveLowCostStepper_BkPlcMc erzeugt und von Bausteinen des Typs MC_AxRtEncoderLowCostStepper_BkPlcMc ausgewertet.

bPowerOn, bEnable, bEnablePos, bEnableNeg: Diese Signale werden von Bausteinen des Typs MC_Power_BkPlcMc aktualisiert.

uiDacOutA, uiDacOutA: Diese analogen Ausgangssignale werden von Bausteinen des Typs MC_AxRtDriveIx2512_BkPlcMc erzeugt.

bMovePos, bMoveNeg: Diese Signale geben das Vorzeichen des Stellwerts wieder.

bKL2531Ctrl: Steuer-Byte einer KL2531 Stepper Leistungsklemme. Dieses Signal wird von Bausteinen des Typs MC_AxRtDriveKL2531_BkPlcMc erzeugt.

uiKL2531Ctrl2: Steuer-Wort einer KL2531 Stepper Leistungsklemme.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcPlcMcEncoderIn

TYPE ST_TcPlcMcEncoderIn

Diese Struktur enthält die Eingangsabbild-Variablen eines Encoders.

Für V2.1:

TYPE ST_TcPlcMcEncoderIn :
STRUCT
    uiCount:		UINT:=0;
    uiLatch:		UINT:=0;
    usiStatus:	USINT:=0;

    uiPZDL_RegDaten:	UINT:=0; (* KL5001 *)
    uiPZDH:		UINT:=0; (* KL5001 *)
    usiRegStatus:	USINT:=0; (* KL5001 *)

    bDigInA:		BOOL:=FALSE; (* DigInc *)
    bDigInB:		BOOL:=FALSE; (* DigInc *)

    bDigCamMM:	BOOL:=FALSE; (* DigCam *)
    bDigCamM:		BOOL:=FALSE; (* DigCam *)
    bDigCamP:		BOOL:=FALSE; (* DigCam *)
    bDigCamPP:	BOOL:=FALSE; (* DigCam *)
END_STRUCT
END_TYPE

Für V2.2 (nicht freigegeben):

TYPE ST_TcPlcMcEncoderIn :
STRUCT
    uiCount:		UINT:=0;
    uiLatch:		UINT:=0;
    usiStatus:	USINT:=0;
    udiCount:		UDINT:=0;

    uiPZDL_RegDaten:	UINT:=0; (* KL5001 *)
    uiPZDH:		UINT:=0; (* KL5001 *)
    usiRegStatus:	USINT:=0; (* KL5001 *)

    bDigInA:		BOOL:=FALSE; (* DigInc *)
    bDigInB:		BOOL:=FALSE; (* DigInc *)

    bDigCamMM:	BOOL:=FALSE; (* DigCam *)
    bDigCamM:		BOOL:=FALSE; (* DigCam *)
    bDigCamP:		BOOL:=FALSE; (* DigCam *)
    bDigCamPP:	BOOL:=FALSE; (* DigCam *)

    uiBoxState:	UINT:=0;
    wDevState:	WORD:=0;
    wWcState:		BYTE:=0;

    nReserve:		ARRAY [1..20] OF BYTE;
END_STRUCT
END_TYPE

uiCount: Dieses Zählersignal wird vom Bausteinen des Typs MC_AxRtEncoderKL3042_BkPlcMc ausgewertet.

uiLatch: Dieses Zählersignal wird vom Bausteinen des Typs MC_AxRtEncoderKL5101_BkPlcMc ausgewertet.

usiStatus: Diese Statusbyte wird vom Bausteinen des Typs MC_AxRtEncoderKL5101_BkPlcMc ausgewertet.

uiPZDL_RegDaten, uiPZDH: Dieses Zählersignal wird vom Bausteinen des Typs MC_AxRtEncoderKL5001_BkPlcMc ausgewertet.

usiRegStatus: Diese Statusbyte wird vom Bausteinen des Typs MC_AxRtEncoderKL5001_BkPlcMc ausgewertet.

bDigInA, bDigInB: Diese digitalen Eingangssignale werden vom Bausteinen des Typs MC_AxRtEncoderDigInc_BkPlcMc ausgewertet.

bDigCamMM, bDigCamM, bDigCamP, bDigCamPP: Diese digitalen Eingangssignale werden vom Bausteinen des Typs MC_AxRtEncoderDigCam_BkPlcMc ausgewertet.


TcPlcHydraulics: PLCopen Motion Control: Datentypen:ST_TcPlcMcEncoderOut

TYPE ST_TcPlcMcEncoderOut

Diese Struktur enthält die Ausgangsabbild-Variablen eines Encoders.

TYPE ST_TcPlcMcEncoderOut :
STRUCT
    usiCtrl:		USINT:=0;
    uiTerminalData:	WORD:=0;

    uiBoxState:	UINT:=0;
    wDevState:	WORD:=0;
    wWcState:		BYTE:=0;

    nReserve:		ARRAY [1..20] OF BYTE;
END_STRUCT
END_TYPE

usiCtrl: Dieses Steuerbyte wird von Bausteinen des Typs MC_AxRtEncoderKL5101_BkPlcMc verwendet.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcPlcMcLogBuffer

TYPE ST_TcPlcMcLogBuffer

Eine Variable mit dieser Struktur bildet den LogBuffer der Library. Näheres über das Anlegen eines LogBuffers finden Sie unter FAQ #10 in der Knowledge Base.

Achtung: Die Daten in dieser Struktur dürfen nicht durch die Applikation verändert werden.

TYPE ST_TcMcLogBuffer:
STRUCT
    ReadIdx:		INT:=0;
    WriteIdx:		INT:=0;
    MessageArr:	ARRAY [0..19] OF ST_TcPlcMcLogEntry;
END_STRUCT
END_TYPE

ReadIdx: Der Leseindex des Buffers.

WriteIdx: Der Schreibindex des Buffers.

MessageArr: Die aktuell gespeicherten Meldungen.


TcPlcHydraulics: PLCopen Motion Control: Datentypen: ST_TcPlcMcLogEntry

TYPE ST_TcPlcMcLogEntry

Eine Variable mit dieser Struktur enthält eine Meldung des LogBuffer der Library. Sie wird als Bestandteil in ST_TcPlcMcLogBuffer verwendet. Näheres über das Anlegen eines LogBuffers finden Sie unter FAQ #10 in der Knowledge Base.

Achtung: Die Daten in dieser Struktur dürfen nicht durch die Applikation verändert werden.

TYPE ST_TcPlcMcLogEntry:
STRUCT
    TimeLow:		UDINT:=0;
    TimeHigh:		UDINT:=0;
    LogLevel:		DWORD:=0;
    Source:		DWORD:=0;
    Message:		STRING(255);
    ArgType:		INT:=0;
    diArg:		DINT:=0;
    lrArg:		LREAL:=0;
    sArg:		STRING(255);
END_STRUCT
END_TYPE

TimeLow, TimeHigh: Der Timestamp der Meldung. Hier wird der Zeitpunkt festgehalten, zu dem die Meldung erzeugt wurde.

LogLevel: Eine Kennzeichnung der Dringlichkeit der Meldung. Hier sollten nur Werte aus einem festgelegten Zahlenvorrat erscheinen.

Source: Eine Kennzeichnung der Quelle der Meldung. Hier sollten nur Werte aus einem festgelegten Zahlenvorrat erscheinen.

Message: Der Meldungstext mit einem optionalen Platzhaltern für einen variablen Bestandteil.

ArgType: Der Typ des optionalen Bestandteils.

diArg: Wenn ein optionaler Bestandteil vom Typ DINT verwendet wird befindet sich sein Wert hier.

lrArg: Wenn ein optionaler Bestandteil vom Typ LREAL verwendet wird befindet sich sein Wert hier.

sArg: Wenn ein optionaler Bestandteil vom Typ STRING verwendet wird befindet sich sein Wert hier.


TcPlcHydraulics: PLCopen Motion Control: System: Controller: MC_AxCtrlAutoZero_BkPlcMc

FUNCTION_BLOCK MC_AxCtrlAutoZero_BkPlcMc

Der Funktionsbaustein führt einen automatischen Nullpunktabgleich aus.

VAR_INPUT
    Enable:		BOOL:=FALSE;
    EnableOnMoving:	BOOL:=FALSE;
    OffsetLimit:	LREAL:=0.0;
    Tn:		LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
    Active:		BOOL;
    Limiting:		BOOL;
END_VAR

Enable: Dieser Eingang kontrolliert die Aktivität des Reglers.

EnableOnMoving: Dieser Eingang kontrolliert die Aktivität des Reglers.

Tn: Die Nachstellzeit des Reglers.

OffsetLimit: Der Wert in fZeroCompensation wird auf diesen Wert begrenzt.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Active: Hier wird signalisiert, dass der Baustein den Wert von fZeroCompensation in ST_TcHydAxParam aktiv verstellt.

Limiting: Hier wird signalisiert, dass der Wert von fZeroCompensation in ST_TcHydAxParam die von OffsetLimit festgelegte Grenze erreicht hat.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.

Solange Enable auf FALSE steht wird der Baustein nicht aktiv. Wird Enable auf TRUE gesetzt entscheidet der Baustein selbständig, ob er aktiv oder inaktiv ist. Dabei werden bei einer Achse im Zustand iTcHydStateIdle die Werte von fPosError und fActVelo berücksichtigt. Ist zusätzlich EnableOnMoving auf TRUE gesetzt wird der Baustein auch dann aktiv, wenn bei einer Achse in einem ungestörten und aktiven Zustand die Werte von fSetSpeed und fActVelo dies erlauben.

Im aktiven Zustand wird der Wert von fZeroCompensation in ST_TcHydAxParam so nachgeführt, dass die Achse eine zumindest geringe Bewegung in die erwünschte Richtung zeigt. Dabei legt Tn die Zeit fest, in der bei einem bleibenden hohen Fehler eine Vollaussteuerung erreicht würde. Ist der Baustein inaktiv sind Error und Active FALSE, ErrorID ist 0 und der Baustein führt den Wert von fZeroCompensation in ST_TcHydAxParam nicht nach.

Hinweis: Die Begrenzung auf den von OffsetLimit festgelegten Wertebereich ist auch dann aktiv, wenn der Baustein nicht aktiv ist. Der Ausgang Limiting wird aktualisiert.

Hinweis: Der Wert von OffsetLimit wird wie auch fZeroCompensation in ST_TcHydAxParam als Offsetspannung betrachtet. Somit entspricht der Wert 10.0 einer Vollaussteuerung. In der Regel ist hier je nach Einsatzfall ein Wert zwischen 0.1 und 1.0 sinnvoll.

Integration des Bausteins in die Applikation

In der Aufrufreihenfolge der Bausteine einer Achse sollte ein MC_AxCtrlAutoZero_BkPlcMc unmittelbar vor dem MC_AxRtFinish_BkPlcMc Baustein stehen. Wird an Stelle der Einzelbausteine ein MC_AxStandardBody_BkPlcMc Baustein aufgerufen sollte der MC_AxCtrlAutoZero_BkPlcMc vor diesem Baustein aufgerufen werden.

Achtung: Wenn beim Betrieb der Achse Situationen vorkommen, in denen die Achse eine Reglerfreigabe anstehen hat, aber nicht ihr normales Bewegungsverhalten zeigt ist es zwingend erforderlich, den MC_AxCtrlAutoZero_BkPlcMc Bausteins zu disablen. Denkbare Ursachen für eine solche Situation sind zum Beispiel das Anfahren eines Blocks mit oder ohne Übergang in eine Druckregelung oder ein Absenken oder Abschalten der Versorgung. Wird dies nicht beachtet kann der Wert von fZeroCompensation in ST_TcHydAxParam in willkürlicher Richtung bis zur festgelegten Begrenzung laufen. Sobald die Achse zu einem späteren Zeitpunkt wieder reaktionsfähig wird ist eine unter Umständen gefährliche Bewegung unvermeidbar. Das Positionierverhalten wird anschließend stark beeinträchtigt sein. Wird die Achse ohne EnableOnMoving kann sie den verstellten Offset dann unter Umständen nicht mehr automatisch korrigieren. Die Achse wird dann außerhalb des Zielfensters stehen bleiben und niemals oder zumindest erst nach einer erheblichen Zeit die Bewegung als abgeschlossen melden.

Hinweis: Bei Kombination mit einem MC_AxStandardBody_BkPlcMc Baustein werden alle Reaktionen des MC_AxCtrlAutoZero_BkPlcMc Bausteins um einen SPS Zyklus verzögert wirksam. In der Regel ist dies kein Problem. Sollte dieser Versatz störend sein müssen die Einzelbausteine für Encoder usw. verwendet und der MC_AxCtrlAutoZero_BkPlcMc Baustein unmittelbar vor dem MC_AxRtFinish_BkPlcMc Baustein aufgerufen werden.


TcPlcHydraulics: PLCopen Motion Control: System: Controller: MC_AxCtrlPressure_BkPlcMc

FUNCTION_BLOCK MC_AxCtrlPressure_BkPlcMc

Der Funktionsbaustein regelt den an einer Achse wirksamen Druck so, dass in ST_TcHydAxRtData.fActPressure ein gewünschter Vorgabewert aufgebaut und eingehalten wird.

Hinweis: Die Erfassung des Istdruck kann in den meisten Fällen mit Bausteinen vom Typ MC_AxRtReadPressureSingle_BkPlcMc oder MC_AxRtReadPressureDiff_BkPlcMc erfolgen.

VAR_INPUT
    Enable:		BOOL:=FALSE;
    Reset:		BOOL:=TRUE;
    kP:		LREAL:=0.0;
    Tn:		LREAL:=0.0;
    SetPressure:	LREAL:=0.0;
    PreSet:		LREAL:=0.0;
    WindupLimit:	LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

Enable: Durch ein TRUE an diesem Eingang wird der Regler aktiviert.

Reset: Durch ein TRUE an diesem Eingang wird der Regler zurückgesetzt. Der Speicher des I-Anteils wird abgelöscht.

kP: Der Verstärkungsfaktor des P-Anteils.

Tn: Die Nachstellzeit des I-Anteils.

SetPressure: Der Druck-Sollwert.

PreSet: Hier kann ein Voreinstellwert festgelegt werden, mit dem ein Initialwert für den I-Anteil des Reglers berechnet wird. Auf diesen Wert wird der I-Anteil bei Aktivierung vorgeladen.

WindupLimit: Hier kann ein Begrenzungswert für den I-Anteil festgelegt werden. Eine solche Begrenzung verhindert ein extremes Verhalten des I-Anteils in Situationen, in denen die Strecke nicht auf die Ausgaben des Reglers reagiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.

Durch ein TRUE an Reset wird der Baustein unabhängig von den anderen Steuersignalen in einen Ruhezustand versetzt. Dann ist sowohl der P- als auch der I-Anteil gelöscht. Durch Enable kann festgelegt werden, ob der Baustein den aktiven Zustand annimmt.

Zunächst ermittelt der Baustein, ob er den aktiven Zustand annehmen oder beenden muss. Dazu wird das Signale Enable ausgewertet. Bei einer steigenden Flanke wird der I-Anteil mit PreSet initialisiert. Wenn der zu SetPressure passende Ausgabewert bekannt ist kann dies für ein schnelleres Erreichen des ausgeregelten Zustands genutzt werden. Anschließend wird mit kP ein P-Anteil und mit Tn ein I-Anteil berechnet. Die Summe dieser Regler-Anteile wird als Stellwert in ST_TcHydAxRtData.fSetSpeed ausgegeben. Da dieser Regler die Funktion eines Stellwertgenerators übernimmt löscht er ST_TcHydAxRtData.fLagCtrlOutput. Der nach dem Reglerbaustein zu platzierende MC_AxRtFinish_BkPlcMc Baustein berücksichtigt die Reaktion dann automatisch.

Der Übergang in den inaktiven Zustand führt zu einem Löschen der Regleranteile.

Integration des Bausteins in die Applikation

Ein Baustein dieses Typs muss nach der Istwert- und Istdruck-Erfassung aufgerufen werden. Er übernimmt die volle Kontrolle der Achse und ersetzt einen eventuell vorhandenen Baustein für die Stellwert-Generierung.

Hinweis: Ist sowohl ein Baustein für die Stellwert-Generierung als auch ein MC_AxCtrlPressure_BkPlcMc Baustein vorhanden sind diese Bausteine entweder alternativ aufzurufen oder der MC_AxCtrlPressure_BkPlcMc Baustein muss nach dem Stellwert-Baustein stehen, sodass er dessen Ausgaben überschreibt. Beides ist nicht mit jedem Generator-Typ zulässig.

Inbetriebnahme

Die vier Parameter kP, Tn, PreSet und WindupLimit lassen eine Anpassung des Reglers an eine Reihe unterschiedlicher Aufgaben zu.

Achtung: Während der Inbetriebnahme kann es dazu kommen, dass die Achse mit dem volle Systemdruck beaufschlagt wird oder dass der Druck gedämpfte oder ungedämpfte Schwindungen in einem weiten Frequenzbereich auftreten. Sollte dies für die Achse oder ihre Umgebung gefährlich sein sind Vorkehrungen zu treffen. In jedem Fall sollten Maßnahmen vorgesehen werden, die Regelungen schnell zu deaktivieren.

Zunächst sollten für Tn und Preset der Wert 0.0 und für WindupLimit der Wert 1.0 eingetragen werden. Der Regler arbeitet jetzt als reiner P-Regler. Nachdem ein Block angefahren und der Regler aktiviert ist (Enable:=TRUE, Reset:=FALSE, SetPressure:=Sollwert) kann jetzt der maximal anwendbare Wert für kP festgestellt werden. Dazu ist der Wert schrittweise zu erhöhen, bis sich eine Schwingneigung zeigt. Durch wiederholtes Deaktivieren und Aktivieren sollte überprüft werden, ob der Regler tatsächlich stabil ist. In der Praxis wird der Wert zwischen etwa 0.1 und 0.5 liegen.

Als nächster Parameter ist Tn einzustellen. Dazu sollte zunächst ein relativ großer Wert wie 0.5 vorgegeben werden. Jetzt sollte der Istdruck mit großer Trägheit aber recht genau auf den Sollwert eingeregelt werden. Durch schrittweises verkleinern wird jetzt die maximal mögliche Einstellung ermittelt. Auch dabei ist durch wiederholtes Deaktivieren und Aktivieren zu überprüfen, ob der Regler tatsächlich stabil ist. Zeigt sich eine Neigung zur gedämpften Schwingung beim Aktivieren ist Tn bereits zu niedrig eingestellt.

Die Einstellung von WindupLimit beeinflusst das Verhalten des Reglers nicht auf direktem Weg. Vielmehr dienen dieser Parameter dazu, das Übergangsverhalten zu beeinflussen. Wenn der Regler den Druck unmittelbar aufbauen kann, weil die Achse keinen Weg zurücklegen muss sollte der Wert von WindupLimit so gewählt werden, das der I-Anteil nicht größer als das drei- bis vierfache des Wertes erreichen kann, der entsprechend der Ventilcharakteristik benötigt wird. Auf diese Weise kann das Einregeln des Drucks deutlich schneller erreicht werden. Hat die Achse noch einen Weg zurückzulegen wird ein zu niedriger Wert dieses Parameters die Bewegung der Achse zum Erreichen der Arbeitsposition bestimmen. Ist der Parameter zu niedrig gewählt wird die Achse sehr langsam oder kann sogar stehen bleiben. Andererseits wird ein zu hoher Wert dazu führen, dass die Achse die Arbeitsposition mit eher hoher Geschwindigkeit erreicht und der Druckanstieg steil ist. Der dabei auftretende Spitzendruck kann dann erhebliche Werte annehmen.

Hinweis: Es ist wenn irgend möglich zu vermeiden, einen Druckregler zu aktivieren, wenn sich die Achse nicht zumindest sehr nah an ihrer Arbeitsposition befindet.

Der Wert für PreSet kann für zwei Vorgehensweisen eingesetzt werden. Soll der Druckregler den Stellwert eines anderen Bausteins kontinuierlich fortsetzen kann dessen Stellwert für die Berechnung von PreSet vorgegeben werden. So können die Stellwertsprünge beim Aktivieren des Reglers verringert oder völlig vermieden werden.

Ist der vom Regler zu erzeugende Stellwert bekannt kann als PreSet ein Wert vorgegeben werden, der in der Nähe dieses Wertes liegt. So kann die Zeit verringert werden, die der I-Anteil zum Aufbauen des Stellwerts benötigt. Da auch der P-Anteil wirksam ist sollte jedoch ein Wert eingestellt werden, der höher als der exakte Wert ist.

Hinweis: Letztlich ist bei der Einstellung dieser Parameter durch kleine Veränderungen und Beurteilung des Reglerverhaltens ein der Aufgabe angemessener Satz von Werten zu finden.

Beispiel für das Verhalten des Reglers, wenn die Achse zunächst einen Weg zurücklegen muss, bevor sie den geforderten Druck aufzubauen vermag.

Beispiel für das Verhalten des Reglers, wenn die Achse unmittelbar den geforderten Druck aufzubauen vermag.


TcPlcHydraulics: PLCopen Motion Control: System: Controller: MC_AxCtrlPressureCompensation_BkPlcMc

FUNCTION_BLOCK MC_AxCtrlPressureCompensation_BkPlcMc

Der Funktionsbaustein passt die Ausgabewerte einer Achse an den Ventildruckabfall an. Er entspricht in der Wirkung in etwa einer Druckwaage.

Hinweis: Für den Einsatz dieses Bausteins ist es erforderlich, sowohl den Systemdruck als auch den Achsdruck mit ausreichender Auflösung, Genauigkeit und Abtastrate zu erfassen.

Achtung: Dieser Baustein ersetzt einen Baustein des Typs MC_AxRtFinish_BkPlcMc, der für die betreffende Achse nicht aufgerufen werden darf.

VAR_INPUT
    SystemPressure:	LREAL:=0.0;
    NominalPressure:	LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

SystemPressure: Hier ist der Versorgungsdruck zu übergeben.

NominalPressure: Hier ist der Nominaldruck des Ventils (laut Datenblatt des Herstellers) zu übergeben.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.

Der Ventildruckabfall wird aus SystemPressure und ST_TcHydAxRtData.fActPressure errechnet. Alle die Öffnung des Ventils betreffenden internen Größen werden unter Berücksichtigung von NominalPressure angepasst. Anschließend wird die Arbeit eines Bausteins des Typs MC_AxRtFinish_BkPlcMc ausgeführt:

  • Der Vorschubstellwert und die Lageregelreaktion werden zum Ausgabestellwert zusammengefasst.
  • Die Flächenkompensation wird berücksichtigt.
  • Ein Kennlinienknick wird kompensiert.
  • Die Überdeckungskompensation, die Klemmstellwert und die Offsetkompensation werden eingerechnet.


TcPlcHydraulics: PLCopen Motion Control: System: Controller: MC_AxCtrlPullbackOnPressure_BkPlcMc

FUNCTION_BLOCK MC_AxCtrlPullbackOnPressure_BkPlcMc

Der Funktionsbaustein korrigiert den Lageregelsollwert einer Achse so, dass in ST_TcHydAxRtData.fActPressure ein gewünschter Vorgabewert nicht überschritten wird. Dabei gelten die Regeln der verdrängend wirkenden Druckregelung.

Hinweis: Die Erfassung des Istdruck kann in den meisten Fällen mit Bausteinen vom Typ MC_AxRtReadPressureSingle_BkPlcMc oder MC_AxRtReadPressureDiff_BkPlcMc erfolgen.

VAR_INPUT
    EnableP:		BOOL:=FALSE;
    EnableM:		BOOL:=FALSE;
    LowerLimit:	LREAL:=0.0;
    UpperLimit:	LREAL:=1000000.0;
    kP:		LREAL:=0.0;
    Tn:		LREAL:=0.0;
    SetPressure:	LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    LowLimiting:	BOOL;
    UpLimiting:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

EnableP: Durch ein TRUE an diesem Eingang wird dem Regler erlaubt, den Lageregelsollwert in positiver Richtung zu beeinflussen.

EnableM: Durch ein TRUE an diesem Eingang wird dem Regler erlaubt, den Lageregelsollwert in negativer Richtung zu beeinflussen.

LowerLimit: Die untere Grenze für den Lageregelsollwert.

UpperLimit: Die obere Grenze für den Lageregelsollwert.

kP: Der Verstärkungsfaktor des P-Anteils.

Tn: Die Nachstellzeit des I-Anteils.

SetPressure: Der Druck-Sollwert.

LowLimiting: Ein TRUE an diesem Ausgang signalisiert, dass der Lageregelsollwert den Wert von LowerLimit erreicht hat.

UpLimiting: Ein TRUE an diesem Ausgang signalisiert, dass der Lageregelsollwert den Wert von UpperLimit erreicht hat.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.

Das Verhalten des Bausteins wird durch die Eingänge EnableP und EnableM festgelegt. Sie legen fest, ob der Baustein in positiver oder negativer Richtung eingreifen soll. Es ist dabei zu beachten, dass der Baustein die Aufgabe hat, einen Druckistwert zu begrenzen. Wenn also eine äußere Kraft in positiver Richtung einwirkt wird beim Überschreiten eines festgelegten Drucks der Lageregelsollwert in Richtung sinkender Positionswerte verschoben, wenn EnableM gesetzt ist. Bei entgegengesetzter Kraftrichtung gibt EnableP eine Reglerreaktion in positiver Richtung frei.

Zunächst ermittelt der Baustein, ob er aktiv werden muss. Dazu werden die Signale EnableP, EnableM und die Differenz zwischen SetPressure und ST_TcHydAxRtData.fActPressure ausgewertet.

Im aktiven Zustand wird mit kP ein P-Anteil und mit Tn ein I-Anteil berechnet. Die Summe dieser Regler-Anteile ergibt eine Geschwindigkeit, mit der eine Veränderung des Lageregelsollwert in ST_TcHydAxRtData.fDestPos durchgeführt wird.

Der inaktiven Zustand führt zu einem Löschen der Regleranteile.

Integration des Bausteins in die Applikation

Ein Baustein dieses Typs muss nach der Istwert- und Istdruck-Erfassung und nach der Stellwert-Generierung aufgerufen werden. Werden Bausteine zur Geschwindigkeit- oder Positionsregelung aufgerufen sind diese hinter dem Druckregler-Baustein zu platzieren.

Der Druckregler berechnet eine Reaktion und trägt sie unmittelbar in die ST_TcHydAxRtData Struktur ein. Es ist sicher zu stellen, dass dieser Druckregler nicht gleichzeitig mit einer Fahrbewegung aktiv wird.


TcPlcHydraulics: PLCopen Motion Control: System: Controller: MC_AxCtrlSlowDownOnPressure_BkPlcMc

FUNCTION_BLOCK MC_AxCtrlSlowDownOnPressure_BkPlcMc

Der Funktionsbaustein bremst eine Achse so ab, dass in ST_TcHydAxRtData.fActPressure ein gewünschter Vorgabewert nicht überschritten wird. Dabei gelten die Regeln der ablösenden Druckregelung.

Hinweis: Die Erfassung des Istdruck kann in den meisten Fällen mit Bausteinen vom Typ MC_AxRtReadPressureSingle_BkPlcMc oder MC_AxRtReadPressureDiff_BkPlcMc erfolgen.

VAR_INPUT
    EnableP:		BOOL:=FALSE;
    EnableM:		BOOL:=FALSE;
    Reset:		BOOL:=TRUE;
    kP:		LREAL:=0.0;
    Tn:		LREAL:=0.0;
    SetPressure:	LREAL:=0.0;
    PreSet:		LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Response:		LREAL;
    Active:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

EnableP: Durch ein TRUE an diesem Eingang wird dem Regler erlaubt, den Ausgabewert bei einer Bewegung in positiver Richtung zu beeinflussen.

EnableM: Durch ein TRUE an diesem Eingang wird dem Regler erlaubt, den Ausgabewert bei einer Bewegung in negativer Richtung zu beeinflussen.

Reset: Durch ein TRUE an diesem Eingang wird der Regler zurückgesetzt. Der Speicher des I-Anteils wird abgelöscht.

kP: Der Verstärkungsfaktor des P-Anteils.

Tn: Die Nachstellzeit des I-Anteils.

SetPressure: Der Druck-Sollwert.

PreSet: Hier kann ein Voreinstellwert festgelegt werden, mit dem ein Initialwert für den I-Anteil des Reglers berechnet wird. Auf diesen Wert wird der I-Anteil bei Aktivierung vorgeladen.

Response: Der Ausgabewert des Druckreglers.

Active: Ein TRUE an diesem Ausgang signalisiert, dass der Baustein einen Response erzeugt, um die Druckregelung zu übernehmen.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.

Durch ein TRUE an Reset wird der Baustein unabhängig von den anderen Steuersignalen in einen Ruhezustand versetzt. Dann ist Active FALSE und Response := 0.0, weil sowohl der P- als auch der I-Anteil gelöscht sind.

Das Verhalten des Bausteins wird im aktiven Betrieb durch die Eingänge EnableP und EnableM festgelegt. Sie legen fest, ob der Baustein bei einer Bewegung in positiver oder negativer Richtung eingreifen soll. Es ist dabei zu beachten, dass der Baustein die Aufgabe hat, einer aktiven Fahrbewegung entgegen zu wirken. Wenn also eine Fahrbewegung in positiver Richtung ausgeführt wird, die einen festgelegten Druck nicht überschreiten soll ist EnableP zu setzen. Bei entgegengesetzter Fahrtrichtung gibt EnableM eine druckbegrenzende Reglerreaktion in positiver Richtung frei.

Zunächst ermittelt der Baustein, ob er den aktiven Zustand annehmen oder beenden muss. Dazu werden die Signale EnableP, EnableM, das Vorzeichen von ST_TcHydAxRtData.fSetSpeed und die Differenz zwischen SetPressure und ST_TcHydAxRtData.fActPressure ausgewertet.

Beim Übergang in den aktiven Zustand wird der I-Anteil mit PreSet initialisiert. Dabei wird er mit einem Startwert geladen, der in Kombination mit ST_TcHydAxRtData.fSetSpeed den Wert von PreSet ergibt. Wenn der zu SetPressure passende Ausgabewert bekannt ist kann dies für ein schnelleres Erreichen des ausgeregelten Zustands genutzt werden. In der Praxis sollte die Wahl dieses Parameters vom Verhalten der Regelstrecke abhängig gemacht werden. Diese ist vor allem durch die Nachgiebigkeit des eingepressten Objekts, aber auch durch die gewählte Geschwindigkeit beeinflusst. Ist der Anstieg im Vergleich zur verwendeten Tn eher langsam sollte als Vorgabe der aktuelle Stellwert aus ST_TcHydAxRtData.fSetSpeed verwendet werden. Reagiert der Istdruck mit einem schnellen Anstieg ist ein Wert zu empfehlen, der den Solldruck und die Druckverstärkung des Ventils berücksichtigt.

Anschließend wird mit kP ein P-Anteil und mit Tn ein I-Anteil berechnet. Die Summe dieser Regler-Anteile wird als Response ausgegeben und der Zustand des Reglers mit TRUE an Active signalisiert.

Der Übergang in den inaktiven Zustand führt zu einem Löschen der Regleranteile und wird mit FALSE an Active markiert.

Integration des Bausteins in die Applikation

Ein Baustein dieses Typs muss nach der Istwert- und Istdruck-Erfassung und nach der Stellwert-Generierung aufgerufen werden. Werden Bausteine zur Geschwindigkeit- oder Positionsregelung aufgerufen sind diese ebenfalls vor dem Druckregler-Baustein zu platzieren oder die Reaktionen der Regler sind mit entsprechender Sorgfalt zu koordinieren.

Der Druckregler berechnet zwar eine Reaktion, trägt sie aber nicht in die ST_TcHydAxRtData Struktur ein. Dies ist von der Applikation in Abhängigkeit von Active und unter eventueller Berücksichtigung von Signalen anderer Regler zu tun. In der Regel wird dabei Response auf die Variable ST_TcHydAxRtData.fLagCtrlOutput zugewiesen. Der nach dem Reglerbaustein zu platzierende MC_AxRtFinish_BkPlcMc Baustein berücksichtigt die Reaktion dann automatisch.


TcPlcHydraulics: PLCopen Motion Control: System: Controller: MC_AxCtrlStepperDeStall_BkPlcMc

FUNCTION_BLOCK MC_AxCtrlStepperDeStall_BkPlcMc

Der Funktionsbaustein überwacht die Bewegung einer Schrittmotorachse, die mit einem Encoder betrieben wird.

Hinweis: Der Einsatz eines echter Encoder (nicht Encoder-Emulation durch Impulszählung einer Ausgabe-Klemme) ist für die Funtion dieses Bausteins unverzichtbar.

Hinweis: Auch beim Einsatz eines solchen Bausteins kann es zum Stall (Drehmomentabriss) kommen. Es kann also auch dann nicht vorausgesetzt werden, dass die Geschwindigkeit konstant ist.

VAR_INPUT
    EnableAcc:	BOOL:=FALSE;
    EnableDec:	BOOL:=FALSE;
    Reset:		BOOL:=FALSE;
    VeloLimit:	LREAL:=0.0;
    LimitFilter:	LREAL:=0.0;
    UpdateFilter:	LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Active:		BOOL;
    Activated:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

EnableAcc, EnableDec: Dieser Eingang

Reset: Dieser Eingang kontrolliert die Aktivität des Reglers.

VeloLimit: Die Schwelle für die Geschwindigkeitsabweichung, ab der die Stall-Situation erkannt wird.

LimitFilter: Die Zeit, für die eine zu große Geschwindigkeitsabweichung ununterbrochen vorliegen muss, damit die Stall-Situation erkannt wird.

UpdateFilter: Die Zeitkonstante, mit der im Baustein der Geschwindigkeits-Stellwert an die Istgeschwindigkeit angepasst wird.

Active: Hier wird signalisiert, dass eine Stall-Situation erkannt ist.

Activated: Hier wird signalisiert, dass seit dem letzten Start einer aktiven Achsbewegung eine Stall-Situation erkannt wurde.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten überprüft der Baustein, ob er den Zustand wechseln muss. Er geht in den aktiven Zustand, wenn die interne Bewegungsphase dies nach den Regeln von EnableAcc, EnableDec zulässt und der Geschwindigkeitsfehler für mindestens LimitFilter ununterbrochen den Wert von VeloLimit überschreitet. Dabei erlaubt EnableAcc dem Baustein, während der Phasen mit konstanter oder im Betrag steigenden Phasen einzugreifen. EnableDec gibt die Aktivität des Bausteins für Phasen mit im Betrag sinkender oder konstanter Geschwindigkeit frei. Beim Wechsel in den aktiven Zustand werden Active und Activated gesetzt.

In den inaktiven Zustand wechselt der Baustein, wenn der Geschwindigkeitsfehler auf den halben Wert von VeloLimit abgebaut wurde. Beim Wechsel in den inaktiven Zustand wird Active gelöscht.

Im aktiven Zustand wird der Stellwert mit der Zeitkonstanten UpdateFilter an die Istgeschwindigkeit angeglichen. Ist die Zeitkonstante auf 0.0 gesetzt, wird die Istgeschwindigkeit direkt übernommen.

Im inaktiven Zustand wird Activated gelöscht, wenn die Achse den Ruhezustand verlasst und eine aktive Bewegung beginnt.

Hinweis: Da der Baustein die Differenz zwischen Soll- und Istgeschwindigkeit auswertet ist die korrekte Einstellung der Referenzgeschwindigkeit beim Einsatz des Bausteins wichtig. Eine zu ungenaue Einstellung dieses Parameters kann dazu führen, dass der Baustein ohne Notwendigkeit in die Bewegung eingreift.

Der nachstehende Scope View zeigt eine Positionierung, in deren Verlauf zwei mal auf ein Hindernis aufgefahren wurde. Dadurch kam die Achse jeweils vollständig zum Stillstand.

Integration des Bausteins in die Applikation

Ein Baustein dieses Typs muss nach der Istwert-Erfassung und Stellwert-Generierung aufgerufen werden. Der Baustein überlagert seine Reaktion mit der des Stellwert-Generators und trägt sie in die ST_TcHydAxRtData Struktur ein. Der nach dem Reglerbaustein zu platzierende MC_AxRtFinish_BkPlcMc Baustein berücksichtigt die Reaktion dann automatisch.


TcPlcHydraulics: PLCopen Motion Control: System: Controller: MC_AxCtrlVelocity_BkPlcMc

FUNCTION_BLOCK MC_AxCtrlVelocity_BkPlcMc

Der Funktionsbaustein regelt die Geschwindigkeit einer Achse.

Hinweis: In der Regel wird die Geschwindigkeit einer Hydraulik-Achse nicht geregelt. Vielmehr wird die Positionierung mit gestellten Sollwerten und adaptiven Rampen ausreichend genau durchgeführt. Nur in Sonderfällen kann eine Regelung sinnvoll werden, um zum Beispiel eine spezielle Anforderung der Applikation zu erfüllen oder eine während der aktiven Bewegung besonders stark zum Schwingen neigende Achse durch einen phasenkorrigierenden Stellwertanteil elektronisch zu bedämpfen.

Hinweis: Wird eine Geschwindigkeitsregelung nur während der aktiven Fahrbewegungen gewünscht ist ein Baustein vom Typ MC_AxCtrlVeloMoving_BkPlcMc einzusetzen.

VAR_INPUT
    Enable:		BOOL:=FALSE;
    Reset:		BOOL:=FALSE;
    KpVelo:		LREAL:=0.0;
    TnVelo:		LREAL:=0.0;
    PreSet:		LREAL:=0.0;
    WindupLimit:	LREAL:=1.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

Enable: Dieser Eingang kontrolliert die Aktivität des Reglers.

Reset: Dieser Eingang kontrolliert die Aktivität des Reglers. Er löscht den I-Anteil.

KpVelo: Der Verstärkungsfaktor des P-Reglers.

TnVelo: Die Nachstellzeit des I-Anteils.

PreSet: Bei einem Übergang in den aktiven Zustand wird der I-Anteil mit diesem Wert vorgeladen.

WindupLimit: Die Reaktion des I-Anteils wird auf diesen Wert begrenzt.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.

Zunächst ermittelt der Baustein, ob der Regler aktiv oder inaktiv zu sein hat. Dazu werden Enable und Reset ausgewertet. Wechselt die Achse in den aktiven Zustand wird der I-Anteil mit PreSet initialisiert. Im aktiven Zustand wird aus einer Differenz zwischen ST_TcHydAxRtData.fActVelo und ST_TcHydAxRtData.fSetSpeed * ST_TcHydAxParam.fRefVelo mit KpVelo und TnVelo eine Regler-Reaktion errechnet und in ST_TcHydAxRtData.fLagCtrlOutput eingetragen. Dabei wird der Anteil des I-Reglers auf WindupLimit begrenzt. Der I-Anteil kann deaktiviert werden, indem für TnVelo der Wert 0.0 vorgegeben wird.

Während einer Referenzfahrt wird mindestens einmal die Istposition gesetzt. Dies führt zu einer eventuell sehr großen Istwert-Änderung, was für eine Zyklus eine sehr hohe Geschwindigkeit vortäuscht. Dies wird vom Baustein dadurch berücksichtigt, dass für diesen eine Zyklus nicht die möglicherweise verfälschte, sondern die zumindest annähernd richtige Istgeschwindigkeit des vorherigen Zyklus angenommen wird.

Integration des Bausteins in die Applikation

Ein Baustein dieses Typs muss nach der Istwert- und Istdruck-Erfassung, der Stellwert-Generierung und zur Positionsregelung aufgerufen werden. Werden Bausteine zur Druckregelung aufgerufen, sind diese nach dem Geschwindigkeitsregler zu platzieren oder die Reaktionen der Regler sind mit entsprechender Sorgfalt zu koordinieren.

Der Geschwindigkeitsregler berechnet eine Reaktion und trägt sie in die ST_TcHydAxRtData Struktur ein. Der nach dem Reglerbaustein zu platzierende MC_AxRtFinish_BkPlcMc Baustein berücksichtigt die Reaktion dann automatisch.


TcPlcHydraulics: PLCopen Motion Control: System: Controller: MC_AxCtrlVeloMoving

FUNCTION_BLOCK MC_AxCtrlVeloMoving_BkPlcMc

Der Funktionsbaustein regelt die Geschwindigkeit einer Achse während aktiver Fahrbewegungen.

Hinweis: In der Regel wird die Geschwindigkeit einer Hydraulik-Achse nicht geregelt. Vielmehr wird die Positionierung mit gestellten Sollwerten und adaptiven Rampen ausreichend genau durchgeführt. Nur in Sonderfällen kann eine Regelung sinnvoll werden, um zum Beispiel eine spezielle Anforderung der Applikation zu erfüllen oder eine während der aktiven Bewegung besonders stark zum Schwingen neigende Achse durch einen phasenkorrigierenden Stellwertanteil elektronisch zu bedämpfen.

Hinweis: Eine ständig wirksame Geschwindigkeitsregelung kann mit einem Baustein vom Typ MC_AxCtrlVelocity_BkPlcMc erreicht werden.

VAR_INPUT
    KpVelo:		LREAL:=0.0;
    TnVelo:		LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

KpVelo: Der Verstärkungsfaktor des P-Reglers.

TnVelo: Die Nachstellzeit des I-Anteils.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc.

Zunächst ermittelt der Baustein, ob die Achse aktiv verfahren wird. Dazu werden ST_TcHydAxRtData.iCurrentStep und ST_TcHydAxRtData.nCalibrationState ausgewertet. Ist die Achse aktiv wird aus einer Differenz zwischen ST_TcHydAxRtData.fActVelo und ST_TcHydAxRtData.fSetSpeed * ST_TcHydAxParam.fRefVelo mit KpVelo und TnVelo eine Regler-Reaktion errechnet und in ST_TcHydAxRtData.fLagCtrlOutput eingetragen. Der I-Anteil kann deaktiviert werden, indem für TnVelo der Wert 0.0 vorgegeben wird.

Während einer Referenzfahrt wird mindestens einmal die Istposition gesetzt. Dies führt zu einer eventuell sehr großen Istwert-Änderung, was für eine Zyklus eine sehr hohe Geschwindigkeit vortäuscht. Dies wird vom Baustein dadurch berücksichtigt, dass für diesen eine Zyklus nicht die möglicherweise verfälschte, sondern die zumindest annähernd richtige Istgeschwindigkeit des vorherigen Zyklus angenommen wird.

Integration des Bausteins in die Applikation

Ein Baustein dieses Typs muss nach der Istwert- und Istdruck-Erfassung, der Stellwert-Generierung und zur Positionsregelung aufgerufen werden. Werden Bausteine zur Druckregelung aufgerufen, sind diese nach dem Geschwindigkeitsregler zu platzieren oder die Reaktionen der Regler sind mit entsprechender Sorgfalt zu koordinieren.

Der Geschwindigkeitsregler berechnet eine Reaktion und trägt sie in die ST_TcHydAxRtData Struktur ein. Der nach dem Reglerbaustein zu platzierende MC_AxRtFinish_BkPlcMc Baustein berücksichtigt die Reaktion dann automatisch.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDrive_BkPlcMc

FUNCTION_BLOCK MC_AxRtDrive_BkPlcMc

Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe auf einer Hardware-Baugruppe. Dazu wird in Abhängigkeit des in Axis.pStAxParam als nDrive_Type eingestellten Wertes ein Baustein des Typs MC_AxRtDriveAx2000_BkPlcMc, MC_AxRtDriveKL2521_BkPlcMc, MC_AxRtDriveKL2531_BkPlcMc, MC_AxRtDriveKL2541_BkPlcMc, MC_AxRtDriveKL4032_BkPlcMc, MC_AxRtDriveLowCostStepper_BkPlcMc oder MC_AxRtDriveM2400_BkPlcMc aufgerufen.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Wenn der Pointer pStAxRtData der Achse initialisiert ist wird sie in einen Störzustand versetzt werden.
  • Wenn nDrive_Type in pStAxParams auf einen nicht zulässigen Wert eingestellt ist reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdDriveType. Wenn der Pointer pStAxRtData der Achse initialisiert ist wird sie in einen Störzustand versetzt werden.
  • Wenn einer der spezifischen Unterbausteine ein Problem erkennt wird dieser (sofern möglich) die Achse in einen Störzustand versetzen. Dieser Fehler wird an den Ausgängen des MC_AxRtDrive_BkPlcMcwiederholt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse entsprechend nDrive_Type in Axis.pStAxParams verarbeitet.

Hinweis: Informationen über die erforderlichen Verknüpfung von E/A-Komponenten mit den Eingangs- und Ausgangsstrukturen der Achse finden sie in der Knowledge Base unter FAQ #7.

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDriveAx2000_BkPlcMc

FUNCTION_BLOCK MC_AxRtDriveAx2000_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe an einen AX2000 Servoverstärker am Beckhoff LightBus oder Sercos-Feldbus. Er wird von Bausteinen des Typs MC_AxRtDrive_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nDrive_Type der Wert iTcMc_DriveAx2000 eingestellt ist.

Hinweis: Die Hydraulik Library bietet auch im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxAx2000In in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxAx2000Out in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wenn fEnc_IncWeighting in pStAxParams auf einen nicht zulässigen Wert eingestellt ist reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdEncScaling. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse entsprechend den Regeln des AX-Verstärkers in Axis. pStAxAx2000Out zur Verfügung gestellt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDriveKL2521_BkPlcMc

FUNCTION_BLOCK MC_AxRtDriveKL2521_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe auf eine Pulsausgabeklemme KL2521. Er wird von Bausteinen des Typs MC_AxRtDrive_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nDrive_Type der Wert iTcMc_DriveKL2521 eingestellt ist.

Hinweis: Die Hydraulik Library bietet auch im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxDriveOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse als Ganzzahl im korrekten Wertebereich in Axis.pStAxDriveOutput zur Verfügung gestellt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDriveKL2531_BkPlcMc

FUNCTION_BLOCK MC_AxRtDriveKL2531_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe auf eine Schrittmotorendstufenklemme KL2531. Er wird von Bausteinen des Typs MC_AxRtDrive_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nDrive_Type der Wert iTcMc_DriveKL2531 eingestellt ist.

Hinweis: Die Hydraulik Library bietet auch im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxDriveOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse als Ganzzahl im korrekten Wertebereich in Axis.pStAxDriveOutput zur Verfügung gestellt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDriveKL2541_BkPlcMc

FUNCTION_BLOCK MC_AxRtDriveKL2541_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe auf eine Schrittmotorendstufenklemme KL2541. Er wird von Bausteinen des Typs MC_AxRtDrive_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nDrive_Type der Wert iTcMc_DriveKL2541 eingestellt ist.

Hinweis: Die Hydraulik Library bietet auch im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxDriveOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse als Ganzzahl im korrekten Wertebereich in Axis.pStAxDriveOutput zur Verfügung gestellt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDriveKL4032_BkPlcMc

FUNCTION_BLOCK MC_AxRtDriveKL4032_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe auf einer ±10 V Ausgabeklemme. Er wird von Bausteinen des Typs MC_AxRtDrive_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nDrive_Type der Wert iTcMc_DriveKL4032 eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxDriveOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse als Ganzzahl im Bereich ±32767 in nDacOut in Axis.pStAxDriveOutput zur Verfügung gestellt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDriveLowCostStepper_BkPlcMc

FUNCTION_BLOCK MC_AxRtDriveLowCostStepper_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe auf digitalen Ausgangsklemmen. Er wird von Bausteinen des Typs MC_AxRtDrive_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nDrive_Type der Wert iTcMc_DriveLowCostStepper, iTcMc_DriveLowCostStepperHS oder iTcMc_DriveLowCostStepperFS eingestellt ist.

VAR_INPUT
    FullStep:		BOOL;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

FullStep: Hier wird festgelegt, ob das Halbschritt- oder das Vollschritt-Verfahren verwendet wird.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxDriveOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse als Bitmuster im korrekten Wertebereich in Axis.pStAxDriveOutput zur Verfügung gestellt.

Hinweis: Dieser Baustein wird in der Regel in Zusammenarbeit mit einem MC_AxRtEncoderLowCostStepper_BkPlcMc Baustein eingesetzt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDriveM2400_BkPlcMc

FUNCTION_BLOCK MC_AxRtDriveM2400_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe auf einem von vier Kanälen einer ±10 V M2400 Ausgabebox. Er wird von Bausteinen des Typs MC_AxRtDrive_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nDrive_Type einer der Werte iTcMc_DriveM2400_D1, iTcMc_DriveM2400_D2, iTcMc_DriveM2400_D3 oder iTcMc_DriveM2400_D4 eingestellt ist.

VAR_INPUT
    nMask:		WORD;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

nMask: Hier wird vom aufrufenden MC_AxRtDrive_BkPlcMc Baustein eine Maske übergeben, die den gewünschten Kanal der Ausgabebox adressiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxDriveOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse als Ganzzahl im korrekten Wertebereich und mit eingeblendeter Maske in nDacOut in Axis.pStAxDriveOutput zur Verfügung gestellt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoder_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoder_BkPlcMc

Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den Eingangsinformationen einer Hardware-Baugruppe. Dazu wird in Abhängigkeit des in Axis.pStAxParam als nEnc_Type eingestellten Wertes ein Baustein des Typs MC_AxRtEncoderAx2000_BkPlcMc, MC_AxRtEncoderDigInc_BkPlcMc, MC_AxRtEncoderKL2521_BkPlcMc, MC_AxRtEncoderKL2531_BkPlcMc, MC_AxRtEncoderKL2541_BkPlcMc, MC_AxRtEncoderKL3042_BkPlcMc, MC_AxRtEncoderKL5001_BkPlcMc, MC_AxRtEncoderKL5101_BkPlcMc, MC_AxRtEncoderM3120_BkPlcMc, MC_AxRtEncoderSimulation_BkPlcMc, MC_AxRtEncoderLowCostStepper_BkPlcMc oder MC_AxRtEncoderDigCam_BkPlcMc aufgerufen.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Wenn der Pointer pStAxRtData der Achse initialisiert ist wird sie in einen Störzustand versetzt werden.
  • Wenn nEnc_Type in pStAxParams auf einen nicht zulässigen Wert eingestellt ist reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdEncType. Wenn der Pointer pStAxRtData der Achse initialisiert ist wird sie in einen Störzustand versetzt werden.
  • Wenn einer der spezifischen Unterbausteine ein Problem erkennt wird dieser (sofern möglich) die Achse in einen Störzustand versetzen. Dieser Fehler wird an den Ausgängen des MC_AxRtEncoder_BkPlcMc wiederholt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse entsprechend nEnc_Type in Axis.pStAxParams durch Aufruf eines entsprechenden typspezifischen Bausteins ermittelt.

Hinweis: Informationen über die erforderlichen Verknüpfung von E/A-Komponenten mit den Eingangs- und Ausgangsstrukturen der Achse finden sie in der Knowledge Base unter FAQ #4.

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderKL5001_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderAx2000_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den Eingangsdaten eines AX2000-Servoverstärkers. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderAx2000 eingestellt ist.

Hinweis: Die Hydraulik Library bietet auch im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxAx2000In in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bei einer Referenzfahrt festgestellt, dass der Abstand zwischen der fallenden Flanke des Nockens und dem gültig werden des Latches kleiner als ein Achtel einer Resolver-Umdrehung ist reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdEncSyncDist. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen in Axis.pStAxAx2000In ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock, iTcMc_HomingOnIndex und iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderDigCam_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderDigCam_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung des Positionsnocken-Bytes aus vier digitalen Eingangsbits. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderDigCam eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt dann ein, wenn in Axis.ST_TcHydAxParam bei nEnc_HomingType der Wert iTcMc_HomingOnSync eingetragen ist.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird das Positionsnocken-Bytes aus den vier digitalen Eingangsbits bDigCamPP, bDigCamP, bDigCamM und bDigCamMM in Axis.pStAxEncInput gebildet.

Hinweis: Dieser Baustein unterstützt keine Referenziermethode.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderDigInc_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderDigInc_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus zwei digitalen Eingangsbits entsprechend dem Prinzip des Quadratur-Decoders mit Vierfachauswertung. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderDigIncrement eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ändern sich die Eingänge bDigInA und bDigInB in Axis.pStAxEncInput im gleichen Zyklus reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdEncCutOff. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt dann ein, wenn in Axis.ST_TcHydAxParam bei nEnc_HomingType der Wert iTcMc_HomingOnSync eingetragen ist.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Überwachung der Variablen bDigInA und bDigInB in Axis.pStAxEncInput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock und iTcMc_HomingOnIndex, nicht jedoch iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderKL2521_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderKL2521_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den von einer Pulsausgabeklemme KL2521 erfassten ausgegebenen Impulsen. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderKL2521 eingestellt ist.

Hinweis: Die Hydraulik Library bietet auch im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxEncOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt dann ein, wenn in Axis.ST_TcHydAxParam bei nEnc_HomingType der Wert iTcMc_HomingOnSync eingetragen ist.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiCount in Axis.pStAxEncInput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock und iTcMc_HomingOnIndex, nicht jedoch iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderKL2541_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderKL2541_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den von einer Schrittmotorendstufenklemme KL2541 erfassten ausgegebenen Impulsen. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderKL2541 eingestellt ist.

Hinweis: Die Hydraulik Library bietet auch im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxEncOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt dann ein, wenn in Axis.ST_TcHydAxParam bei nEnc_HomingType der Wert iTcMc_HomingOnSync eingetragen ist.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiCount in Axis.pStAxEncInput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock und iTcMc_HomingOnIndex, nicht jedoch iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderKL3042_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderKL3042_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den Eingangsdaten einer 0..20mA-Eingangsklemme vom Typ KL3042. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderKL3042 oder iTcMc_EncoderKL3002 eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

PlusOnly: Bei einem TRUE an diesem Eingang unterdrückt der Baustein negative Eingangswerte.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt dann ein, wenn in Axis.ST_TcHydAxParam bei nEnc_HomingType der Wert iTcMc_HomingOnSync eingetragen ist.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiCount in Axis.pStAxEncInput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock und iTcMc_HomingOnIndex, nicht jedoch iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderKL5001_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderKL5001_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den Eingangsdaten einer SSI-Klemme vom Typ KL5001. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderKL5001 eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxEncOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt unabhängig vom in Axis.ST_TcHydAxParam bei nEnc_HomingType eingetragen Wert ein, sobald eine Referenzfahrt ausgelöst wird.
  • Wenn bei der Auswertung der Eingangsdaten aus der E/A-Hardware ein Problem erkennt wird reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdSsi. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiPZDL_RegDaten und uiPZDH in Axis.pStAxEncInput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock und iTcMc_HomingOnIndex, nicht jedoch iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderKL5101_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderKL5101_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den Eingangsdaten einer Inkremental-Eingangsklemme vom Typ KL5101. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderKL5101 eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxEncOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiCount in Axis.pStAxEncInput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting aus Axis.pStAxParam und fEnc_RefShift aus Axis. pStAxRtData verwendet.

Hinweis: Um fEnc_RefShift in Axis. pStAxRtData automatisch zu ermitteln ist für nEnc_HomingType in Axis.pStAxParam der gewünschte Modus einzutragen und mit der Achse an diesem Encoder eine Referenzfahrt durchzuführen.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock, iTcMc_HomingOnIndex und iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderLowCostStepper_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderLowCostStepper_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den Ausgangsdaten eines MC_AxRtDriveLowCostStepper_BkPlcMc Bausteins. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderLowCostStepper eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxDriveOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt dann ein, wenn in Axis.ST_TcHydAxParam bei nEnc_HomingType der Wert iTcMc_HomingOnSync eingetragen ist.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiCount in Axis.pStAxDriveOutput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein wird in der Regel in Zusammenarbeit mit einem MC_AxRtDriveLowCostStepper_BkPlcMc Baustein eingesetzt.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock und iTcMc_HomingOnIndex, nicht jedoch iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderM3120_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderM3120_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den Eingangsdaten eines M3120 Lightbus Moduls. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderM3120 eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxEncOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiCount in Axis.pStAxEncInput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting aus Axis.pStAxParam und fEnc_RefShift aus Axis. pStAxRtData verwendet.

Hinweis: Um fEnc_RefShift in Axis. pStAxRtData automatisch zu ermitteln ist für nEnc_HomingType in Axis.pStAxParam der gewünschte Modus einzutragen und mit der Achse an diesem Encoder eine Referenzfahrt durchzuführen.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock, iTcMc_HomingOnIndex und iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System:MC_AxRtEncoderSimulation_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderSimulation_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den Ausgangsdaten eines MC_AxRuntime_BkPlcMc Bausteins. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderSim eingestellt ist.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt dann ein, wenn in Axis.ST_TcHydAxParam bei nEnc_HomingType der Wert iTcMc_HomingOnSync eingetragen ist.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiCount in Axis.pStAxDriveOutput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein wird in der Regel nur in der Testphase von Projekten oder für virtuelle Achsen verwendet.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock und iTcMc_HomingOnIndex, nicht jedoch iTcMc_HomingOnSync.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtReadPressureDiff_BkPlcMc

FUNCTION_BLOCK MC_AxRtReadPressureDiff_BkPlcMc

Der Funktionsbaustein übernimmt die Ermittlung des Istdrucks der Achse aus den Eingangsdaten von zwei Analog-Eingangsklemme.

Hinweis: Steht nur ein Eingangssignal zur Verfügung sollte ein Baustein des Typs MC_AxRtReadPressureSingle_BkPlcMc verwendet werden.

VAR_INPUT
    AdcValueA:	INT:=0;
    AdcValueB:	INT:=0;
    ScaleFactorA:	LREAL:=0.0;
    ScaleOffsetA:	LREAL:=0.0;
    ScaleFactorB:	LREAL:=0.0;
    ScaleOffsetB:	LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

AdcValueA, AdcValueB: Hier sind die Eingangsdaten von den Analog-Klemmen zu übergeben.

ScaleFactorA, ScaleFactorB: Dieser Wert stellt die Gewichtung dar. Er legt fest, welche Druckerhöhung einer Stufe des AD-Wandlers entspricht.

ScaleOffsetA, ScaleOffsetB: Dieser Offset dient dazu, den Nullpunkt der Druckskala zu korrigieren.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei kann ein Problem erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.

Wenn diese Überprüfung ohne Problem durchgeführt werden konnte wird der Istdruck der Achse durch Auswertung der Variablen AdcValueA und AdcValueB ermittelt. Das Ergebnis wird in ST_TcHydAxRtData.fActPressure eingetragen.

Hinweis: Die Speicherung von einer Achse zugeordneten Parametern kann zum Beispiel in den ST_TcHydAxParam.fCustomerData[...] erfolgen. So ist sicher gestellt, dass die Daten zusammen mit den Standard-Parametern der Achse geladen, gespeichert und gesichert und bei Bedarf auch exportiert und importiert werden.

Inbetriebnahme-Variante A

Hierbei ist es erforderlich, das in beide Richtungen ein Block mit vollem Systemdruck angefahren werden kann. Dabei ist eine echte Bewegung der Achse nicht erforderlich. Also kann das Anfahren der Anschläge dadurch nachgebildet werden, dass die Achse durch Einlegen von provisorischen Begrenzungen nur einen Teil ihres Fahrweges zurücklegen ´kann oder sogar mechanisch vollständig fixiert wird.

  • Es sind alle Bausteine zu deaktivieren, die auf den Wert von ST_TcHydAxRtData.fActPressure reagieren.
  • Mit niedriger Geschwindigkeit wird zunächst der untere (in Richtung sinkender Istposition gelegene) Block angefahren. Dabei wird für AdcValueA und AdcValueB der Wert zu ermittelt und festgehalten. Jetzt sollte auf der B-Seite der Systemdruck und auf der A-Seite der Tankdruck und somit der Umgebungsdruck anstehen. Ist dies aus irgendwelchen Gründen nicht der Fall sind die A- und B-seitigen Drücke durch Messung zu ermitteln.
  • Mit niedriger Geschwindigkeit wird anschließend der obere (in Richtung steigender Istposition gelegene) Block angefahren. Dabei wird erneut für AdcValueA und AdcValueB der Wert ermittelt und festgehalten. Auch jetzt sind die Drücke festzustellen.
  • Die einzutragenden Parameter errechnen sich dann wie folgt:

    ScaleFactorA := (DruckAMAX - DruckAMIN) / (AdcValueAMAX - AdcValueAMIN);

    ScaleFactorB := (DruckBMAX - DruckBMIN) / (AdcValueBMAX - AdcValueBMIN);

    ScaleOffsetA := DruckAMIN - ScaleFactorA * AdcValueAMIN;

    ScaleOffsetB := DruckBMIN - ScaleFactorB * AdcValueBMIN;

Inbetriebnahme-Variante B

Ersatzweise kann eine Inbetriebnahme der Erfassung ohne Ansteuerung der Achse erfolgen. Dabei wird jedoch eine weitaus geringere Genauigkeit erreicht.

  • Zunächst ist die Achse druckfrei zu machen. Dazu ist der Kompressor still zu setzen und der Druckspeicher zu entlasten.
  • Es ist sicher zu stellen, dass die Achse keinen Druck aufbaut. Dazu ist eine von außen mit Kräften (Gravitation usw.) beaufschlagte Achse mechanisch abzustützen. Das Ventil ist mehrfach manuell oder elektrisch in beide Richtungen zu öffnen.
  • Jetzt wird für AdcValueA und AdcValueB der Wert ermittelt und festgehalten. Es sollte sowohl auf der A- als auch auf der B-Seite der Tankdruck und somit der Umgebungsdruck anstehen. Ist dies aus irgendwelchen Gründen nicht der Fall sind die A- und B-seitigen Drücke durch Messung zu ermitteln. Die so gefundenen Werte sind in den oben genannten Gleichungen als MIN Werte einzusetzen.
  • Aus den Datenblattangaben der Drucksensoren ist der Druck für die obere Grenze des elektrischen Signals (10 Volt, 20 mA) zu entnehmen. Als AdcValueA und AdcValueB ist der obere Grenzwert für die gewandelte elektrische Größe anzunehmen. Diese Werte sind als MAX Werte in die oben genannten Gleichungen einzusetzen.
  • Die einzutragenden Parameter errechnen sich dann wie oben beschrieben.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtReadPressureSingle_BkPlcMc

FUNCTION_BLOCK MC_AxRtReadPressureSingle_BkPlcMc

Der Funktionsbaustein übernimmt die Ermittlung des Istdrucks der Achse aus den Eingangsdaten einer Analog-Eingangsklemme.

Hinweis: Stehen zwei Eingangssignale für die A- und B-Seite zur Verfügung sollte ein Baustein des Typs MC_AxRtReadPressureDiff_BkPlcMc verwendet werden.

VAR_INPUT
    AdcValue:		INT:=0;
    ScaleFactor:	LREAL:=0.0;
    ScaleOffset:	LREAL:=0.0;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

AdcValue: Hier sind die Eingangsdaten von der Analog-Klemme zu übergeben.

ScaleFactor: Dieser Wert stellt die Gewichtung dar. Er legt fest, welche Druckerhöhung einer Stufe des AD-Wandlers entspricht.

ScaleOffset: Dieser Offset dient dazu, den Nullpunkt der Druckskala zu korrigieren.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei kann ein Problem erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.

Wenn diese Überprüfung ohne Problem durchgeführt werden konnte wird der Istdruck der Achse durch Auswertung der Variablen AdcValue ermittelt. Das Ergebnis wird in ST_TcHydAxRtData.fActPressure eingetragen.

Hinweis: Die Speicherung von einer Achse zugeordneten Parametern kann zum Beispiel in den ST_TcHydAxParam.fCustomerData[...] erfolgen. So ist sicher gestellt, dass die Daten zusammen mit den Standard-Parametern der Achse geladen, gespeichert und gesichert und bei Bedarf auch exportiert und importiert werden.

Inbetriebnahme-Variante A

Hierbei ist es erforderlich, das in beide Richtungen ein Block mit vollem Systemdruck angefahren werden kann. Dabei ist eine echte Bewegung der Achse nicht erforderlich. Also kann das Anfahren der Anschläge dadurch nachgebildet werden, dass die Achse durch Einlegen von provisorischen Begrenzungen nur einen Teil ihres Fahrweges zurücklegen ´kann oder sogar mechanisch vollständig fixiert wird.

  • Es sind alle Bausteine zu deaktivieren, die auf den Wert von ST_TcHydAxRtData.fActPressure reagieren.
  • Mit niedriger Geschwindigkeit wird zunächst der untere (in Richtung sinkender Istposition gelegene) Block angefahren. Dabei wird für AdcValue der Wert zu ermittelt und festgehalten. Jetzt sollte auf der B-Seite der Systemdruck und auf der A-Seite der Tankdruck und somit der Umgebungsdruck anstehen. Ist dies aus irgendwelchen Gründen nicht der Fall sind die A- und B-seitigen Drücke durch Messung zu ermitteln.
  • Mit niedriger Geschwindigkeit wird anschließend der obere (in Richtung steigender Istposition gelegene) Block angefahren. Dabei wird erneut für AdcValue der Wert zu ermittelt und festgehalten. Auch jetzt sind die Drücke festzustellen.
  • Die einzutragenden Parameter errechnen sich dann wie folgt:

    ScaleFactor := (DruckMAX - DruckMIN) / (AdcValueMAX - AdcValueMIN);

    ScaleOffset := DruckMIN - ScaleFactor * AdcValueMIN;

Inbetriebnahme-Variante B

Ersatzweise kann eine Inbetriebnahme der Erfassung ohne Ansteuerung der Achse erfolgen. Dabei wird jedoch eine weitaus geringere Genauigkeit erreicht.

  • Zunächst ist die Achse druckfrei zu machen. Dazu ist der Kompressor still zu setzen und der Druckspeicher zu entlasten.
  • Es ist sicher zu stellen, dass die Achse keinen Druck aufbaut. Dazu ist eine von außen mit Kräften (Gravitation usw.) beaufschlagte Achse mechanisch abzustützen. Das Ventil ist mehrfach manuell oder elektrisch in beide Richtungen zu öffnen.
  • Jetzt wird für AdcValue der Wert ermittelt und festgehalten. Es sollte sowohl auf der A- als auch auf der B-Seite der Tankdruck und somit der Umgebungsdruck anstehen. Ist dies aus irgendwelchen Gründen nicht der Fall sind der A-seitige Druck durch Messung zu ermitteln. Die so gefundenen Werte sind in den oben genannten Gleichungen als MIN Werte einzusetzen.
  • Aus den Datenblattangaben der Drucksensoren ist der Druck für die obere Grenze des elektrischen Signals (10 Volt, 20 mA) zu entnehmen. Als AdcValue ist der obere Grenzwert für die gewandelte elektrische Größe anzunehmen. Diese Werte sind als MAX Werte in die oben genannten Gleichungen einzusetzen.
  • Die einzutragenden Parameter errechnen sich dann wie oben beschrieben.


TcPlcHydraulics: PLCopen Motion Control: System: TableFunctions: MC_AxTableReadOutNonCyclic_BkPlcMc

FUNCTION_BLOCK MC_AxTableReadOutNonCyclic_BkPlcMc

(not recommended) Der Funktionsbaustein ermittelt mit Hilfe einer Tabelle die einem Master-Wert zugeordneten Slave-Werte.

Hinweis: Dieser Baustein ist eine Komponente von Kurvenscheiben oder ähnlichen nichtlinearen Kopplungen. Er wird in der Regel nicht direkt von einer Applikation aufgerufen.

VAR_INPUT
    pTable:		POINTER TO LREAL:=0;
    fMasterValue:	LREAL:=0.0;
    nFirstIdx:	UDINT:=1;
    nLastIdx:		UDINT:=1;
    bReInit:		BOOL:=FALSE;
END_VAR
VAR_OUTPUT
    fSlaveValue:	LREAL:=0.0;
    fSlaveGear:	LREAL:=0.0;
    bUnderRange:	BOOL;
    bOverRange:	BOOL;
END_VAR

pTable: Hier ist die Adresse eines ARRAY[nFirstIdx..nLastIdx,1..2] zu übergeben.

Achtung: Eine nicht zutreffende Angabe an dieser Stelle führt zum Absturz der PLC-Applikation durch Auslösung von schweren Laufzeitfehlern (Page Fault Exception).

fMasterValue: Hier ist der Wert des Masters zu übergeben, für den die zugehörigen Slave-Werte ermittelt werden sollen.

nFirstIdx: Hier ist der untere Index des ARRAY zu übergeben, dessen Adresse als pTable übergeben wird.

Achtung: Eine nicht zutreffende Angabe an dieser Stelle führt zum Absturz der PLC-Applikation durch Auslösung von schweren Laufzeitfehlern (Page Fault Exception).

nLastIdx: Hier ist der obere Index des ARRAY zu übergeben, dessen Adresse als pTable übergeben wird.

Achtung: Eine nicht zutreffende Angabe an dieser Stelle führt zum Absturz der PLC-Applikation durch Auslösung von schweren Laufzeitfehlern (Page Fault Exception).

bReInit: Dieser Eingang signalisiert dem Baustein, dass die Suchprozedur am Anfang der Tabelle aufgesetzt werden soll.

fSlaveValue: Hier wird der zum fMasterValue gehörende Slave-Wert ausgegeben.

fSlaveGear: Hier wird die lokale Steigung der Slave-Werte an der vom Master-Wert festgelegten Stelle der Tabelle ausgegeben.

bUnderRange: Dieser Ausgang wird TRUE, Wenn der Master-Wert das untere Ende der Tabelle berührt oder unterschreitet.

bOverRange: Dieser Ausgang wird TRUE, Wenn der Master-Wert das obere Ende der Tabelle berührt oder überschreitet.

Verhalten des Bausteins

Der Baustein sucht innerhalb der übergebenen Tabelle nach einem Master-Wertepaar, dass den übergebenen fMasterValue trifft oder umfasst. Innerhalb des gefundenen Intervalls wird eine lineare Zwischeninterpolation gerechnet. Das Ergebnis wird als fSlaveValue ausgegeben. Die bei dieser Berechnung ermittelte lokale Steigung wird als fSlaveGear ausgegeben.

Liegt der fMasterValue unterhalb des von der Tabelle beschriebenen Wertebereichs wird bUnderRange signalisiert. Als fSlaveValue wird der Wert ausgegeben, der dem untersten Tabellenpunkt zugeordnet ist. Als fSlaveGear wird 0.0 zurüchgegeben.

Liegt der fMasterValue oberhalb des von der Tabelle beschriebenen Wertebereichs wird bOverRange signalisiert. Als fSlaveValue wird der Wert ausgegeben, der dem obersten Tabellenpunkt zugeordnet ist. Als fSlaveGear wird 0.0 zurüchgegeben.

Der Rückgabewert fSlaveGear stellt das Verhältnis der ersten Ableitungen von fMasterValue und fSlaveValue dar. Stellt fMasterValue eine Position oder eine virtuelle Zeit dar ergibt die Multiplikation von Master-Fortschrittsgeschwindigkeit und fSlaveGear die Slave-Sollgeschwindigkeit. Dies kann für die Erzeugung einer Vorsteuergeschwindigkeit ausgenutzt werden. Dazu ist die Slave-Sollgeschwindigkeit durch die ST_TcHydAxParam.fRefVelo des Slaves zu dividieren und das Ergebnis unter seiner ST_TcHydAxRtData.fSetSpeed einzutragen.


TcPlcHydraulics: PLCopen Motion Control: System: Generators: MC_AxRuntime_BkPlcMc

FUNCTION_BLOCK MC_AxRuntime_BkPlcMc

Der Funktionsbaustein übernimmt die Aufgabe des Stellwertgenerators. Dazu wird in Abhängigkeit des in Axis.pStAxParam als nProfileType eingestellten Wertes ein Baustein des Typs MC_AxRuntimeTcPc_BkPlcMc, MC_AxRuntimeCos_BkPlcMc, MC_AxRuntimeCtrlBased_BkPlcMc oder MC_AxRunTimeTimeRamp_BkPlcMc aufgerufen.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Stellwertgenerierung der Achse entsprechend nProfileType in Axis.pStAxParams durch Aufruf eines entsprechenden Bausteins durchgeführt.

Derzeit stehen die folgenden Generatoren zur Verfügung:

nProfileType Beschreibung
iTcMc_ProfileConstAcc Standardprofil: Einstufige zeitgesteuerte Beschleunigung, weggesteuerte (Wurzelbildner) Bremsrampe, Zielanfahrt mit Schleichgeschwindigkeit, wählbares Verhalten im Ruhezustand.

Das Starten einer fahrenden Achse (neues Ziel, neue Geschwindigkeit usw.) ist in der Regel möglich.

Achtung: Es kann zu einem Überfahren des neuen Ziels auch dann kommen, wenn sich die Achse zum Zeitpunkt des Startens noch vor der Zielposition befindet.

Achtung: Die Funktion dieses Profiltyps wird vom Typ iTcMc_ProfileCtrlBased vollständig bereitgestellt. Intern wird ein Baustein vom Typ iTcMc_ProfileCtrlBased verwendet.

iTcMc_ProfileCtrlBased Standardprofil: Einstufige zeitgesteuerte Beschleunigung, weggesteuerte (Wurzelbildner) Bremsrampe, Zielanfahrt mit Schleichgeschwindigkeit, wählbares Verhalten im Ruhezustand.

Das Starten einer fahrenden Achse (neues Ziel, neue Geschwindigkeit usw.) ist außer im Störzustand oder einem Zustand mit abhängiger Stellwertgenerierung immer möglich.

Achtung: Es kann zu einem Überfahren des neuen Ziels auch dann kommen, wenn sich die Achse zum Zeitpunkt des Startens noch vor der Zielposition befindet.

Achtung: Der Baustein kann so parametriert werden, dass er unter bestimmten durch seine Parameter definierten Bedingungen automatisch starten und in einen aktiven Fahrzustand übergehen wird.

iTcMc_ProfileTimePosCtrl Sonderprofil: Zweistufige (zunächst zeitgesteuert, dann weggesteuert mit Wurzelbildner) Beschleunigung, weggesteuerte (Wurzelbildner) Bremsrampe, Zielanfahrt mit Schleichgeschwindigkeit, wählbares Verhalten im Ruhezustand.

Das Starten einer fahrenden Achse (neues Ziel, neue Geschwindigkeit usw.) ist nicht möglich.

iTcMc_ProfileCosine Sonderprofil: Zweistufige (zunächst zeitgesteuert, dann weggesteuert mit Cosinusbildner) Beschleunigung, weggesteuerte (Cosinusbildner) Bremsrampe, Zielanfahrt mit Schleichgeschwindigkeit, wählbares Verhalten im Ruhezustand.

Das Starten einer fahrenden Achse (neues Ziel, neue Geschwindigkeit usw.) ist nicht möglich.

iTcMc_ProfileTimeRamp Sonderprofil: Einstufige zeitgesteuerte Beschleunigung, zeitgesteuerte Bremsrampe, Zielanfahrt mit Schleichgeschwindigkeit, eingeschränkt wählbares Verhalten im Ruhezustand. Der Generator arbeitet mit Positionsnocken anstelle eines Encoders.

Das Starten einer fahrenden Achse (neues Ziel, neue Geschwindigkeit usw.) ist möglich.

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.


TcPlcHydraulics: PLCopen Motion Control: System: Generators: MC_AxRuntimeCos_BkPlcMc

FUNCTION_BLOCK MC_AxRuntimeCos_BkPlcMc

(not recommended) Der Funktionsbaustein übernimmt die Aufgabe des Stellwertgenerators, wenn in nProfileType in ST_TcHydAxParam die Konstante iTcMc_ProfileCosine aus E_TcMcProfileType vorgegeben wird. Der Aufruf des Bausteins erfolgt in der Regel über einen MC_AxRuntime_BkPlcMc Baustein.

VAR_INOUT
    stAxParams:	ST_TcHydAxParam;
    stAxRtData:	ST_TcHydAxRtData;
END_VAR

stAxParams: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxParam zu übergeben.

stAxRtData: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxRtData zu übergeben.

Verhalten des Bausteins

Es wird ein Profil einer Beschleunigungsphase, einer weggesteuerten Bremsphase nach dem Prinzip der Cosinusfunktion und eine Zielannäherung mit Schleichgeschwindigkeit erzeugt.

Die Pfeile am Stellwertprofil deuten die Gestaltungsmöglichkeiten durch Parameter des Bewegungsauftrags bzw. der Achse an. Zunächst wird mit einer zeitgesteuerten Rampenfunktionen "1" auf die Geschwindigkeit beschleunigt, bei der die weggesteuerte Cosinus-Rampenfunktion die Kontrolle übernimmt und auf die geforderten Fahrgeschwindigkeit "3" beschleunigt. Dieser Stellwert wird aufrecht erhalten, bis ein beim Start vorberechneter Wegpunkt erreicht wird. Ab hier wird mit einer weggesteuerten Cosinus-Rampe "4" so vom Fahrstellwert auf den Schleichstellwert "6" heruntergebremst, dass dieser Stellwert in einer festgelegten Entfernung "5" zum Ziel erreicht wird. Dieser Stellwert wird aufrechterhalten, bis die Entfernung sich dem Ziel bis auf eine Reststrecke genähert hat. Jetzt wird in das Ruheverhalten umgeschaltet.

Aktive Parameter im Fahrprofil

Startrampe "1": Wirksam wird fStartRamp in ST_TcHydAxParam.

Fahrphase "2": Wirksam wird der kleinste von folgenden Werten: fMaxAcc und fAcc in ST_TcHydAxParam, Acceleration des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Fahrphase "3": Wirksam wird der kleinste von folgenden Werten: fRefVelo und fMaxVelo in ST_TcHydAxParam, Velocity des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Bremsrampe "4": Wirksam wird der kleinste von folgenden Werten: fMaxDec und fDec in ST_TcHydAxParam, Deceleration des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Schleichphase "5", "6": Wirksam werden die Werte fCreepSpeed und fCreepDistance in ST_TcHydAxParam.

Übergang im Ziel "7": Wirksam wird fBrakeDistance und/oder fBrakeDeadTime in ST_TcHydAxParam.


TcPlcHydraulics: PLCopen Motion Control: System: Generators: MC_AxRuntimeCtrlBased_BkPlcMc

FUNCTION_BLOCK MC_AxRuntimeCtrlBased_BkPlcMc

(not recommended) Der Funktionsbaustein übernimmt die Aufgabe des Stellwertgenerators, wenn in nProfileType in ST_TcHydAxParam die Konstante iTcMc_ProfileCtrlBased aus E_TcMcProfileType vorgegeben wird. Der Aufruf des Bausteins erfolgt in der Regel über einen MC_AxRuntime_BkPlcMc Baustein.

VAR_INOUT
    stAxParams:	ST_TcHydAxParam;
    stAxRtData:	ST_TcHydAxRtData;
END_VAR

stAxParams: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxParam zu übergeben.

stAxRtData: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxRtData zu übergeben.

Verhalten des Bausteins

Es wird ein Profil einer Beschleunigungsphase, einer weggesteuerten Bremsphase nach dem Prinzip des Wurzelbildners und eine Zielannäherung mit Schleichgeschwindigkeit erzeugt.

Die Pfeile am Stellwertprofil deuten die Gestaltungsmöglichkeiten durch Parameter des Bewegungsauftrags bzw. der Achse an. Zunächst wird mit einer zeitgesteuerten Rampenfunktionen "1" auf die geforderten Fahrgeschwindigkeit "2" beschleunigt. Dieser Stellwert wird aufrecht erhalten, bis ein beim Start vorberechneter Wegpunkt erreicht wird. Ab hier wird mit einer weggesteuerten Rampe "3" so vom Fahrstellwert auf den Schleichstellwert "5" heruntergebremst, dass dieser Stellwert in einer festgelegten Entfernung "4" zum Ziel erreicht wird. Dieser Stellwert wird aufrechterhalten, bis die Entfernung sich dem Ziel bis auf eine Reststrecke "6" genähert hat. Jetzt wird in das Ruheverhalten umgeschaltet.

Aktive Parameter im Fahrprofil

Startrampe "1": Wirksam wird der kleinste von folgenden Werten: fMaxAcc und fAcc in ST_TcHydAxParam, Acceleration des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Fahrphase "2": Wirksam wird der kleinste von folgenden Werten: fRefVelo und fMaxVelo in ST_TcHydAxParam, Velocity des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Bremsrampe "3": Wirksam wird der kleinste von folgenden Werten: fMaxDec und fDec in ST_TcHydAxParam, Deceleration des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Schleichphase "4", "5": Wirksam werden die Werte fCreepSpeed und fCreepDistance in ST_TcHydAxParam.

Übergang im Ziel "6": Wirksam wird fBrakeDistance und/oder fBrakeDeadTime in ST_TcHydAxParam.

Automatisches Starten der Achse

Wenn die Abweichung zwischen der Istposition und der aktuell geltenden Zielposition den Wert in ST_TcHydAxParam.fReposDistance überschreitet wird ein automatischer Start ausgelöst.


TcPlcHydraulics: PLCopen Motion Control: System: Generators: MC_AxRuntimeTcPc_BkPlcMc

FUNCTION_BLOCK MC_AxRuntimeTcPc_BkPlcMc

(not recommended) Der Funktionsbaustein übernimmt die Aufgabe des Stellwertgenerators, wenn in nProfileType in ST_TcHydAxParam die Konstante iTcMc_ProfileTimePosCtrl aus E_TcMcProfileType vorgegeben wird. Der Aufruf des Bausteins erfolgt in der Regel über einen MC_AxRuntime_BkPlcMc Baustein.

VAR_INOUT
    stAxParams:	ST_TcHydAxParam;
    stAxRtData:	ST_TcHydAxRtData;
END_VAR

stAxParams: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxParam zu übergeben.

stAxRtData: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxRtData zu übergeben.

Verhalten des Bausteins

Es wird ein Profil mit zwei Beschleunigungsphasen, einer weggesteuerten Bremsphase nach dem Prinzip des Wurzelbildners und eine Zielannäherung mit Schleichgeschwindigkeit erzeugt.

Die Pfeile am Stellwertprofil deuten die Gestaltungsmöglichkeiten durch Parameter des Bewegungsauftrags bzw. der Achse an. Zunächst wird mit einer zeitgesteuerten Rampenfunktionen "1" beschleunigt. Im hier dargestellten Beispiel wird dabei eine festgelegte Wegstrecke zurückgelegt, bevor die geforderten Fahrgeschwindigkeit "3" erreicht wird. Die Beschleunigung wird ab hier mit einer weggesteuerten Rampe "2" bis zur geforderten Fahrgeschwindigkeit "3" fortgesetzt. Dieser Stellwert wird aufrecht erhalten, bis ein beim Start vorberechneter Wegpunkt erreicht wird. Ab hier wird mit einer weggesteuerten Rampe "4" so vom Fahrstellwert auf den Schleichstellwert "6" heruntergebremst, dass dieser Stellwert in einer festgelegten Entfernung "5" zum Ziel erreicht wird. Dieser Stellwert wird aufrechterhalten, bis die Entfernung sich dem Ziel bis auf eine Reststrecke genähert hat. Jetzt wird in das Ruheverhalten umgeschaltet.

Aktive Parameter im Fahrprofil

Startrampe "1": Wirksam werden: fStartRamp, bPosCtrlAccEna und fStartAccDistance in ST_TcHydAxParam.

Startrampe "2": Wirksam wird der kleinste von folgenden Werten: fMaxAcc und fAcc in ST_TcHydAxParam, Acceleration des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Fahrphase "3": Wirksam wird der kleinste von folgenden Werten: fRefVelo und fMaxVelo in ST_TcHydAxParam, Velocity des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Bremsrampe "4": Wirksam wird der kleinste von folgenden Werten: fMaxDec und fDec in ST_TcHydAxParam, Deceleration des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Schleichphase "5", "6": Wirksam werden die Werte fCreepSpeed und fCreepDistance in ST_TcHydAxParam.

Übergang im Ziel "7": Wirksam wird fBrakeDistance und/oder fBrakeDeadTime in ST_TcHydAxParam.


TcPlcHydraulics: PLCopen Motion Control: System: Generators: MC_AxRunTimeTimeRamp_BkPlcMc

FUNCTION_BLOCK MC_AxRunTimeTimeRamp_BkPlcMc

(not recommended) Der Funktionsbaustein übernimmt die Aufgabe des Stellwertgenerators, wenn in nProfileType in ST_TcHydAxParam die Konstante iTcMc_ProfileTimeRamp aus E_TcMcProfileType vorgegeben wird. Der Aufruf des Bausteins erfolgt in der Regel über einen MC_AxRuntime_BkPlcMc Baustein.

VAR_INOUT
    stAxParams:	ST_TcHydAxParam;
    stAxRtData:	ST_TcHydAxRtData;
END_VAR

stAxParams: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxParam zu übergeben.

stAxRtData: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxRtData zu übergeben.

Verhalten des Bausteins

Es wird ein Profil mit einer zeitgesteuerten Beschleunigungsphase, einer zeitgesteuerten Bremsphase und eine Zielannäherung mit Schleichgeschwindigkeit erzeugt.

Die Pfeile am Stellwertprofil deuten die Gestaltungsmöglichkeiten durch Parameter des Bewegungsauftrags bzw. der Achse an. Zunächst wird mit einer zeitgesteuerten Rampenfunktionen "1" auf die geforderten Fahrgeschwindigkeit "2" beschleunigt. Dieser Stellwert wird aufrecht erhalten, bis der richtungsspezifische Zielfensternocken erkannt wird. Ab hier wird mit einer zeitgesteuerten Rampe "3" vom Fahrstellwert auf den Schleichstellwert "5" heruntergebremst. Dieser Stellwert wird aufrechterhalten, bis der richtungsspezifische Zielnocken erkannt wird. Jetzt wird in das Ruheverhalten umgeschaltet.

Aktive Parameter im Fahrprofil

Startrampe "1": Wirksam wird fStartRamp in ST_TcHydAxParam.

Fahrphase "2": Wirksam wird der kleinste von folgenden Werten: fRefVelo und fMaxVelo in ST_TcHydAxParam, Velocity des zum Achsstart verwendeten Bausteins (Beispiel: MC_MoveAbsolute_BkPlcMc).

Bremsrampe "3": Wirksam wird fStopRamp in ST_TcHydAxParam.

Schleichphase "4": Wirksam wird fCreepSpeed in ST_TcHydAxParam.

Verhalten des Bausteins beim Durchstarten während einer Bewegung

Wird während einer aktiven Bewegung ein weiterer Starbefehl gegeben ist sind zwei Fälle zu unterscheiden.

Diese Profil entsteht beim Nachstarten in gleicher Richtung mit anderer (hier mit höherer) Geschwindigkeit.

Diese Profil entsteht beim Nachstarten in entgegengesetzter Richtung, hier mit gleicher Geschwindigkeit.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxStandardBody_BkPlcMc

FUNCTION_BLOCK MC_AxStandardBody_BkPlcMc

Der Funktionsbaustein ruft je einen Baustein der Typen MC_AxRtEncoder_BkPlcMc, MC_AxRuntime_BkPlcMc, MC_AxRtFinish_BkPlcMc und MC_AxRtDrive_BkPlcMc auf.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Die üblichen Bestandteile der Achse werden in Abhängigkeit der Werte in ST_TcHydAxParam aufgerufen. Sollte einer der aufgerufenen Bausteine einen Error zurückmelden wird dieser mit seinem ErrorID an den Ausgängen dieses Bausteins wiedergegeben.

Hinweis: Bei mehreren Problemen gilt eine Priorisierung entsprechend der Aufrufreihenfolge (Encoder, Generator, Finish, Drive).


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtCheckSyncDistance_BkPlcMc

FUNCTION_BLOCK MC_AxRtCheckSyncDistance_BkPlcMc

Der Funktionsbaustein überprüft, ob bei einer Referenzfahrt nach dem Verlassen des Nockens eine unzulässig große Strecke zurückgelegt wird.

VAR_INPUT
    MaxDistance:	LREAL;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Active:	BOOL;
    Exceeded:	BOOL;
END_VAR

MaxDistance: Hier ist die maximal zulässige Strecke vorzugeben, die vom Referenznocken bis zum Erreichen des Nullimpuls zurückgelegt werden darf.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Exceeded: Hier wird signalisiert, dass die Achse nach dem Verlassen des Nockens einen Weg von mehr als MaxDistance zurückgelegt hat ohne dass der Nullimpuls des Gebers erkannt wurde.

Active: Hier wird signalisiert, dass die Achse den Nockens verlassen hat und den Nullimpuls des Gebers erwartet.

Verhalten des Bausteins

Der Baustein erkennt die den Teil der Referenzfahrt, in dem die Achse den Nullimpuls des Gebers sucht und überwacht die dabei zurückgelegte Strecke. Dies wird mit Exceeded signalisiert. Soll dies zu einem Achsfehler führen muss von der Applikation ein solcher Zustandswechsel vorgegeben werden. Hierzu sollte ein MC_AxRtGoErrorState_BkPlcMc Baustein und ein kodierter Error Code verwendet werden.

Voraussetzungen:

  • In Axis ist unter pStAxRtData und pStAxParams eine Adresse eingetragen.
  • In den Parametern der Achse ist als nEnc_Type der Wert iTcMc_HomingOnSync eingestellt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtFinish_BkPlcMc

FUNCTION_BLOCK MC_AxRtFinish_BkPlcMc

Der Funktionsbaustein sorgt für die Anpassung des erzeugten Stellwerts an die Besonderheiten der Achse.

Achtung: Dieser Baustein darf nicht für eine Achse aufgerufen werden, für die ein Baustein des Typs MC_AxCtrlPressureCompensation_BkPlcMc aufgerufen werden soll.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Stellwertanpassung für die Achse entsprechend der Werte in Axis.pStAxParams.

  • Der Vorschubstellwert und die Lageregelreaktion werden zum Ausgabestellwert zusammengefasst.
  • Die Flächenkompensation wird berücksichtigt.
  • Ein Kennlinienknick wird kompensiert.
  • Die Überdeckungskompensation, die Klemmstellwert und die Offsetkompensation werden eingerechnet.

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtFinish_BkPlcMc

FUNCTION_BLOCK MC_AxRtGoErrorState_BkPlcMc

(not recommended) Der Funktionsbaustein versetzt die Achse in einen Störzustand.

VAR_INPUT
    Trigger:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Trigger: Eine steigende Flanke an diesem Eingang versetzt die Achse in einen Störzustand.

ErrorCode: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Mit einer steigenden Flanke am Eingang Trigger wird die Achse in einen Störzustand versetzt.

Voraussetzungen:

  • In Axis ist unter pStAxRtData eine Adresse eingetragen.
  • Der Wert am Eingang ErrorCode ist ungleich 0.
  • Die Achse befindet sich nicht bereits in einem Störzustand.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtFinish_BkPlcMc

FUNCTION_BLOCK MC_AxRtMoveChecking_BkPlcMc

Der Funktionsbaustein überwacht die Bewegung einer Achse. Bei Bedarf wird die Achse mit einem MC_AxRtGoErrorState_BkPlcMc Baustein in einen Störzustand versetzt.

VAR_INPUT
    Enable:		BOOL;
    MinDistance:	LREAL;
    Filter:		LREAL;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    Triggered:	BOOL;
END_VAR

Enable: Die Überwachung wird nur durchgeführt, wenn hier ein TRUE ansteht.

MinDistance, Filter: Hier ist die geforderte Mindestdistanz vorzugeben, die innerhalb der Filterzeit zurückgelegt werden soll.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Triggered: Hier wird signalisiert, dass die Achse sich (durch Aktivitäten dieses Bausteins oder aus anderen Gründen) im Fehlerzustand dwTcHydErrCdNotMoving befindet.

Verhalten des Bausteins

Wenn die Achse aktiv bewegt wird, sich aber innerhalb der am Eingang Filter vorgegebenen Zeit nicht um mindestens die am Eingang MinDistance vorgegebene Strecke in die korrekte Richtung bewegt hat wird die Achse in einen Störzustand mit dem ErrorCode dwTcHydErrCdNotMoving versetzt.

Am Ausgang Triggered wird signalisiert, ob sich die Achse in diesem Störzustand befindet. Dabei ist es unerheblich, ob sie durch diesen oder einen anderen Baustein in diesen Störzustand versetzt wurde.

Voraussetzungen:

  • In Axis ist unter pStAxRtData und pStAxParams eine Adresse eingetragen.
  • Die Achse befindet sich nicht bereits in einem Störzustand.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtSetActPos_BkPlcMc

FUNCTION_BLOCK MC_AxRtSetActPos_BkPlcMc

(not recommended) Der Funktionsbaustein aktualisiert die Nullpunktverschiebung einer Achse.

VAR_INPUT
    Execute:		BOOL;
    Position:		LREAL;
    pZeroShift:	POINTER TO LREAL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Referenzfahrt.

Position: Der zu setzende Wert für die Istposition.

pZeroShift: Die Adresse der Variablen, die als Nullpunktverschiebung der Achse wirkt. Bei Achsen mit Inkremental-Enkodern ist dies fEnc_RefShift in ST_TcHydAxRtData. Wird die Achse mit einem absoluten Wegsensor betrieben ist die Variable fEnc_ZeroShift in ST_TcHydAxParam zu adressieren.

Done: Hier wird die erfolgreiche Abarbeitung der Funktion signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Nullpunktverschiebung so modifiziert, dass die Istposition der Achse dem Wert von Position entspricht.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Die Signale am Ende der Bewegung (Error, ErrorID, Done ) werden für einen Zyklus gegeben.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtSetControllerEnable_BkPlcMc

FUNCTION MC_AxRtSetControllerEnable_BkPlcMc : DWORD

Die Funktion aktualisiert das Steuerbit der Reglerfreigabe im nDeCtrlDWord DWORD einer Achse mit einem übergebenen Bit-Wert.

VAR_INPUT
    nDeCtrlDWord:	DWORD;
    bControllerEnable:	BOOL;
END_VAR

nDeCtrlDWord: Der zu aktualisierende Wert.

bControllerEnable: Das einzublendende Bit.

Verhalten der Funktion

Im übergebenen Doppelwort nDeCtrlDWord wird in Abhängigkeit von bControllerEnable mit der Maske dwTcHydDcDwCtrlEnable ein Steuerbit gesetzt oder gelöscht. Das Ergebnis der Funktion ist von der aufrufenden Applikation auf die Variable in den Laufzeitdaten der Achse vom Typ ST_TcHydAxRtData einzutragen.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtSetFeedEnableMinus_BkPlcMc

FUNCTION MC_AxRtSetFeedEnableMinus_BkPlcMc : DWORD

Die Funktion aktualisiert das Steuerbit der richtungsbezogenen Vorschubfreigabe in negativer Fahrtrichtung (in Richtung abnehmender Positionswerte) im nDeCtrlDWord DWORD einer Achse mit einem übergebenen Bit-Wert.

VAR_INPUT
    nDeCtrlDWord:	DWORD;
    bFeedEnableMinus:	BOOL;
END_VAR

nDeCtrlDWord: Der zu aktualisierende Wert.

bFeedEnableMinus: Das einzublendende Bit.

Verhalten der Funktion

Im übergebenen Doppelwort nDeCtrlDWord wird in Abhängigkeit von bFeedEnableMinus mit der Maske dwTcHydDcDwFdNegEna ein Steuerbit gesetzt oder gelöscht. Das Ergebnis der Funktion ist von der aufrufenden Applikation auf die Variable in den Laufzeitdaten der Achse vom Typ ST_TcHydAxRtData einzutragen.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtSetFeedEnablePlus_BkPlcMc

FUNCTION MC_AxRtSetFeedEnablePlus_BkPlcMc : DWORD

Die Funktion aktualisiert das Steuerbit der richtungsbezogenen Vorschubfreigabe in positiver Fahrtrichtung (in Richtung abnehmender Positionswerte) im nDeCtrlDWord DWORD einer Achse mit einem übergebenen Bit-Wert.

VAR_INPUT
    nDeCtrlDWord:	DWORD;
    bFeedEnablePlus:	BOOL;
END_VAR

nDeCtrlDWord: Der zu aktualisierende Wert.

bFeedEnablePlus: Das einzublendende Bit.

Verhalten der Funktion

Im übergebenen Doppelwort nDeCtrlDWord wird in Abhängigkeit von bFeedEnablePlus mit der Maske dwTcHydDcDwFdPosEna ein Steuerbit gesetzt oder gelöscht. Das Ergebnis der Funktion ist von der aufrufenden Applikation auf die Variable in den Laufzeitdaten der Achse vom Typ ST_TcHydAxRtData einzutragen.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtSetReferencingCamSignal_BkPlcMc

FUNCTION MC_AxRtSetReferencingCamSignal_BkPlcMc : DWORD

Die Funktion aktualisiert das Steuerbit des Referenzier-Nockens im nDeCtrlDWord DWORD einer Achse mit einem übergebenen Bit-Wert.

VAR_INPUT
    nDeCtrlDWord:		DWORD;
    bReferencingCamSignal:	BOOL;
END_VAR

nDeCtrlDWord: Der zu aktualisierende Wert.

bReferencingCamSignal: Das einzublendende Bit.

Verhalten der Funktion

Im übergebenen Doppelwort nDeCtrlDWord wird in Abhängigkeit von bReferencingCamSignal mit der Maske dwTcHydDcDwRefIndexein Steuerbit gesetzt oder gelöscht. Das Ergebnis der Funktion ist von der aufrufenden Applikation auf die Variable in den Laufzeitdaten der Achse vom Typ ST_TcHydAxRtData einzutragen.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxUtiAverageDerivative_BkPlcMc

FUNCTION_BLOCK MC_AxUtiAverageDerivative_BkPlcMc

Der Funktionsbaustein ermittelt die Ableitung eines Wertes durch numerische Differentiation über mehr als einen Zyklus.

VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_INPUT
    Input:		LREAL;
    MinIdx:		DINT;
    MaxIdx:		DINT;
    pBuffer:		POINTER TO LREAL;
END_VAR
VAR_OUTPUT
    Output:		LREAL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR

Input: Hier ist der aktuelle Wert der zu differenzierenden Größe bereit zu stellen.

MinIdx: Hier ist der Minimal-Index des bereitgestellten ARRAY zu übergeben.

MaxIdx: Hier ist der Maximal-Index des bereitgestellten ARRAY zu übergeben.

pBuffer: Hier ist die Adresse eines ARRAY [..] OF LREAL zu übergeben.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Output: Hier wird der gefilterte Wert der Größe ausgegeben.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein die übergebenen Variablen. Dabei können eine Reihe von Problemen erkannt werden:

  • Wenn der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert.
  • Wenn der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc reagiert.
  • Sind die übergebenen Werte von MinIdx und MaxIdx nicht sinnvoll wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc reagiert. Es wird als Output 0.0 zurückgegeben.
  • Ist pBuffer nicht initialisiert wird als Output 0.0 zurückgegeben.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Differenz zwischen dem aktuellen Wert und dem ältesten Wert in der Tabelle berechnet. Zur Berechnung von Output wird diese Differenz durch pStAxParams.fCycletime und die Anzahl der gespeicherten Werte dividiert. Die Tabelle wird mit dem aktuellen Wert vervollständigt.

Hinweis: Wenn dieser Baustein mit der aktuellen Istposition als Input versorgt wird errechnet er die Istgeschwindigkeit der Achse mit einem Vielfachen der Zykluszeit als Messzeit. Er liefert in jedem Zyklus einen neuen Wert. Das Ergebnis muss von der Applikation auf pStAxRtData.fActVelo zugewiesen werden.

Hinweis: Der Baustein liefert erst dann einen korrekten Wert als Output, wenn er die durch MinIdx und MaxIdx festgelegte Anzahl von Werten gespeichert hat.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxUtiCancelMonitoring_BkPlcMc

FUNCTION_BLOCK MC_AxUtiCancelMonitoring_BkPlcMc

Die Überwachung einer Funktion wird abgebrochen.

Achtung: Eine Reihe von Bausteinen benötigt die Möglichkeit zur Überwachung für die korrekte und vollständige Abarbeitung ihrer Funktion. Die Überwachung darf nur bei Bausteinen abgebrochen werden, bei denen diese Möglichkeit ausdrücklich genannt wird.

VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_INPUT
    Execute:		BOOL;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    Done:		BOOL;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang beendet die Überwachung.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

Done: Hier wird die erfolgreiche Durchführung des Abbruchs signalisiert.

Verhalten des Bausteins

Bei einer steigenden Flanke an Execute manipuliert der Baustein das übergebene Interface Axis in einer Weise, dass andere Bausteine dies als den Start einer Funktion interpretieren. Sollte ein anderer Baustein die Abarbeitung einer von ihm gestarteten Funktion überwachen wird er dies einstellen und an seinem Ausgang das Signal CommandAborted setzen.

Hinweis: Derzeit sind keine Fehlerursachen bekannt. Der Ausgang Error ist derzeit immer FALSE.

Hinweis: Die Funktion des Baustein benötigt zur Abarbeitung keine Zeit. Der Ausgang Done wird beim Aufruf des Bausteins unmittelbar dem Eingang Execute entsprechen.

Eine Liste der Bausteine, für die ein solcher Abbruch der Überwachung zulässig ist finden Sie in der Knowledge Base.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxUtiCheckTypedPointers

FUNCTION_BLOCK MC_AxUtiCheckTypedPointers

Der Funktionsbaustein übernimmt die Absicherung der Pointerstruktur der Achse.

VAR_INPUT
    pParams:		POINTER TO ST_TcHydAxParam;
    pRtData:		POINTER TO ST_TcHydAxRtData;
    pLogBuffer:	POINTER TO ST_TcPlcMcLogBuffer:=0;
    pStAxAuxLabels:	POINTER TO ST_TcMcAuxDataLabels:=0;
    pEncIn:		POINTER TO ST_TcPlcMcEncoderIn;
    pEncOut:		POINTER TO ST_TcPlcMcEncoderOut;
    pDriveIn:		POINTER TO ST_TcPlcMcDriveIn;
    pDriveOut:	POINTER TO ST_TcPlcMcDriveOut;
    pAx2000In:	POINTER TO ST_TcPlcMcAx2000In;
    pAx2000Out:	POINTER TO ST_TcPlcMcAx2000Out;
ND_VAR
VAR_OUTPUT
    ReInit:		BOOL;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

ReInit: Hier wird signalisiert, dass der Typ oder die Adresse eines Achsbestandteils verändert wurde.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf vergleicht der Baustein die Typen und Adressen mit den Einträgen im übergebene Achsinterface. Erkennt der Baustein dabei eine Veränderung wird im Achsinterface bParamsEnable gelöscht und nInitState auf 0 gestellt. Dies veranlasst den Initialisierungsbaustein der Achse, die Parameter der Achse neu zu laden.

Hinweis: Der Parameter pLogBuffer kann unversorgt bleiben, wenn auf die Aufzeichnung von Log-Meldungen verzichtet wird.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxUtiSlidingAverage_BkPlcMc

FUNCTION_BLOCK MC_AxUtiSlidingAverage_BkPlcMc

Der Funktionsbaustein übernimmt die Ermittlung eines gleitenden Mittelwerts.

VAR_INPUT
    Input:		LREAL;
    MinIdx:		DINT;
    MaxIdx:		DINT;
    pBuffer:		POINTER TO LREAL;
END_VAR
VAR_OUTPUT
    Output:		LREAL;
END_VAR

Input: Hier ist der aktuelle Wert der zu filternden Größe bereit zu stellen.

MinIdx: Hier ist der Minimal-Index des bereitgestellten ARRAY zu übergeben.

MaxIdx: Hier ist der Maximal-Index des bereitgestellten ARRAY zu übergeben.

pBuffer: Hier ist die Adresse eines ARRAY [..] OF LREAL zu übergeben.

Output: Hier wird der gefilterte Wert der Größe ausgegeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein die übergebenen Variablen. Dabei können eine Reihe von Problemen erkannt werden:

  • Sind die übergebenen Werte von MinIdx und MaxIdx nicht sinnvoll wird als Output 0.0 zurückgegeben.
  • Ist pBuffer nicht initialisiert wird als Output 0.0 zurückgegeben.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Tabelle mit dem aktuellen Wert vervollständigt und der Mittelwert über die Tabelle berechnet.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxUtiStandardInit_BkPlcMc

FUNCTION_BLOCK MC_AxUtiStandardInit_BkPlcMc

Der Funktionsbaustein übernimmt die Initialisierung und Überwachung der Bestandteile einer Achse.

VAR_INPUT
    AxisName:		STRING(255);
    PathName:		STRING(255);
    pParams:		POINTER TO ST_TcHydAxParam;
    pRtData:		POINTER TO ST_TcHydAxRtData;
    pLogBuffer:	POINTER TO ST_TcPlcMcLogBuffer;
    pAuxLabels:	POINTER TO ST_TcMcAuxDataLabels;
    pEncIn:		POINTER TO ST_TcPlcMcEncoderIn;
    pEncOut:		POINTER TO ST_TcPlcMcEncoderOut;
    pDriveIn:		POINTER TO ST_TcPlcMcDriveIn;
    pDriveOut:	POINTER TO ST_TcPlcMcDriveOut;
    pAx2000In:	POINTER TO ST_TcPlcMcAx2000In;
    pAx2000Out:	POINTER TO ST_TcPlcMcAx2000Out;
    nLogLevel:	DINT:=0;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    Ready:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

AxisName: Hier ist der textuelle Name der Achse (Beispiel: 'Achse_1') zu übergeben.

PathName: Hier ist der textuelle Pfadname (Beispiel: 'C:\TwinCAT\Projekt\') zu übergeben, unter dem die Parameter der Achse zu speichern sind.

pParams: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxParam zu übergeben.

pRtData: Hier ist die Adresse einer Variablen vom Typ ST_TcHydAxRtData zu übergeben.

pLogBuffer: Hier kann die Adresse einer Variablen vom Typ ST_TcPlcMcLogBuffer übergeben werden.

pAuxLabels: Hier kann die Adresse einer Struktur mit Beschriftungstexten der kundenspezifischen Achsparameter übergeben werden.

pEncIn, pEncOut: Hier sind die Adresse je einer Variablen vom Typ ST_TcPlcMcEncoderIn und ST_TcPlcMcEncoderOut zu übergeben.

pDriveIn, pDriveOut: Hier sind die Adresse je einer Variablen vom Typ ST_TcPlcMcDriveIn und ST_TcPlcMcDriveOut zu übergeben.

pAx2000In, pAx2000Out: Hier sind die Adresse je einer Variablen vom Typ ST_TcPlcMcAx2000In und ST_TcPlcMcAx2000Out zu übergeben.

nLogLevel: Hier ist ein codierter Wert zu übergeben, der den Schwellwert für die Aufzeichnung von Meldungen festlegt.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface und die übergebenen Pointer. Wird eine Veränderung erkannt signalisiert der Baustein in der übergebenen Axis_Ref_BkPlcMc Struktur, dass die Achse reinitialisiert werden muss. Der von diesem Baustein verwendete MC_AxParamLoad_BkPlcMc Baustein wird nun automatisch die Parameter der Achse aus der Datei laden. Ist pAuxLabels versorgt werden anschließend mit einem MC_AxParamAuxLabelsLoad_BkPlcMc Baustein die Beschriftungstexten der kundenspezifischen Achsparameter geladen.

Hinweis: Die als AxisName und PathName übergebenen Strings dürfen keine Leer- oder Sonderzeichen enthalten, die sie für die Erzeugung eines Dateinamens ungeeignet machen. Der Dateiname wird durch aneinanderhängen der übergebenen Strings und Anfügen der Extension '.dat' erzeugt. Der Dateiname für die Beschriftungstexten der kundenspezifischen Achsparameter wird aud die gleiche Weise, jedoch mit der Extension '.txt' erzeugt.

Hinweis: Die Parameter pEncIn und pEncOut sind bei allen Achsen zu versorgen, die für die Positionserfassung eine E/A-Hardware verwenden. Bei Verwendung von AX-Geräten oder bei virtuellen Achsen sind diese Parameter nicht oder mit 0 zu belegen.

Hinweis: Die Parameter pDriveIn und pDriveOut sind bei allen Achsen zu versorgen, die für die Stellwertausgabe eine E/A-Hardware verwenden. Bei Verwendung von AX-Geräten oder bei virtuellen Achsen sind diese Parameter nicht oder mit 0 zu belegen.

Hinweis: Die Parameter pAx2000In und pAx2000Out sind bei allen Achsen zu versorgen, die für Positionserfassung und Stellwertausgabe ein AX-Gerät verwenden. Bei Verwendung von E/A-Hardware oder bei virtuellen Achsen sind diese Parameter nicht oder mit 0 zu belegen.


TcPlcHydraulics: PLCopen Motion Control: Runtime: MC_HomeOnSync_BkPlcMc

FUNCTION_BLOCK MC_HomeOnSync_BkPlcMc

Der Funktionsbaustein startet und überwacht die Referenzfahrt einer Achse.

VAR_INPUT
    Execute:		BOOL;
    Position:		LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Referenzfahrt.

Position: Die Referenzposition.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung der Referenzfahrt signalisiert.

CommandAborted: Hier wird ein Abbruch der Referenzfahrt signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.
  • Eine Referenzfahrt kann nur aus einem fehlerfreien Stillstand begonnen werden. Ist dies nicht der Fall wird mit Error und ErrorID:=dwTcHydErrCdNotStartable bzw. dem vorliegenden Errorcode reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn eine der in den Achs-Parametern angegebene Geschwindigkeiten zu klein (weniger als 1% der Referenzgeschwindigkeit) ist wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Referenzfahrt initiiert. Der genaue Ablauf wird von nEnc_HomingType in den Achs-Parametern festgelegt.

Sollte während der Abarbeitung der Referenzfahrt vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Referenzfahrt durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Ein erfolgreicher Abschluss der Referenzfahrt wird mit Done gemeldet.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Referenzfahrt auf FALSE gesetzt wird die eingeleitete Referenzfahrt unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, Done ) werden für einen Zyklus gegeben.


TcPlcHydraulics: PLCopen Motion Control: Runtime: MC_HomeOnIndex_BkPlcMc

FUNCTION_BLOCK MC_HomeOnIndex_BkPlcMc

Der Funktionsbaustein startet und überwacht die Referenzfahrt einer Achse.

VAR_INPUT
    Execute:		BOOL;
    Position:		LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Referenzfahrt.

Position: Die Referenzposition.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung der Referenzfahrt signalisiert.

CommandAborted: Hier wird ein Abbruch der Referenzfahrt signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.
  • Eine Referenzfahrt kann nur aus einem fehlerfreien Stillstand begonnen werden. Ist dies nicht der Fall wird mit Error und ErrorID:=dwTcHydErrCdNotStartable bzw. dem vorliegenden Errorcode reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn eine der in den Achs-Parametern angegebene Geschwindigkeiten zu klein (weniger als 1% der Referenzgeschwindigkeit) ist wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Referenzfahrt initiiert. Der genaue Ablauf wird von nEnc_HomingType in den Achs-Parametern festgelegt.

Sollte während der Abarbeitung der Referenzfahrt vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Referenzfahrt durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Ein erfolgreicher Abschluss der Referenzfahrt wird mit Done gemeldet.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Referenzfahrt auf FALSE gesetzt wird die eingeleitete Referenzfahrt unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, Done ) werden für einen Zyklus gegeben.


TcPlcHydraulics: PLCopen Motion Control: Runtime: MC_HomeOnBlock_BkPlcMc

FUNCTION_BLOCK MC_HomeOnBlock_BkPlcMc

Der Funktionsbaustein startet und überwacht die Referenzfahrt einer Achse.

VAR_INPUT
    Execute:		BOOL;
    Position:		LREAL;
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		BOOL;
    CommandAborted:	BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet die Referenzfahrt.

Position: Die Referenzposition.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Abarbeitung der Referenzfahrt signalisiert.

CommandAborted: Hier wird ein Abbruch der Referenzfahrt signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.
  • Eine Referenzfahrt kann nur aus einem fehlerfreien Stillstand begonnen werden. Ist dies nicht der Fall wird mit Error und ErrorID:=dwTcHydErrCdNotStartable bzw. dem vorliegenden Errorcode reagiert.
  • Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stop-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
  • Wenn eine der in den Achs-Parametern angegebene Geschwindigkeiten zu klein (weniger als 1% der Referenzgeschwindigkeit) ist wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Referenzfahrt initiiert. Der genaue Ablauf wird von nEnc_HomingType in den Achs-Parametern festgelegt.

Sollte während der Abarbeitung der Referenzfahrt vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Referenzfahrt durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Ein erfolgreicher Abschluss der Referenzfahrt wird mit Done gemeldet.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Referenzfahrt auf FALSE gesetzt wird die eingeleitete Referenzfahrt unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, Done ) werden für einen Zyklus gegeben.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtLogAxisEntry_BkPlcMc

FUNCTION_BLOCK MC_AxRtLogAxisEntry_BkPlcMc

Der Funktionsbaustein trägt eine achsbezogene Meldung in den LogBuffer der Library ein. Näheres über das Anlegen eines LogBuffers finden Sie unter FAQ #10 in der Knowledge Base.

Hinweis: Alle achsbezogenen Bausteine der Bibliothek verwenden diesen Baustein zur Meldungsausgabe.

VAR_INOUT
    Axis:		POINTER TO Axis_Ref_BkPlcMc;
END_VAR
VAR_INPUT
    Execute:		BOOL:=FALSE;
    pBuffer:		POINTER TO ST_TcPlcMcLogBuffer;
    LogLevel:		DWORD:=0;
    Source:		DWORD:=0;
    Message:		STRING(255);
    ArgType:		INT:=0;
    diArg:		DINT:=0;
    lrArg:		LREAL:=0;
    sArg:		STRING(255);
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		UDINT;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang aktiviert den Baustein.

pBuffer: Hier ist die Adresse einer Variablen vom Typ ST_TcPlcMcLogBuffer zu übergeben.

LogLevel: Eine kodierte Angabe des Meldungstyps. Es ist ein Logger Levels Wert aus den Global Constants zu verwenden.

Source: Eine kodierte Angabe der Meldungsquelle. Es ist ein Logger Sources Wert aus den Global Constants zu verwenden.

Message: Der Text der Meldung.

ArgType: Der Typ des optionalen Argumentes.

diArg: Der Wert des optionalen Arguments, wenn es vom Typ DINT ist.

lrArg: Der Wert des optionalen Arguments, wenn es vom Typ LREAL ist.

sArg: Der Wert des optionalen Arguments, wenn es vom Typ STRING ist.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Ermittlung der Istposition signalisiert.

Verhalten des Bausteins

Der Baustein unterscheidet sich von MC_AxRtLogEntry_BkPlcMc nur dadurch, dass er der Meldung den Achsnamen voranstellt.

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Done wird sofort TRUE während Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen. Diese Ausgänge sind nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtLogClear_BkPlcMc

FUNCTION_BLOCK MC_AxRtLogClear_BkPlcMc

Der Funktionsbaustein löscht einen LogBuffer der Library. Näheres über das Anlegen eines LogBuffers finden Sie unter FAQ #10 in der Knowledge Base.

VAR_INOUT
    pBuffer:		POINTER TO ST_TcPlcMcLogBuffer;
END_VAR

pBuffer: Hier ist die Adresse einer Variablen vom Typ ST_TcPlcMcLogBuffer zu übergeben.

Verhalten des Bausteins

Alle Einträge im LogBuffer werden gelöscht und initialisiert.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtLogEntry_BkPlcMc

FUNCTION_BLOCK MC_AxRtLogEntry_BkPlcMc

Der Funktionsbaustein trägt eine Meldung in den LogBuffer der Library ein. Näheres über das Anlegen eines LogBuffers finden Sie unter FAQ #10 in der Knowledge Base.

VAR_INPUT
    Execute:		BOOL:=FALSE;
    pBuffer:		POINTER TO ST_TcPlcMcLogBuffer;
    LogLevel:		DWORD:=0;
    Source:		DWORD:=0;
    Message:		STRING(255);
    ArgType:		INT:=0;
    diArg:		DINT:=0;
    lrArg:		LREAL:=0;
    sArg:		STRING(255);
END_VAR
VAR_OUTPUT
    Busy:		BOOL;
    Done:		UDINT;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang aktiviert den Baustein.

pBuffer: Hier ist die Adresse einer Variablen vom Typ ST_TcPlcMcLogBuffer zu übergeben.

LogLevel: Eine kodierte Angabe des Meldungstyps. Es ist ein Logger Levels Wert aus den Global Constants zu verwenden.

Source: Eine kodierte Angabe der Meldungsquelle. Es ist ein Logger Sources Wert aus den Global Constants zu verwenden.

Message: Der Text der Meldung.

ArgType: Der Typ des optionalen Argumentes.

diArg: Der Wert des optionalen Arguments, wenn es vom Typ DINT ist.

lrArg: Der Wert des optionalen Arguments, wenn es vom Typ LREAL ist.

sArg: Der Wert des optionalen Arguments, wenn es vom Typ STRING ist.

Busy: Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done: Hier wird die erfolgreiche Ermittlung der Istposition signalisiert.

Verhalten des Bausteins

Hinweis: Dieser Baustein benötigt keine Zeit zur Durchführung seiner Aufgaben. Der Ausgang Done wird sofort TRUE während Busy wird zu keinem Zeitpunkt den Wert TRUE annehmen. Diese Ausgänge sind nur aus Kompatibilitätsgründen vorhanden.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtLoggerDeSpool_BkPlcMc

FUNCTION_BLOCK MC_AxRtLoggerDeSpool_BkPlcMc

Der Funktionsbaustein stellt sicher, dass der LogBuffer der Library nicht überläuft. Näheres über das Anlegen eines LogBuffers finden Sie unter FAQ #10 in der Knowledge Base.

VAR_INPUT
    Spare:		INT;
END_VAR
VAR_INOUT
    pBuffer:		POINTER TO ST_TcPlcMcLogBuffer;
END_VAR

Spare: Die sicher zu stellende Anzahl von freien Meldungen im LogBuffer.

pBuffer: Hier ist die Adresse einer Variablen vom Typ ST_TcPlcMcLogBuffer zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf entfernt der Baustein eine Meldung aus dem LogBuffer wenn die Anzahl der freien Meldungen kleiner ist als die in Spare übergebene Minimalanzahl.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtLoggerRead_BkPlcMc

FUNCTION_BLOCK MC_AxRtLoggerRead_BkPlcMc

Der Funktionsbaustein liest eine Meldung aus dem LogBuffer der Library. Näheres über das Anlegen eines LogBuffers finden Sie unter FAQ #10 in der Knowledge Base.

Hinweis: Dieser Baustein wird via ADS von Diagnose-Tools genutzt. Ein direkter Aufruf durch die SPS-Applikation macht in der Regel keinen Sinn.

VAR_INOUT
    Entry:		INT:=0;
    pBuffer:		POINTER TO ST_TcPlcMcLogBuffer;
    pEntry:		POINTER TO ST_TcPlcMcLogEntry;
END_VAR

Entry: Die Nummer der zu lesenden Meldung,

pBuffer: Hier ist die Adresse einer Variablen vom Typ ST_TcPlcMcLogBuffer zu übergeben.

pEntry: Hier ist als Ziel die Adresse einer Variablen vom Typ ST_TcPlcMcLogEntry zu übergeben.

Verhalten des Bausteins

Der Baustein kopiert die von Entry selektierte Meldung aus dem LogBuffer pBuffer in die mit pEntry adressierte Meldungsstruktur. Dabei wird Entry als relative Altersangabe verstanden: Mit Entry:=1 wird die zuletzt eingetragene Meldung ausgewählt, mit Entry:=2 die nächst ältere usw. Steht die geforderte Meldung nicht zur Verfügung wird eine leere Meldung bereitgestellt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtLoggerSpool_BkPlcMc

FUNCTION_BLOCK MC_AxRtLoggerSpool_BkPlcMc

Der Funktionsbaustein übernimmt die Übertragung von Meldungen aus dem LogBuffer der Library in die Ereignisanzeige von Windows. Näheres über das Anlegen eines LogBuffers finden Sie unter FAQ #10 in der Knowledge Base.

VAR_INOUT
    pBuffer:		POINTER TO ST_TcPlcMcLogBuffer;
END_VAR

pBuffer: Hier ist die Adresse einer Variablen vom Typ ST_TcPlcMcLogBuffer zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf entfernt der Baustein eine Meldung aus dem LogBuffer und überträgt ihn in die Ereignisanzeige von Windows.


TcPlcHydraulics: PLCopen Motion Control: Parameter: MC_AxAdsCommServer_BkPlcMc

FUNCTION_BLOCK MC_AxAdsCommServer_BkPlcMc

Der Funktionsbaustein stattet die Applikation mit den Fähigkeiten eines ADS-Servers aus. Er ruft bei Bedarf Bausteine vom Typ MC_AxAdsReadDecoder_BkPlcMc und MC_AxAdsWriteDecoder_BkPlcMc auf. Eine Auflistung der nutzbaren ADS-Codes finden Sie in der Knowledge Base.

VAR_INPUT
    nFirstAxisIndex:	INT;
    nLastAxisIndex:	INT;
END_VAR
VAR_INOUT
    pAxItf:		POINTER TO Axis_Ref_BkPlcMc;
END_VAR

nFirstAxisIndex, nLastAxisIndex: Hier ist die Dimensionierung des Axis_Ref_BkPlcMc Arrays anzugeben.

Achtung: Eine nicht zutreffende Angabe an dieser Stelle schließt eine Teil der Achsen von der Kommunikation aus oder führt zum Absturz der PLC-Applikation durch Auslösung von schweren Laufzeitfehlern (Page Fault Exception).

pAxItf: Hier ist die Adresse einer Variablen oder eines Arrays von Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Durch zyklischen Aufruf dieses Bausteins durch die PLC-Applikation erhält diese den Charakter eines ADS-Servers und beantwortet ADS-Read- und ADS-Write-Zugriffe wie jeder andere ADS Server. Dies schließt die Dekodierung einer IdxGroup/IdxOffset-Adressierung ein. Dazu werden bei Bedarf Bausteine vom Typ MC_AxAdsReadDecoder und MC_AxAdsWriteDecoder aufgerufen.

Hinweis: Ist die PLC-Applikation bereits ein ADS-Server darf dieser Baustein nicht verwendet werden. In diesem Fall sind die Bausteine vom Typ MC_AxAdsReadDecoder und MC_AxAdsWriteDecoder aus dem vorhandenen ADS Server-Baustein der Applikation aufzurufen.


TcPlcHydraulics: PLCopen Motion Control: Parameter: MC_AxAdsReadDecoder_BkPlcMc

FUNCTION_BLOCK MC_AxAdsReadDecoder_BkPlcMc

Der Funktionsbaustein dekodiert ADS-Read-Zugriffe. Eine Auflistung der nutzbaren ADS-Codes finden Sie in der Knowledge Base.

VAR_INPUT
    nFirstAxisIndex:	INT;
    nLastAxisIndex:	INT;
    bReset:		BOOL;
    bValid:		BOOL;
    sNetId:		STRING(80);
    nPort:		UINT;
    nInvokeId:	UDINT;
    nIdxGroup:	UDINT;
    nIdxOffs:		UDINT;
    cbReadLen:	UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    bClear:		BOOL;
    bPending:		BOOL;
END_VAR

nFirstAxisIndex, nLastAxisIndex: Hier ist die Dimensionierung des Axis_Ref_BkPlcMc Arrays anzugeben.

Achtung: Eine nicht zutreffende Angabe an dieser Stelle schließt eine Teil der Achsen von der Kommunikation aus oder führt zum Absturz der PLC-Applikation durch Auslösung von schweren Laufzeitfehlern (Page Fault Exception).

bReset, bValid: Diese Signale dienen zur Koordinierung des Dekoders mit dem ADS-Server.

sNetId, nPort, nInvokeId: Diese Werte werden für die Erzeugung des ADS Response benötigt. Sie werden vom ADS-Indication-Baustein eines ADS-Servers geliefert.

nIdxGroup, nIdxOffs, cbReadLen: Diese Werte werden für die Dekodierung des Zugriffs benötigt. Sie werden vom ADS-Indication-Baustein eines ADS-Servers geliefert.

pAxItf: Hier ist die Adresse einer Variablen oder eines Arrays von Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

bClear:

bPending:

Verhalten des Bausteins

Hinweis: Signalisiert der Baustein bei anstehendem bValid-Signal weder bClear noch bPending hat er die Kombination aus nIdxGroup und nIdxOffs nicht dekodiert und keinen Response erzeugt. In diesem Fall muss der ADS-Server (soweit vorhanden) andere Dekoder aufrufen oder einen Response mit entsprechendem Errorcode erzeugen.


TcPlcHydraulics: PLCopen Motion Control: Parameter: MC_AxAdsWriteDecoder_BkPlcMc

FUNCTION_BLOCK MC_AxAdsWriteDecoder_BkPlcMc

Der Funktionsbaustein dekodiert ADS-Write-Zugriffe. Eine Auflistung der nutzbaren ADS-Codes finden Sie in der Knowledge Base.

VAR_INPUT
    nFirstAxisIndex:	INT;
    nLastAxisIndex:	INT;
    bReset:		BOOL;
    bValid:		BOOL;
    sNetId:		STRING(80);
    nPort:		UINT;
    nInvokeId:	UDINT;
    nIdxGroup:	UDINT;
    nIdxOffs:		UDINT;
    cbWriteLen:	UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR
VAR_OUTPUT
    bClear:		BOOL;
    bPending:		BOOL;
END_VAR

nFirstAxisIndex, nLastAxisIndex: Hier ist die Dimensionierung des Axis_Ref_BkPlcMc Arrays anzugeben.

Achtung: Eine nicht zutreffende Angabe an dieser Stelle schließt eine Teil der Achsen von der Kommunikation aus oder führt zum Absturz der PLC-Applikation durch Auslösung von schweren Laufzeitfehlern (Page Fault Exception).

bReset, bValid: Diese Signale dienen zur Koordinierung des Dekoders mit dem ADS-Server.

sNetId, nPort, nInvokeId: Diese Werte werden für die Erzeugung des ADS Response benötigt. Sie werden vom ADS-Indication-Baustein eines ADS-Servers geliefert.

nIdxGroup, nIdxOffs, cbWriteLen: Diese Werte werden für die Dekodierung des Zugriffs benötigt. Sie werden vom ADS-Indication-Baustein eines ADS-Servers geliefert.

pAxItf: Hier ist die Adresse einer Variablen oder eines Arrays von Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

bClear:

bPending:

Verhalten des Bausteins

Hinweis: Signalisiert der Baustein bei anstehendem bValid-Signal weder bClear noch bPending hat er die Kombination aus nIdxGroup und nIdxOffs nicht dekodiert und keinen Response erzeugt. In diesem Fall muss der ADS-Server (soweit vorhanden) andere Dekoder aufrufen oder einen Response mit entsprechendem Errorcode erzeugen.


TcPlcHydraulics: PLCopen Motion Control: Parameter: MC_AxParamAuxLabelsLoad_BkPlcMc

FUNCTION_BLOCK MC_AxParamAuxLabelsLoad_BkPlcMc

Der Funktionsbaustein lädt die Beschriftungstexte für die kundenspezifischen Achsparameter aus einer Datei. Diese Texte können mit einem einfachen Texteditor wie Microsoft Notepad erzeugt werden.

Hinweis: Die Datei muss strikt entsprechend der unten angegebenen Regeln aufgebaut sein. Andernfalls kann es zu erheblichen Problemen bis hin zum Systemabsturz kommen.

Hinweis: Dieser Baustein wird in der Regel nicht direkt durch die Applikation aufgerufen. Soweit möglich sollte ein Baustein des Typs MC_AxUtiStandardInit_BkPlcMc verwendet werden, der einen Baustein des Typs MC_AxParamAuxLabelsLoad_BkPlcMc verwendet.

VAR_INPUT
    Execute:		BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet den Ladevorgang.

Done: Hier wird das erfolgreiche Laden der Parameter signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Ladevorgang initiiert.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktivem Ladevorgang auf FALSE gesetzt wird der eingeleitete Vorgang unbeeinflusst weiter bearbeitet. Die Signale am Ende der Operation (Error, ErrorID, Done ) werden für einen Zyklus gegeben.

Hinweis: Die Anzahl der Zeilen in der Datei muss mit der in den globalen Konstanten der Bibliothek als iTcHydfCustDataMaxIdx (derzeit: 20) festgelegten Anzahl übereinstimmen. Jede der Zeilen darf maximal 20 Zeichen (inklusive Leerzeichen, ohne Zeilenwechsel) enthalten.


TcPlcHydraulics: PLCopen Motion Control: Parameter: MC_AxParamLoad_BkPlcMc

FUNCTION_BLOCK MC_AxParamLoad_BkPlcMc

Der Funktionsbaustein lädt die Parameter einer Achse aus einer Datei. Für die kompatible Erzeugung der Parameterdatei ist ein Baustein vom Typ MC_AxParamSave_BkPlcMc zu verwenden.

Hinweis: Dieser Baustein wird in der Regel nicht direkt durch die Applikation aufgerufen. Soweit möglich sollte ein Baustein des Typs MC_AxUtiStandardInit_BkPlcMc verwendet werden, der einen Baustein des Typs MC_AxParamLoad_BkPlcMc verwendet.

VAR_INPUT
    Execute:		BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet den Ladevorgang.

Done: Hier wird das erfolgreiche Laden der Parameter signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Ladevorgang initiiert.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktivem Ladevorgang auf FALSE gesetzt wird der eingeleitete Vorgang unbeeinflusst weiter bearbeitet. Die Signale am Ende der Operation (Error, ErrorID, Done ) werden für einen Zyklus gegeben.


TcPlcHydraulics: PLCopen Motion Control: Parameter: MC_AxParamSave_BkPlcMc

FUNCTION_BLOCK MC_AxParamSave_BkPlcMc

Der Funktionsbaustein schreibt die Parameter einer Achse in eine Datei. Für das Einlesen der Datei ist ein Baustein vom Typ MC_AxParamLoad_BkPlcMc zu verwenden.

VAR_INPUT
    Execute:		BOOL;
END_VAR
VAR_OUTPUT
    Done:		BOOL;
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Execute: Eine steigende Flanke an diesem Eingang startet den Schreibvorgang.

Done: Hier wird das erfolgreiche Schreiben der Parameter signalisiert.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Wenn einer der Pointer nicht initialisiert ist wird mit Error und ErrorID:=dwTcHydErrCdPtrPlcMc oder dwTcHydErrCdPtrMcPlc reagiert.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Schreibvorgang initiiert.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktivem Schreibvorgang auf FALSE gesetzt wird der eingeleitete Vorgang unbeeinflusst weiter bearbeitet. Die Signale am Ende der Operation (Error, ErrorID, Done ) werden für einen Zyklus gegeben.


TcPlcHydraulics: Knowledge Base

Knowledge Base der SPS Bibliothek TcHydlib

Hier finden Sie eine Reihe von Antworten auf immer wieder auftauchende Fragen.

Themengebiete

Name | Beschreibung
Global Constants | Vordefinierte Fehlercodes, Masken zur Bitabfrage, ADS-Codes usw.
Setup | Inbetriebnahme-Hinweise.
SampleList | Programm-Beispiele
Ideensammlung | Tipps und Tricks.

Probleme beim Update der Bibliothek

Bei einem Update der Bibliothek kann es zu Problemen beim Übersetzen kommen. Die Ursache ist dann möglicherweise eine Änderung des Namens eines oder mehrerer Bausteine oder Datentypen. Diese Änderungen sind nicht immer vermeidbar und werden in der Regel aus einem der folgenden Gründe durchgeführt:

  • Anpassung an die Regeln der PLC Open Motion Control Definitionen.
  • Verfolgen der Weiterentwicklung der PLC Open Motion Control Definitionen.
  • Weiterentwicklung der bereitgestellten Technologie.
  • Anpassung an die verwendete Technologie, insbesondere Unterstützung weiterer E/A-Geräte.
  • Vermeidung von Namenskollisionen und anderen Kompatibilitätsproblemen mit anderen Bibliotheken.

Hinweis: Die in einem Projekt verwendete Version der Bibliothek sollte in das Projektverzeichnis kopiert und mit dem Projekt zusammen gesichert werden. Dadurch wird ein unbeabsichtigter Versionswechsel vermieden, der sonst durch ein in der Zwischenzeit durchgeführtes TwinCAT Update verursacht werden könnte. Ist ein Update der Bibliothek gewollt ist dann die neue Version gezielt in das Projektverzeichnis zu kopieren.

Hinweis: Es wird dringend empfohlen, nach einem Update der Bibliothek eine probeweise Übersetzung des gesamten Projekts durchzuführen. Weiterhin sollte mit dem System Manager das Mapping aktualisiert werden. Sollte die unten stehende Tabelle eine Größenänderung einer der Strukturen anzeigen ist unbedingt die Adressvergabe zu überprüfen.

Alter Name | Neuer Name | Grund der Änderung
ST_TcMcAxInterface | Axis_Ref_BkPlcMc | Anpassung an PLC Open Motion Control Definitionen.
ST_TcPlcMcCamId | MC_CAM_ID_BkPlcMc | Anpassung an PLC Open Motion Control Definitionen.
ST_TcPlcMcCamRef | MC_CAM_REF_BkPlcMc | Anpassung an PLC Open Motion Control Definitionen.
E_TcMCDirection | MC_Direction_BkPlcMc | Anpassung an PLC Open Motion Control Definitionen.
E_TcMCStartMode | MC_StartMode_BkPlcMc | Anpassung an PLC Open Motion Control Definitionen.
ST_TcPlcMcDriveIn.bKL2531State | ST_TcPlcMcDriveIn.bTerminalState | Ab V2.2.0: Unterstützung der Registerkommunikation.
ST_TcPlcMcDriveOut.bKL2531Ctrl | ST_TcPlcMcDriveOut.bTerminalCtrl | Ab V2.2.0: Unterstützung der Registerkommunikation.

Größe der E/A-Strukturen in Bytes

Name | V 2.1.X | V2.2.0 (voraussichtlich)
ST_TcPlcMcEncoderIn | 16 | 43
ST_TcPlcMcEncoderOut | 1 | 28
ST_TcPlcMcDriveIn | 23 | 29
ST_TcPlcMcDriveOut | 40 | 45
ST_TcPlcMcAx2000In | 37 | 37
ST_TcPlcMcAx2000Out | 26 | 26


TcPlcHydraulics: Knowledge Base: FAQs

Knowledge Base der SPS Bibliothek TcHydlib: Inbetriebnahme

Bei der Inbetriebnahme der Achse sind für eine Reihe von Parametern geeignete Werte einzustellen. Mit einigen dieser Parameter werden Festlegungen über zu verwendende hardwarespezifische Unterbausteine oder über andere Komponenten festgelegt, die in mehreren Varianten zur Verfügung stehen. Andere stellen Informationen über den Antriebsstrang dar und dienen den Bausteinen der Library zur korrekten Ermittlung von Istwerten und zur angepassten Erzeugung von Stell- und Regelungsgrößen. Andere Parameter definieren die zu erzeugenden Bewegungsprofile oder das Verhalten im Ruhezustand.

Bei der Inbetriebnahme ist eine bestimmte Vorgehensweise sinnvoll. Die hier beschriebene Reihenfolge ist nicht zwingend, sorgt aber für eine frühzeitige Kontrollierbarkeit der Achse. So kann die Achse selbst bei der weiteren Arbeit genutzt werden.

Hinweis: Die hier beschriebene Arbeitsweise ist zumindest grundsätzlich mit der für NC Achsen vergleichbar.

Hinweis: Die Inbetriebnahme einer Istdruckermittlung mit Bausteinen vom Typ MC_AxRtReadPressureSingle_BkPlcMc oder MC_AxRtReadPressureDiff_BkPlcMc ist in der Dokumentation des Bausteins beschrieben.

Hinweis: Soll der Druck einer Achse begrenzt werden ist hierzu zum Beispiel ein Baustein des Typs MC_AxCtrlSlowDownOnPressure_BkPlcMc oder MC_AxCtrlPullbackOnPressure_BkPlcMc zu verwenden.

Name | Beschreibung
IBN #1 | Sicherheitshinweise
IBN #2 | Erste Festlegungen
IBN #3 | Voreinstellungen
IBN #4 | Beschleunigen und Bremsen
IBN #5 | Erstes Aktivieren der Achse
IBN #6 | Vorsteuerung
IBN #7 | Zielanfahrt
IBN #8 | Ruheverhalten
IBN #9 | Monitorfunktionen
IBN #10 | Referenzfahrt und Nullpunktverschiebung
IBN #11 | Performance-Optimierung

IBN #1: Sicherheitshinweise

Während der Inbetriebnahme einer Achse kann es jederzeit zu weder zu diesem Zeitpunkt noch in dieser Art und Weise gewollten oder vorhersehbaren Bewegungen der Achse kommen. Die Gefahr für Personen, Sachen und die Maschine sind in dieser Phase erheblich höher als während des normalen Betriebs. Dementsprechend sind eine Reihe von Maßnahmen zu treffen.

  • Die Maschine oder Anlage ist gegen Betreten oder Hineingreifen zu sichern.
  • Alle anwesenden Personen sind auf die von der Maschine ausgehende Gefahr hinzuweisen. Grundsätzlich sollten sich keine Personen in der Nähe aufhalten, die dies nicht zwingend tun müssen.
  • Alle empfindlichen Maschinenteile wie Werkzeuge oder Formen sollten zumindest in der Anfangsphase entfernt werden. Falls dies zum Beispiel durch fehlende Masse zu einem nicht der Praxis entsprechenden Verhalten der Achse führen könnte ist die Verwendung von Ballast zu erwägen.
  • Die Achse wird möglicherweise untypische Bewegungen (zu schnell, zu weit, unregelmäßig) zeigen. Wenn dies zu Beschädigungen führen kann sind entsprechende Vorkehrungen zu treffen. Dabei kann es sich zum Beispiel um einen provisorisch angebrachten verstärkten Anschlag zur Begrenzung des Fahrweges handeln.
  • Die Energieversorgung sollte erst zu einem sinnvollen Zeitpunkt (und somit nicht gleich zu Beginn), nach sorgfältiger Überprüfung der Situation und gut überlegt aktiviert werden.

IBN #2: Erste Festlegungen

Die folgenden Parameter sollten durch die Initialisierungsroutine (siehe hierzu FAQ #3) zur Laufzeit und somit bei jedem TwinCAT Systemstart gesetzt werden:

  • fCycletime: Hier ist die Task Cycle Time einzutragen. Besser als eine hart kodierte Zuweisung ist die Verwendung der Laufzeitinformationen der PLC Runtime.

    Beispiel: stTcHydAxParam[nAxIndex].fCycletime:=UDINT_TO_LREAL(SystemTaskInfoArr[1..4].cycleTime) / 10000000.0;

  • sAxisName, sParamFileName: Der textuelle Name einer Achse und der Name der Parameterdatei sollten in einer festen Beziehung stehen. Deshalb ist eine harte Kodierung durchaus sinnvoll.

    Beispiel für generische Achsnamen, die aus dem Achsindex 1..n erzeugt werden:

    stAxItf[nAxIndex].sAxisName:=CONCAT('Achse_',INT_TO_STRING(nAxIndex));

    (*Beispiel für eine Cxxxx Steuerung*)

    stemp:=CONCAT('C:\TwinCAT\PLC\HydLib\',stAxItf[nAxIndex].sAxisName);

    (* Beispiel für eine CX1000 Steuerung *)

    stemp:=CONCAT('HARD DISK\TwinCAT\',stAxItf[nAxIndex].sAxisName);

    stAxParam[nAxIndex].sParamFileName:=CONCAT(stemp,'.dat');

    Hinweis: Die Namen der Parameterdateien der Achsen dürfen auf keinen Fall gleich sein. Nur über diesen Dateinamen sind die Parameter der Achse zugeordnet. Wird für zwei Achsen der gleiche Dateiname verwendet gehen die Parameter einer Achse verloren und sie erhält die gleichen Parameter wie die andere Achse. Beim Speichern der Parameter gehen die Parameter der einen Achse verloren. Welcher Parametersatz erhalten bleibt und welcher verloren geht hängt dabei nur von der Reihenfolge der Speicherbefehle ab.

    Hinweis: Die Parameterdatei einer Achse kann durch Kopieren gesichert oder wieder hergestellt werden. Bei Serienmaschinen kann auf diese Weise eine identische Vervielfachung erreicht werden. So müssen dann nur Parameter eingestellt werden, die wie zum Beispiel Referenzpositionen oder Nullpunktverschiebungen von variablen mechanischen Eigenschaften der individuellen Maschine beeinflusst werden.

Eine Reihe von Parametern regelt die Verwendung von Bausteinen oder Vorgehensweisen fest, für die mehrere Alternativen bestehen. Diese Festlegungen können in der Regel bereits zu Beginn der Inbetriebnahme getroffen werden.

  • nEnc_Type: Hier ist ein Wert aus E_TcMcEncoderType einzutragen. Dieser Parameter wird üblicherweise durch einen Baustein vom Typ MC_AxRtEncoder_BkPlcMc ausgewertet.

    Hinweis: Die Verknüpfung der E/A-Variablen mit der E/A-Komponente ist mit dem SystemManager herzustellen. Weitere Hinweise finden Sie unter FAQ #4.

  • nEnc_HomingType: Hier ist ein Wert aus E_TcMcHomingType einzutragen. Dieser Parameter wird üblicherweise durch einen Baustein vom Typ MC_Home_BkPlcMc verwendet.

    Hinweis: Nicht jeder Encoder-Typ unterstützt jede Referenziermethode.

    Hinweis: Bei Absolutencodern z.B. mit SSI-Interface ist eine Referenzfahrt nicht erforderlich und der Wert von nEnc_HomingType ist ohne Bedeutung. Die Anpassung der Positionserfassung an die Maschine erfolgt durch den Parameter fEnc_ZeroShift.

  • nDrive_Type: Hier ist ein Wert aus E_TcMcDriveType einzutragen. Dieser Parameter wird üblicherweise durch einen Baustein vom Typ MC_AxRtDrive_BkPlcMc verwendet.

    Hinweis: Die Verknüpfung der E/A-Variablen mit der E/A-Komponente ist mit dem SystemManager herzustellen. Weitere Hinweise finden Sie unter FAQ #7.

  • nProfileType: Hier ist ein Wert aus E_TcMcProfileType einzutragen. Dieser Parameter wird üblicherweise durch einen Baustein vom Typ MC_AxRuntime_BkPlcMc ausgewertet.
  • bSoftEndMinEna, bSoftEndMaxEna: Diese Parameter sind zu diesem Zeitpunkt in der Regel auf 0 = FALSE zu stellen, da eine Begrenzung des Fahrweges in der Regel erst nach der Inbetriebnahme der Istwerterfassung sinnvoll ist.
  • bPosCtrlAccEna: Dieser Parameter ist vorerst ebenfalls auf 0 = FALSE einzustellen.

IBN #3: Voreinstellungen

Die nachfolgenden Parameter können bereits jetzt mit vorläufigen oder sogar endgültigen Werten belegt werden:

  • fEnc_IncWeighting, fEnc_IncInterpolation: Bei einigen Encodertype wie Inkremental-Encoder oder SSI-Absolutencoder ist die Inkrement-Bewertung durch Verrechnung von Datenblattangaben des Encoders und Angaben zur mechanischen Konstruktion zu errechnen. In diesen Fällen sollte dies jetzt geschehen. Andere Encoder wie Analoggeber erlauben zumindest eine vorläufige Einstellung, indem der vom Sensor erfassbare Weg durch den von der Eingangselektronik bereitgestellten Wertebereich dividiert. Wenn also ein Analog-Geber 0..10V über einen Weg von 100mm liefert und die verwendete KL4032 das elektrische Signal auf den Wertebereich 0..32767 abbildet ist als Parameter der vorläufige Wert 0.003 ≈ 100 / 32767 einzustellen. Dieser Wert ist zu einem späteren Zeitpunkt noch einmal anzupassen.
    Erfolgt die Angabe als Weglänge pro ein Inkrement ist als Inkrement-Unterteilung der Wert 1.0 einzutragen. Wird eine Angabe über mehrere Inkremente (also z.B. für eine Wellenumdrehung) gemacht, ist als Inkrement-Unterteilung die Anzahl der Inkremente für die angegebene Weglänge einzutragen.
    Beispiel: Bei 20mm Weg auf 1024 Inkrementen sind die gerundete Angabe ( 0.019531 / 1 ) oder die exakte Angabe ( 20.0 / 1024 ) gleichwertig.
  • bEnc_Reversed: Die Festlegung, welche Bewegungsrichtung der Achse als positiv oder negativ bezeichnet wird ist letztlich völlig willkürlich. Zu diesem Zeitpunkt ist in der Regel noch nicht bekannt, ob der Encoder (bedingt durch die Zuordnung der Signalleitungen zu den E/A-Klemmen) eine Zählrichtung besitzt, die zu dieser festgelegten Polarität der Maschine entgegengesetzt ist. Daher ist hier in der Regel zunächst FALSE einzutragen.
    Achtung: Nicht alle Encoder-Typen unterstützen diesen Parameter.
  • fEnc_ZeroShift: Bei inkrementellen Wegsensoren ist dieser Parameter bedeutungslos und sollte jetzt endgültig auf 0.0 eingestellt werden. Wird ein absoluter Wegsensor eingesetzt, sollte jetzt ein Wert eingestellt werden, der die angezeigte Istposition ungefähr in den gewünschten Wertebereich verschiebt. Dieser Parameter wird zu einem späteren Zeitpunkt endgültig eingestellt.
  • fAreaRatio: Hier ist das Verhältnis der wirksamen Flächen eines Hydraulikzylinders einzutragen. Ist keine Flächenkompensation erforderlich muss der Wert 1.0 eingetragen werden.

    Hinweis: Der Wert kann aus den Kolben- und Stangendurchmessern nach folgender Formel berechnet werden:

    fAreaRatio:=(DKA*DKA-DSA*DSA) / (DKB*DKB-DSB*DSB) mit

    DKA=Durchmesser Kolben A-Seite

    DKB=Durchmesser Kolben B-Seite

    DSA=Durchmesser Stange A-Seite

    DSB=Durchmesser Stange B-Seite

    Hinweis: Als A-Seite wird immer die Seite eines Kolbens bezeichnet, deren Beaufschlagung mit Druck und Volumenstrom zu einer Änderung der Istposition in steigender Richtung führt. Letzteres bedeutet, dass ein positiver Wert im Betrag steigt, ein negativer Wert jedoch sinkt.

  • bDrive_Reversed: Die Festlegung, welche Bewegungsrichtung der Achse als positiv oder negativ bezeichnet wird ist letztlich völlig willkürlich. Zu diesem Zeitpunkt ist in der Regel noch nicht bekannt, ob der Antrieb (bedingt durch die Zuordnung der Signalleitungen zu den E/A-Klemmen) eine Wirkungsrichtung besitzt, die zu dieser festgelegten Polarität der Maschine entgegengesetzt ist. Daher ist hier in der Regel zunächst FALSE einzutragen.
  • fRefVelo: Hier ist die bei Ausgabe von 100% Stellwert in positiver Richtung zu erwartende Geschwindigkeit der Achse in Istpositionseinheiten pro Sekunde einzutragen. Hierfür kann ein vorläufiger Wert aus den Kenndaten des Ventils und des Zylinders errechnet werden.

    fRefVelo:=QNENN * 16666.6 / AA mit

    AA := (DKA*DKA-DSA*DSA) * 3.1415 / 4.0

    QNENN als Nenn-Volumenstrom aus dem Datenblatt des Ventils.

  • fMaxVelo: Hier sollte vorerst der gleiche Wert wie unter fRefVelo eingestellt werden.
  • fCreepSpeed, fCreepDistance: Als fCreepSpeed sollte vorläufig etwa 10% von fRefVelo eingestellt werden. Um ein Überfahren der Zielposition zu verhindern sollte als fCreepDistance vorläufig ein Wert von einigen 10mm (bei sehr schweren Massen bis 100mm) eingestellt werden.
  • fBrakeDistance, fBrakeDeadTime: Diese Werte sollten vorläufig auf 0.0 gestellt werden. So wird das Ziel zwar geringfügig überfahren, was bei Bedarf durch Erhöhen von fBrakeDistance kompensiert werden kann.
  • fMonPositionRange, fMonTargetRange, fMonTargetFilter: Diese Parameter definieren die Bedingungen für die Fertig-Meldung der Achsbewegungen. Vorläufig sollten fMonPositionRange und fMonTargetRange auf einen großen Wert wie 1000.0mm und fMonTargetFilter auf einen kleinen Wert wie 0.01s eingestellt werden.
  • fLagAmp, fZeroCompensation, fTargetClamping: Diese Parameter sollten vorläufig auf 0.0 gestellt werden. Sollte eine Achse mit einem Nullschnitt-Ventil in dieser Einstellung driften ist sie zunächst durch Verändern von fZeroCompensation zu stoppen. Anschließend sollte ein kleiner Wert für fLagAmp eingestellt werden. Ein solcher kleiner Wert kann festgelegt werden, dass die fRefVelo durch eine nicht zu kleine Strecke wie zum Beispiel 100mm dividiert wird.
  • fReposDistance: Hier sollte vorläufig ein großer Wert wie 1000.0mm eingestellt werden. Andernfalls könnte es bei einigen Profiltypen zu einem selbständigen Anfahren der Achse kömmen.
  • fValve_BendPointVelo, fValve_BendPointOutput: Einige Ventile zeigen auf Grund ihrer Konstruktion (gestufte Blende) eine ausgeprägte Steigungsänderung im aktiven Stellbereich auf (Beispiel-Kennlinie 2). Um auch hier eine gleichmäßige Beschleunigung und Verzögerung sowie ein korrektes Stellen der Fahrgeschwindigkeit über den nutzbaren Arbeitsbereich zu erreichen müssen die Bausteine der Library diese Steigungsänderung berücksichtigen. In der Regel ist die Angabe der Datenblattangabe ausreichen und kann bereits jetzt eingestellt werden.

    Hinweis: Bei linearen Ventilen oder anderen Stellgliedern ohne Kennlinienknick im aktiven Stellbereich (Beispiel-Kennlinien 1 und 3) sind diese Parameter bereits jetzt endgültig auf 0.0 zu stellen.

  • fValve_OverlapComp: Bei Hydraulik-Ventilen mit positiver Überdeckung (Beispiel-Kennlinie 3) sollte dieser Parameter bereits jetzt auf etwas mehr als die Angabe im Datenblatt eingestellt werden. Bei einer Herstellerangabe von 20% sollte der Parameter auf etwa 22 bis 25% eingestellt werden. Die Angaben des Ventil-Herstellers beschreiben den Stellwert, bei dem überhaupt ein messbarer Volumenstrom zustande kommt. Die Bausteine der Library benötigen dagegen den Stellwert, bei dem die Verlängerung des aktiven Kennlinienbereichs die Nulllinie schneidet. Dieser Wert liegt erfahrungsgemäß um wenige Prozentpunkte oberhalb der Herrstellerangabe.

    Hinweis: Bei Nullschnittventilen oder anderen Stellgliedern ohne Sperrbereich um den Nullpunkt (Beispiel-Kennlinie 1 und 2) ist dieser Parameter bereits jetzt endgültig auf 0.0 zu stellen.

Beispiele für typische Ventilkennlinien

IBN #4: Beschleunigen und Bremsen

  • fStartRamp, fAcc, fMaxAcc: Diese Parameter regeln den Geschwindigkeitsaufbau. Von den beiden Beschleunigungsparameter wirkt der kleinere als Begrenzung. Je nach eingestelltem Profiltyp wirkt zusätzlich fStartRamp als zeitliche Begrenzung. Als vorläufige Einstellung sollte bei Achsen mit einer Grenzfrequenz von mindestens einigen 10Hz eine Zeit von etwa 1 Sekunde, sonst von mehreren Sekunden gewählt werden. Die Beschleunigungswerte errechnen sich dann nach folgender Formel:

    Acc := fRefVelo / fStartRamp

    Mit dieser Einstellung wird die Achse sehr weich geführt. Eine Performance-Optimierung sollte erst später erfolgen.

  • fStopRamp, fDec, fMaxDec: Diese Parameter regeln den Geschwindigkeitsabbau. Von den beiden Verzögerungsparameter wirkt der kleinere als Begrenzung. Je nach eingestelltem Profiltyp wirkt zusätzlich fStopRamp als zeitliche Begrenzung. Als vorläufige Einstellung sollte bei Achsen mit einer Grenzfrequenz von mindestens einigen 10Hz eine Zeit von etwa 1 Sekunde, sonst von mehreren Sekunden gewählt werden. Die Beschleunigungswerte errechnen sich dann nach folgender Formel:

    Dec := fRefVelo / fStopRamp

    Mit dieser Einstellung wird die Achse sehr weich geführt. Eine Performance-Optimierung sollte erst später erfolgen.

  • fEmergencyRamp: Diese Rampenzeit steuert den Stellwertabbau im Fehlerfall und damit vergleichbaren Situationen. Dementsprechend sollte diese Zeit so niedrig eingestellt werden wie für die Maschine und die Ausrüstung verträglich ist. In jedem Fall ist dieser Wert so einzustellen, dass die Achse deutlich schneller Abbremst als bei einem regulären Bremsen.

    Hinweis: In einigen Fällen kann es nötig sein, den Stellwert nicht zu schnell abzubauen, um ein Auftreten von Kavitations-Effekten an den Steuerkanten des Ventils zu vermeiden. Dies ist hauptsächlich bei schnell reagierenden Ventilen mit großem Nennvolumenstrom in Kombination mit großen Massen zu erwarten und führt zu einer schleichenden Beschädigung des Ventils.

IBN #5: Erstes Aktivieren der Achse

Nachdem die oben beschriebenen Voreinstellungen gemacht sind sollte die Achse mit geringer Performance aber zumindest grob kontrolliert fahrbar sein.

  • Stellen Sie eine sichere Situation an der Maschine her, weisen Sie alle anwesenden Personen auch die Gefahrensituation hin.
  • Sorgen Sie dafür, dass die Achse keine Freigaben in ST_TcHydAxRtData.nDeCtrlDWord erhält.
  • Wenn die Möglichkeit besteht sollte eine kleine Bewegung der noch nicht mit Energie versorgten Maschine erzeugt werden. Eventuell kann dazu die Achse oder der Wegsensor manuell bewegt werden. Auf diesem Wege ist die korrekte Zählrichtung der Istwerterfassung sicher zu stellen. Sollte die Zählrichtung invers sein ist die fEnc_IncWeighting im Vorzeichen umzukehren. Bei absoluten Wegsensoren ist dann die fEnc_ZeroShift zu überprüfen.
  • Stellen Sie sicher, dass keine anderen Achsen durch das Aktivieren der Energieversorgung in Bewegung gesetzt werden können.
  • Aktivieren Sie jetzt die Energieversorgung. (Kompressor an, Hochdruck ein usw.)
  • Die Achse darf höchstens driften. Sollte eine erhebliche Bewegung erkennbar sein liegt wahrscheinlich ein elektrischen, hydraulisches oder mechanisches Problem vor, das behoben werden muss, bevor ein neuer Versuch unternommen werden kann.
  • Eine Bewegung der Achse muss im Istwert erkennbar sein. Um dies zu Überprüfen ist ein Driften der Achse ausreichend.
  • Wenn eine Achse mit einem Nullschnittventil oder eine andere Antriebstechnik ohne Totbereich um den Nullpunkt driftet sollte die Bewegung durch Veränderung von fZeroCompensation aufgehoben werden. Anschließend kann ein kleiner Wert (zum Beispiel fRefVelo / 100mm) als fLagAmp eingestellt werden. Sollte die Achse auch die Aktivierung der Lageregelung mit einem Wegfahren von der Sollposition reagieren arbeitet der Lageregelkreis in Mitkopplung. Wenn sicher gestellt ist, dass die Istwerterfassung mit der korrekten Zahlrichtung arbeitet kann dies nur auf eine Verpolung im Stellwertkanal zurück zu führen sein. Dieses Problem ist derzeit nur durch Korrektur der Verdrahtung zu lösen.
  • Die Achse sollte jetzt in einem stabilen Ruhezustand sein. Jetzt ist durch Starten der Achse mit niedriger Geschwindigkeit auf eine nahe Zielposition eine erste aktive Bewegung auszulösen. Wenn die Bewegung der Maschine in die falsche Richtung erfolgt ist dies auf eine Verpolung im Stellwertkanal zurück zu führen sein. Dieses Problem ist derzeit nur durch Korrektur der Verdrahtung zu lösen. Erfolgt die Bewegung der Maschine in die richtige Richtung, die Istposition meldet jedoch eine entgegengesetzte Richtung ist fEnc_IncWeighting im Vorzeichen umzukehren. Bei absoluten Wegsensoren ist dann die fEnc_ZeroShift zu überprüfen.

IBN #6: Vorsteuerung

Parameter: fRefVelo, fAreaRatio, fValve_OverlapComp, fValve_BendPointVelo, fValve_BendPointOutput

Um die Vorsteuerung zu Überprüfen muss die Achse mit wechselnder Richtung und verschiedenen Geschwindigkeiten über eine ausreichende Strecke bewegt werden. Sie muss dabei die konstante Bewegungsphase erreichen. Ist dies nicht möglich müssen Beschleunigung, Verzögerung und Schleichphase vorsichtig verkürzt werden.

  • Zeigt die Achse ein unsymetrisches Verhalten kann dies mehrere Ursachen haben:
    • Bei einem Differentialzylinder kann die fAreaRatio nicht korrekt eingestellt sein.
    • Bei einem richtungsabhängigen Kraftbedarf ist der Druckabfall am Ventil und somit der sich tatsächlich einstellende Volumenstrom richtungsabhängig. Dies kann durch die fAreaRatio mit kompensiert werden.
    • Bei Achsen ohne Totbereich um den Nullpunkt kann eine nicht korrekt eingestellte fZeroCompensation bei kleinen Geschwindigkeiten ein solches Verhalten erzeugen.
  • Zeigt die Achse bei Vollaussteuerung oder in der Nähe eine Istgeschwindigkeit, die erheblich von der Sollgeschwindigkeit abweicht, ist die fRefVelo nicht korrekt. Bei einer Abweichung des Betrags nach unten ist fRefVelo zu hoch eingestellt und umgekehrt.
  • Bei einem Ventil mit Kennlinienknick ist eine Testfahrt mit etwa 75% der fValve_BendPointVelo auszuführen und die Istgeschwindigkeit mit der Sollgeschwindigkeit zu vergleichen. Bei einer Abweichung des Betrags nach unten ist fValve_BendPointVelo zu hoch eingestellt und umgekehrt. Diese und die nachstehende Überprüfung sind abwechselnd zu wiederholen.
  • Bei einem Ventil mit Kennlinienknick ist eine Testfahrt mit etwa 150% der fValve_BendPointVelo auszuführen und die Istgeschwindigkeit mit der Sollgeschwindigkeit zu vergleichen. Bei einer Abweichung des Betrags nach unten ist fValve_BendPointOutput zu niedrig eingestellt und umgekehrt. Diese und die vorstehende Überprüfung sind abwechselnd zu wiederholen.

    Hinweis: Dieser Parameter sollte nur um sehr kleine Beträge geändert werden, da jede Änderung eine erhebliche Wirkung zeigt.

  • Bei einem Ventil mit positiver Überdeckung ist nach der Überprüfung von fRefVelo eine Testfahrt mit etwa 10% der fRefVelo auszuführen und die Istgeschwindigkeit mit der Sollgeschwindigkeit zu vergleichen. Bei einer Abweichung des Betrags nach unten ist fValve_OverlapComp zu niedrig eingestellt und umgekehrt.

    Hinweis: Dieser Parameter sollte nur um sehr kleine Beträge geändert werden, da jede Änderung eine erhebliche Wirkung zeigt.

    Hinweis: Wenn der Parameter erheblich zu klein eingestellt ist erhöht sich die minimal fahrbare Geschwindigkeit. Dies kann dazu führen, dass die Achse eine langsame Bewegung nicht mehr ausführen kann. Reagiert die selbe Achse auf Fahrbefehle mit mittlerer Geschwindigkeit zumindest in etwa richtig, ist fValve_OverlapComp zu erhöhen.

IBN #7: Zielanfahrt

Parameter: fCreepSpeed, fCreepDistance, fBrakeDistance, fBrakeDeadTime

Bei der Zielanfahrt wird der Stellwert der Achse so auf fCreepSpeed herabgeführt, dass dieser Wert in einer durch fCreepDistance festgelegten Entfernung vom Ziel erreicht wird. Dieser Stellwert wird aufrechterhalten, bis die Entfernung zum Ziel bis auf fBrakeDistance+fBrakeDeadTime*Istgeschwindigkeit abgearbeitet ist. Dann wechselt die Achse in das Ruheverhalten.

  • Die fCreepSpeed ist so zu wählen, dass die Achse diese Geschwindigkeit unter jeder zu erwartenden Lastsituation ausreichend sauber fahren kann.

    Hinweis: Ein höherer Wert macht den Übergangs in das Ziel möglicherweise ungenauer.

    Hinweis: Ein zu niedriger Wert erhöht den Zeitbedarf und das Risiko, dass die Achse vor dem Ziel stehen bleibt.

  • Die fCreepDistance ist so einzustellen, dass die Achse unter jeder zu erwartenden Lastsituation in etwa auf eine konstante Geschwindigkeit eingeschwungen ist, bevor sie die Nähe des Ziels erreicht.

    Hinweis: Ein zu hoher Wert erhöht den Zeitbedarf.

    Hinweis: Ein zu niedriger Wert führt dazu, dass der Übergang in den Ruhezustand und somit die Genauigkeit im Ziel stark von der Vorgeschichte (Strecke, Fahrgeschwindigkeit, Lastsituation) abhängig werden.

  • Die Parameter fBrakeDistance und fBrakeDeadTime legen den Übergang in das Ruheverhalten fest.

IBN #8: Ruheverhalten

Parameter: fLagAmp, fZeroCompensation, fTargetClamping, fReposDistance.

  • Bei Achsen ohne Totbereich um den Nullpunkt kann eine Lageregelung im Ruhezustand aktiviert werden, indem in fLagAmp ein Wert größer als 0.0 eingestellt wird.

    Hinweis: Die Ausgabe des Lagereglers ist auf fCreepSpeed begrenzt. Wenn die Achse in einer durch fBrakeDistance und/oder fBrakeDeadTime festgelegten Entfernung zum Ziel in den Ruhezustand wechselt wird auch dann kein abrupter Stellwertanstieg erzeugt, wenn der Lageregler eigentlich einen höheren Stellwert ausgeben würde.

  • Um eine Offsetspannung oder eine Toleranz zum Beispiel der neutralen Position des Ventils auszugleichen kann fZeroCompensation auf einen entsprechenden Wert eingestellt werden.

    Hinweis: Wenn bei Achsen ohne Totbereich um den Nullpunkt und aktivierter Lageregelung im Ruhezustand der verbleibende Positionsfehler unabhängig von der Bewegungsrichtung immer das gleiche Vorzeichen aufweist liegt dies an einer einseitig wirkenden Beeinflussung. Dabei kann es sich neben den bereits genannten Ursachen auch um die Gravitation handeln. Eine Kompensation sollte den Restfehler deutlich verringern können.

    Hinweis: Wenn eine Achsen mit Totbereich um den Nullpunkt in der Scopeaufzeichnung deutlich erkennbar unterschiedliche Stellwerte zum Auslösen einer tatsächlichen Bewegung benötigt, obwohl die fAreaRatio korrekt eingestellt ist kann dies an einem Offset liegen. Dies kann auch dazu führen, dass die kleinste stabil fahrbare Geschwindigkeit richtungsabhängig ist. Sollte dieses Verhalten stören, kann es zumindest deutlich reduziert werden.

  • Wenn eine Achse am Ende einer Bewegung mit einer definierten Ausgabe zum Beispiel an einem Anschlag fixiert werden soll ist ein entsprechender Wert in fTargetClamping einzustellen. Dieser Wert wird dann im Ruhezustand mit dem Vorzeichen der letzten aktiven Bewegung bis zu einem Reset oder einem neuen Fahrauftrag ausgegeben.

    Hinweis: Wenn das angefahrene Ziel auf Grund von Befehlsabfolgen oder ähnlichen nachträglichen Eingriffen in die Profilgenerierung zunächst Überlaufen und dann durch eine Bewegungsumkehr erreicht wird gilt das Vorzeichen der letzten zum endgültigen Ziel der Fahrt führenden Bewegung.

  • Wenn eine Achsen mit Totbereich um den Nullpunkt im Ruhezustand von ihrer Zielposition wegdriften oder verdrängt wird kann sie darauf automatisch mit einem erneuten Anfahren der Position reagieren. Wenn dies gewünscht ist muss in fReposDistance die Toleranzgrenze eingestellt werden.

    Hinweis: Dies kann bei einigen Profiltypen dazu führen, dass die Achse sporadisch einen Fahrbefehl ablehnt, weil sie bereits aktiv ist.

IBN #9: Monitorfunktionen

Parameter: fMonPositionRange, fMonTargetRange, fMonTargetFilter.

Diese Parameter bestimmen die Erzeugung von Status-Bits der Achse und damit auch die Fertig-Meldung von diversen Bausteinen der Library. Ein MC_MoveAbsolute_BkPlcMc Baustein wird zum Beispiel erst dann Done melden, wenn alle Monitorbedingungen erfüllt und die entsprechenden Statusbits gesetzt sind.

  • Wenn die Achse sich in einem durch fMonPositionRange um die Zielposition aufgespannten Bereich befindet wird dies in ihrem Status nStateDWord mit der Maske dwTcHydNsDwInTargRng signalisiert.

    Hinweis: Da keinerlei Filterung stattfindet ist es möglich, dass dieses Signal für kurze Zeit oder auch dauerhaft instabil ist.

  • Wenn die Achse sich ohne Unterbrechung seit einer durch fMonTargetFilter in einem durch fMonTargetRange um die Zielposition aufgespannten Bereich befindet wird dies in ihrem Status nStateDWord mit der Maske dwTcHydNsDwInTarget signalisiert.

    Hinweis: Durch die Filterung erscheint dieses Signal verzögert, ist dann jedoch bei sinnvoller Einstellung stabil.

  • Für die Einstellung dieser Parameter kann es keine festen Regeln geben, da sie in Abhängigkeit von der Aufgabenstellung ein unterschiedliches Verhalten erzeugen müssen. Zu beachten ist jedoch, dass die Achsüberwachung das Ende einer Fahrbewegung mitbestimmt. Wenn Einstellungen vorgenommen werden, die nicht erfüllbar sind kann es somit zu einem Steckenbleiben oder verzögertem Abarbeiten von Abläufen kommen.

IBN #10: Referenzfahrt und Nullpunktverschiebung

Parameter: fEnc_ZeroShift, fEnc_RefIndexVelo, bEnc_RefIndexPositive, fEnc_RefSyncVelo

Bei absoluten Wegsensoren (SSI-Interface, Analog-Sensoren mit 0-10V oder 0/4-20mA) ist keine Referenzfahrt erforderlich. Die korrekte Lage des Istwertsystems innerhalb der Maschine wird durch eine Nullpunktverschiebung im Parameter fEnc_ZeroShift erreicht. Um den hier eingetragenen Wert wird die Roh-Istposition durch Addition verschoben. Soll das Istwertsystem der Achse innerhalb der Maschine verschoben werden, ist die Nullpunktverschiebung um den gewünschten Betrag und in der gewünschten Richtung zu ändern.

Um bei inkrementellen Wegsensoren die Istwerterfassung den Bezug zur Maschine herzustellen ist eine Referenzfahrt durchzuführen. Diese Operation benutzt in Abhängigkeit vom Parameter nEnc_HomingType einen oder mehrere Parameter:

  • fEnc_RefIndexVelo, bEnc_RefIndexPositive: Diese Parameter legen Richtung und Geschwindigkeit der ersten Bewegung der Referenzfahrt fest. Dabei ist die Geschwindigkeitsangabe als Kofaktor zum Parameter fMaxVelo zu verstehen. Soll die Bewegung mit der Hälfte von fMaxVelo durchgeführt werden ist also der Wert 0.5 einzustellen. Wird bEnc_RefIndexPositive auf 1 = TRUE gestellt, erfolgt die Bewegung in Richtung steigender Positionswerte. Diese erste Bewegung wird fortgesetzt, bis je nach nEnc_HomingType ein Referenznocken oder ein Bewegungsstillstand erkannt wird.

    Hinweis: Wenn in nEnc_HomingType eine Referenziermethode vorgegeben ist, bei der ein Nocken angefahren wird darf die Geschwindigkeit in Zusammenwirkung mit der wirksam werdenden Verzögerung nicht zum Überfahren des Nockens führen.

  • fEnc_RefSyncVelo, bEnc_RefSyncPositive: Diese Parameter legen Richtung und Geschwindigkeit der zweiten Bewegung der Referenzfahrt fest. Dabei ist die Geschwindigkeitsangabe als Kofaktor zum Parameter fMaxVelo zu verstehen. Soll die Bewegung mit der Hälfte von fMaxVelo durchgeführt werden ist also der Wert 0.5 einzustellen. Wird bEnc_RefSyncPositive auf 1 = TRUE gestellt, erfolgt die Bewegung in Richtung steigender Positionswerte. Diese zweite Bewegung wird fortgesetzt, bis je nach nEnc_HomingType das Ende des Referenznocken oder darüber hinaus ein Latchereignis erkannt wird.

    Hinweis: Diese zweite Bewegung wird nur bei einigen der möglichen Einstellungen in nEnc_HomingType durchgeführt.

  • fEnc_DefaultHomePosition: Dieser Parameter ist der vorgesehene Wert für den Eingang Position von Bausteinen des Typs MC_Home_BkPlcMc. Auf diese Wert wird die Istposition gesetzt, wenn die Referenzfahrt erfolgreich abgeschlossen werden kann. Dadurch wird das Istwertsystem innerhalb der Maschine orientiert. Dieser Parameter hat somit bei inkrementellen Wegsensoren die Rolle, welche bei absoluten Wegsensoren von fEnc_ZeroShift übernommen wird.

    Hinweis: Die Achse befindet sich am Ende der Referenzfahrt nicht unbedingt an der angegebenen Position. Bei einigen Referenziermethoden wird der Istwert in Bewegung gesetzt und die Achse anschließend gestoppt.

IBN #11: Performance-Optimierung

Parameter: fAcc, fDec, fMaxAcc, fMaxDec, fStartRamp, fStopRamp, fMaxVelo, fCreepSpeed, fCreepDistance, fMonTargetFilter, fMonTargetRange, fMonPositionRange.

Die für eine Bewegung benötigte Zeit kann durch eine Reihe von Maßnamen verringert werden:

  • Die Beschleunigungsphase kann verkürzt werden, indem fMaxAcc erhöht wird. Dadurch wird die Bewegungsführung härter und die Achse wird durch größere Kräfte und stärkere Kraftänderungen belastet.

    Hinweis: Eine Erhöhung von fMaxAcc wird nur bis zum Wert in fAcc wirksam.

    Hinweis: Bei einigen Profiltypen ist die Beschleunigung durch fStartRamp begrenzt. Dieser Parameter begrenzt die Zeit für die Beschleunigung auf fRefVelo nach unten und limitiert somit die Beschleunigung.

  • Die Verzögerungsphase kann verkürzt werden, indem fMaxDec erhöht wird. Dadurch wird die Zielanfahrt härter und die Achse wird durch größere Kräfte und stärkere Kraftänderungen belastet. Außerdem wird durch eine höhere Verzögerung das Verhalten der Achse beim Übergang in die Schleichphase stärker streuen. Eine übermäßige Erhöhung muss möglicherweise durch eine verlängerte Schleichphase kompensiert werden, um die Genauigkeit im Ziel aufrecht zu erhalten.

    Hinweis: Eine Erhöhung von fMaxDec wird nur bis zum Wert in fDec wirksam.

    Hinweis: Bei einigen Profiltypen ist die Verzögerung durch fStopRamp begrenzt. Dieser Parameter begrenzt die Zeit für die Beschleunigung auf fRefVelo nach unten und limitiert somit die Verzögerung.

  • Wenn keine zusätzlichen Reglerbausteine integriert werden kann fMaxVelo bis auf fRefVelo erhöht werden, weil die Arbeitsweise der Stellwertgeneratoren eine Regelreserve während der aktiven Fahrbewegung überflüssig macht.
  • Eine zu geringe Einstellung in fCreepSpeed oder eine zu hohe in fCreepDistance erhöhen zwar die Genauigkeit im Ziel, aber auch den Zeitbedarf. Hier sollte ein sinnvoller Kompromiss gefunden werden.
  • Eine zu hohe Einstellung in fMonTargetFilter erhöht den Zeitbedarf ohne eine weitere Erhöhung der Sicherheit zu erreichen. Für einen sinnvollen Wert sollte die Eigenfrequenz der Achse ermittelt werden. Dies kann durch Berechnung oder durch Beobachtung geschehen. So kann die Istgeschwindigkeit im Scope View analysiert werden, um die typische Periodendauer der Schwingung beim Abbremsen auf fCreepSpeed zu ermitteln. Als fMonTargetFilter sollte dann etwa das Doppelte dieser Zeit ausreichen.
  • Für fMonTargetRange sollte etwa die Hälfte des tatsächlich tolerierbaren Fehlers im Ziel eingestellt werden. Wird ein geringerer Wert eingestellt erhöht dies nur den Zeitbedarf, ohne eine Erhöhung der Sicherheit zu bewirken.
  • Der Wert in fMonPositionRange dient häufig für die Realisierung von voreilenden Starts von nachfolgenden Bewegungen. Das Bewegungsspiel eines Zweiachs-Portals (aufwärts, quer, abwärts) kann dadurch beschleunigt werden, dass jede Achse bereits in einem sorgfältig bemessenen Abstand zum Ziel dwTcHydNsDwInTargRng meldet. Darauf hin wird dann bereits vorzeitig die nachfolgende Bewegung ausgelöst.
  • Hinweis: Wird dwTcHydNsDwInTargRng nicht für einen solchen oder eine ähnlichen Zweck verwendet sollte in fMonPositionRange der gleiche oder ein höherer Wert wie in fMonTargetRange eingestellt werden.


TcPlcHydraulics: Knowledge Base: FAQs

Knowledge Base der SPS Bibliothek TcHydlib: FAQs

Hier finden Sie eine Reihe von Antworten auf immer wieder auftauchende Fragen.

Name | Beschreibung
FAQ #1 | Wie integriere ich eine oder mehrere Achsen in eine PLC-Applikation?
FAQ #2 | Welche Daten müssen in der PLC-Applikation für die Achsen angelegt werden?
FAQ #3 | Wie initialisiere ich die Daten und lade ich die Parameter einer Achsen beim Start der PLC?
FAQ #4 | Wie wird die Istposition der Achsen ermittelt?
FAQ #5 | Wie wird der Stellwert für eine Achse erzeugt?
FAQ #6 | Wie wird der Stellwert einer Achse für die Ausgabe vorbereitet?
FAQ #7 | Wie wird der Stellwert an die Achse ausgegeben?
FAQ #8 | In welcher Reihenfolge sind die Bausteine einer Achse aufzurufen?
FAQ #9 | Wie steuere ich eine Ventilendstufe (Onboard oder extern) an?
FAQ #10 | Wie lege ich einen Meldungspuffer an?
FAQ #11 | Wie breche ich die Überwachung einer Funktion ab?
FAQ #12 | Wie überwache ich die Kommunikation mit einem E/A-Gerät?
FAQ #13 | Wie versehe ich die kundenspezifischen Achsparameter mit selbstgewählten Bezeichnungen?
Setup | Wie wird die Achse in Betrieb genommen und optimiert?

FAQ #1 Wie integriere ich eine oder mehrere Achsen in eine PLC-Applikation?

Die Vorgehensweise ist grundsätzlich anders als bei einer von der NC Task geführten Achse, weil hier alle Aufgaben der NC Task von der PLC mit übernommen werden. Für die meisten Themen stehen jedoch vorgefertigte Bausteine zur Verfügung, so dass sich der zusätzliche Programmieraufwand in Grenzen hält. Im Einzelnen sind die folgenden Punkte zu beachten:

  • Daten der Achse in der PLC-Applikation (FAQ #2)
  • Initialisierung und Laden der Achs-Parameter beim Start der PLC-Applikation (FAQ #3)
  • Istwerterfassung (FAQ #4)
  • Stellwert-Generierung (FAQ #5)
  • Aufbereitung des Stellwerts für die Ausgabe (FAQ #6)
  • Inbetriebnahme der Achse (Setup)

  • Inbetriebnahme einer Istdruckermittlung mit Bausteinen vom Typ MC_AxRtReadPressureSingle_BkPlcMc oder MC_AxRtReadPressureDiff_BkPlcMc (siehe Dokumentation der Bausteine).

  • Organisation des Bewegungsablaufs (FAQ #7)

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.

FAQ #2 Welche Daten müssen in der PLC-Applikation für die Achse angelegt werden?

Pro Achse muss je eine Variable der Typen ST_TcHydAxParam, ST_TcHydAxRtData und Axis_Ref_BkPlcMc angelegt werden. Je nach Bedarf sind weitere Variablen der Typen ST_TcPlcMcEncoderIn, ST_TcPlcMcEncoderOut, ST_TcPlcMcDriveIn und ST_TcPlcMcDriveOut anzulegen. Für mehrere Achsen ist die Verwendung von Variablenfeldern unbedingt zu empfehlen. Je ein Beispiel für eine und fünf Achsen finden Sie in den Programm-Beispielen TcPlcMcEx_1.pro und TcPlcMcEx_2.pro.

Die in diesen Beispielen im Baustein FB_AxInit() gezeigte Vorgehensweise sorgt für eine korrekte Initialisierung beim Start der PLC und veranlasst das Laden der Parameter der Achsen aus Dateien. Unter FAQ #3 wird eine geeignete Vorgehensweise beschrieben, die jedoch nur als erprobtes Beispiel verstanden werden sollte.

FAQ #3 Wie initialisiere ich die Daten einer Achse?

Beim Start der PLC Applikation sind eine Reihe von Initialisierungen vorzunehmen. Dies geschieht sinnvollerweise in drei Stufen:

  1. Es sind eine Reihe von Pointern korrekt einzustellen, um die Bestandteile der Achsen zu verbinden. Diese Aufgabe sollte mit einem Baustein vom Typ MC_AxUtiCheckTypedPointers() gelöst werden, der eine Verschiebung im Speicher bei einem späteren Online Change erkennt und dann für eine Reinitialisierung der Pointer und ein Nachladen von Parametern sorgt.
  2. Die Parameter der Achsen müssen eingestellt werden. Eine hart codierte Zuweisung der Werte durch die Applikation ist zwar technisch machbar, aber in der Regel nicht sinnvoll. Besser ist die Speicherung der Einstellungen in Dateien, die beim Systemstart unter Kontrolle der Applikation geladen werden. Hinweise zur Inbetriebnahme finden Sie unter Setup.
  3. Die Zykluszeit der Task ist in die Parameter der Achse zu übernehmen. Dies sollte am Ende der Parameterladeprozedur erfolgen um diesen für die Funktion vieler Bausteine wichtigen Wert korrekt einzustellen. Etwa in Zeile 38 des FB_AxInit() Bausteins finden Sie die Zeile <stAxParam[].fCycletime:=DINT_TO_LREAL(SystemTaskInfoArr[1].cycleTime)/10000000.0;> Dabei muss der Index des SystemTaskInfoArr[] Feldes mit dem Task Index Ihres Projektes abgeglichen sein. Laufen die Bibliotheksbausteine in der PLC Task 1 mit Portnummer 801, sollte hier also die 1 verwendet werden. Ist es die Task 2 mit Portnummer 811 ist die 2 zu verwenden, bei Task 3 mit Portnummer 821 die 3 und bei Task 4 mit Portnummer 831 die 4. Selbstverständlich kann hier auch eine hart kodierte Konstante von z.B. 0.002 für 2 Millisekunden verwendet werden.

Achtung: Wenn in der Applikation ein Baustein vom Typ MC_AxAdsCommServer genutzt wird, muss dieser Baustein in der selben Task aufgerufen werden, die auch die Zuweisung der Pointer vornimmt. Ist dies nicht möglich oder nachteilig muss der Aufruf des Bausteins für die Dauer der Zuweisungen gesperrt werden. Andernfalls kann es zum Absturz der PLC-Applikation durch Auslösung von schweren Laufzeitfehlern (Page Fault Exception) kommen.

Hinweis: Sämtliche hier aufgeführten Aktivitäten sollten durch einen MC_AxUtiStandardInit_BkPlcMc Baustein verwirklicht und koordiniert. Wenn die Variable nInitState im Axis_Ref_BkPlcMc der Achse den Wert 2 oder -2 angenommen hat ist die Initialisierung erfolgreich bzw. mit Fehler beendet. Bei einer erfolgreichen Initialisierung sind MC_AxUtiStandardInit_BkPlcMc.Ready und bParamsEnable in Axis_Ref_BkPlcMc auf TRUE, andernfalls bleibt diese Variable FALSE.

Die hier gezeigte Vorgehensweise ist nicht verbindlich vorgeschrieben, ist jedoch als erprobtes Beispiel zu verstehen.

Hinweis: Die zur Verfügung gestellten Beispielprogramme legen den Namen der Achse und den Namen (inklusive Pfad) der zugehörigen Parameterdatei fest. Diese Festlegungen sind unbedingt an die jeweilige Applikation anzupassen.

FAQ #4: Wie wird die Istposition der Achsen ermittelt?

Als Positionssensor kommen eine Reihe von Signalgebern in Frage, die nach diversen physikalischen Prinzipien eine positionabhängige elektrische Größe erzeugen. Diese Größe bestimmt den Typ der einzusetzenden E/A-Komponente. Die pro Achse anzulegenden Variablen der Typen ST_TcPlcMcEncoderIn und ST_TcPlcMcEncoderOut enthalten Elemente, die mit den Istwert-, Zähl-, Latch-, Control- und Status-Variablen der E/A-Hardware zu verknüpfen sind.

Hier einige Beispiele:

Signal | E/A-Komponenten | Encoder Type | Plc-Variable | E/A-Variable
0V .. 10V | KL3061 KL3062 KL3064 | iTcMc_EncoderKL3042 | StAxEncInput.uiCount | Daten Ein
-10V .. 10V | KL3001 KL3002 | iTcMc_EncoderKL3002 | StAxEncInput.uiCount | Daten Ein
-10V .. 10V | M2510 | iTcMc_EncoderM2510 | StAxEncInput.uiCount | Daten Ein
0mA .. 20mA | KL3011 KL3012 KL3041 KL3042 KL3044 | iTcMc_EncoderKL3042 | StAxEncInput.uiCount | Daten Ein
4mA .. 20mA | KL3021 KL3022 KL3051 KL3052 KL3054 | iTcMc_EncoderKL3042 | StAxEncInput.uiCount | Daten Ein
2 Bit | KL10xx KL11xx KL12xx KL13xx KL14xx KL17xx | iTcMc_EncoderDigIncrement | StAxEncInput.bDigInA StAxEncInput.bDigInB | Eingang
SSI | KL5001 | iTcMc_EncoderKL5001 | StAxEncInput.uiPZDL_RegDaten StAxEncInput.uiPZDH StAxEncInput.usiRegStatus | PZDL_RegDaten PZDH RegStatus
SSI | IP5009 IE5009 | iTcMc_EncoderIx5009 | StAxEncInput.uiPZDL_RegDaten StAxEncInput.uiPZDH StAxEncInput.usiRegStatus | PZDL_RegDaten PZDH RegStatus
A/B-Inkremente, RS422="TTL" | KL5101 | iTcMc_EncoderKL5101 | StAxEncInput.uiCount StAxEncInput.uiLatch StAxEncOutput.usiCtrl StAxEncInput.usiStatus | Counter Latch Ctrl Status
A/B-Inkremente, RS422="TTL" | M3100 M3120 | iTcMc_EncoderM3120 | StAxEncInput.uiCount StAxEncOutput.usiCtrl StAxEncInput.usiStatus | Value_N Ctrl_N State_N
A/B-Inkremente, RS422="HTL" | KL5111 | iTcMc_EncoderKL5111 | StAxEncInput.uiCount StAxEncInput.uiLatch StAxEncOutput.usiCtrl StAxEncInput.usiStatus | Counter Latch/PeriodeL Ctrl Status
Pulse Train | KL2521 | iTcMc_EncoderKL2521 | StAxEncInput.uiCount | Daten Ein
Schrittmotor, direkt (ohne Encoder) | KL2531 | iTcMc_EncoderKL2531 | StAxEncInput.uiCount | Daten Ein
Schrittmotor, direkt (mit Encoder) | KL2541 | iTcMc_EncoderKL2541 | StAxEncInput.uiCount | Daten Ein

Wenn eine der hier genannten Komponenten eingesetzt wird kann in der Regel einer der bereitgestellten Encoder-Bausteine verwendet werden. Diese Bausteine sind im Unterverzeichnis PLCopen_motioncontrol/System/Encoder der Library untergebracht und tragen Namen wie z.B. MC_AxRtEncoderKL5001_BkPlcMc. Besser ist es jedoch, den Encoder-Typ entsprechend der Konstanten in E_TcMcEncoderType vorzugeben und unter nEnc_Type in ST_TcHydAxParam einzustellen und einen Baustein vom Typ MC_AxRtEncoder_BkPlcMc zu verwenden. Dieser ruft dann den typrichtigen Unterbaustein automatisch auf. Der direkte Aufruf dieses hardwareabhängigen Bausteins erzeugt nur einen geringen Laufzeitvorteil, macht aber beim Wechseln der E/A-Komponente eine Softwareanpassung zwingend erforderlich.

Alle Encoder-Bausteine verwenden den Parameter fEnc_IncWeighting als Inkrementbewertung. Bei absoluten Wegsensoren wird zusätzlich fEnc_ZeroShift als Nullpunktverschiebung verwendet. Inkrementelle Sensoren erfordern in der Regel eine Referenzfahrt mit einem MC_Home_BkPlcMc Baustein, in deren Verlauf fEnc_RefShift in ST_TcHydAxRtData ermittelt wird. Dieser Wert übernimmt dann die Funktion der Nullpunktverschiebung. Selbstverständlich kann die Nullpunktverschiebung in Sonderfällen auch mit einem MC_AxRtSetActPos_BkPlcMc Baustein festgelegt werden.

Ist es aus technischen Gründen nicht möglich, die Istposition mit Bausteinen der Library zu ermitteln kann diese Aufgabe auch durch Applikationsbausteine ausgeführt und das Ergebnis in fActPos in ST_TcHydAxRtData eingetragen werden. Um die Durchgängigkeit zu erhalten sollte auch hier wenn möglich auf die Parameter fEnc_IncWeighting und fEnc_ZeroShift bzw. fEnc_RefShift zurückgegriffen werden.

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.

Hinweis: Die Inbetriebnahme einer Istdruckermittlung mit Bausteinen vom Typ MC_AxRtReadPressureSingle_BkPlcMc oder MC_AxRtReadPressureDiff_BkPlcMc ist in der Dokumentation des Bausteins beschrieben.

FAQ #5: Wie wird der Stellwert für eine Achse erzeugt?

Durch die PLC-Applikation muss in jedem Zyklus für jede Achse ein Baustein vom Typ MC_AxRuntime_BkPlcMc aufgerufen werden. Der Parameter nProfileType in ST_TcHydAxParam legt fest, nach welchem Verfahren der Stellwert generiert wird. Dabei je nach Typ und in Abhängigkeit von weiteren Parametern der Achse und von den Daten der Bewegung angepasste Geschwindigkeitsstellwerte errechnet. Diese Stellwerte sind jedoch auf den abstrakten Zahlenbereich ±1.0 normiert und noch nicht für die direkte Ausgabe auf einer E/A-Hardware vorbereitet.

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.

FAQ #6: Wie wird der Stellwert einer Achse für die Ausgabe vorbereitet?

Nach dem Aufruf des MC_AxRuntime_BkPlcMc Bausteins ist für jede Achse ein Baustein vom Typ MC_AxRtFinish_BkPlcMc aufzurufen. Dieser Baustein fasst mehrere Geschwindigkeitskomponenten (Stellwert, Reglerausgabe, Offsetkompensation, Überdeckungskompensation) zusammen und berücksichtigt dabei eventuelle Knickpunkte der Vorsteuercharakteristik.

Für die Ausgabe auf einer E/A-Baugruppe ist in der Regel eine numerische Anpassung erforderlich. Zu diesem Zweck ist für jede Achse ein MC_AxRtDrive_BkPlcMc Baustein aufzurufen. Der Wert in nDrive_Type in ST_TcHydAxParam wählt den zu benutzenden hardwarespezifischen Unterbaustein aus.

Die pro Achse anzulegenden Variablen der Typen ST_TcPlcMcDriveIn und ST_TcPlcMcDriveOut enthalten Elemente, die mit den Sollwert- und Steuer-Variablen der E/A-Hardware zu Verknüpfen sind.

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.

FAQ #7: Wie wird der Stellwert an die Achse ausgegeben?

Als Steller kommen eine Reihe von Geräten und Einrichtungen in Frage, die abhängig von einer elektrischen Größe nach diversen physikalischen Prinzipien eine variable Geschwindigkeit dosieren. Diese Größe bestimmt den Typ der einzusetzenden E/A-Komponente. Die pro Achse anzulegenden Variablen der Typen ST_TcPlcMcDriveIn und ST_TcPlcMcDriveOut enthalten Elemente, die mit den Variablen der E/A-Hardware zu verknüpfen sind.

Hier einige Beispiele:

Signal | E/A-Komponenten | Drive Type | Plc-Variable | E/A-Variable
-10V .. 10V | KL4031 KL4032 KL4034 | iTcMc_DriveKL4032 | StAxDriveOutput.nDacOut | Daten Aus
-10V .. 10V | M2400 | iTcMc_DriveM2400_D1 iTcMc_DriveM2400_D2 iTcMc_DriveM2400_D3 iTcMc_DriveM2400_D4 | StAxDriveOutput.nDacOut | Daten Aus
4 Bit | KL20xx KL21xx KL22xx KL24xx | iTcMc_DriveLowCostStepper | StAxDriveOutput.nDigOutAp StAxDriveOutput.nDigOutAn StAxDriveOutput.nDigOutBp StAxDriveOutput.nDigOutBn | Ausgang
PWM | IP/IE2512 | iTcMc_DriveIx2512_1Coil iTcMc_DriveIx2512_2Coil | StAxDriveOutput.nDacOut | Daten Aus
Pulse Train | KL2521 | iTcMc_DriveKL2521 | StAxDriveOutput.nDacOut | Daten Aus
Schrittmotor, direkt | KL2531 | iTcMc_DriveKL2531 | StAxDriveOutput.nDacOut StAxDriveOutput.bKL2531Ctrl StAxDriveOutput.bKL2531State StAxDriveOutput.bKL2531State2 | Daten Aus Kontrolle Status Status2
Schrittmotor, direkt | KL2531 | iTcMc_DriveKL2531 | StAxDriveOutput.nDacOut StAxDriveOutput.bKL2531Ctrl StAxDriveOutput.bKL2531State StAxDriveOutput.bKL2531State2 | Daten Aus Kontrolle Status Status2
Schrittmotor, direkt | KL2541 | iTcMc_DriveKL2541 | StAxDriveOutput.nDacOut StAxDriveOutput.bKL2531Ctrl StAxDriveOutput.bKL2531Ctrl2 StAxDriveOutput.bKL2531State StAxDriveOutput.bKL2531State2 | Daten Aus Kontrolle Kontrolle2 Status Status2

Wenn eine der hier genannten Komponenten eingesetzt wird kann in der Regel einer der bereitgestellten Drive-Bausteine verwendet werden. Diese Bausteine sind im Unterverzeichnis PLCopen_motioncontrol/System/Drive der Library untergebracht und tragen Namen wie z.B. MC_AxRtDriveKL4032_BkPlcMc. Besser ist es jedoch, den Drive-Typ entsprechend der Konstanten in E_TcMcDriveType vorzugeben und unter nDrive_Type in ST_TcHydAxParam einzustellen und einen Baustein vom Typ MC_AxRtDrive_BkPlcMc zu verwenden. Dieser ruft dann den typrichtigen Unterbaustein automatisch auf. Der direkte Aufruf dieses hardwareabhängigen Bausteins erzeugt nur einen geringen Laufzeitvorteil, macht aber beim Wechseln der E/A-Komponente eine Softwareanpassung zwingend erforderlich.

Hinweis: Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollte zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc verwendet werden.

FAQ #8: In welcher Reihenfolge sind die Bausteine einer Achse aufzurufen?

  1. Obligatorisch: Alle Bausteine, die den Istzustand der Achse feststellen. Dazu gehören Bausteine der Typen MC_AxRtEncoder_BkPlcMc, MC_AxRtReadPressureDiff_BkPlcMc oder MC_AxRtReadPressureSingle_BkPlcMc.
  2. Üblich: Bausteine oder Befehle, die für eine Aktualisierung der Freigabe-Signale der Achse sorgen. Dies ist in der Regel ein Baustein vom Typ MC_Power_BkPlcMc oder je ein Baustein der Typen MC_AxRtSetControllerEnable_BkPlcMc, MC_AxRtSetFeedEnableMinus_BkPlcMc und MC_AxRtSetFeedEnablePlus_BkPlcMc. Bei Achsen mit einem Inkremental-Encoder, der unter Verwendung eines Nocken referenziert wird kommt ein Funktionsaufruf MC_AxRtSetReferencingCamSignal_BkPlcMc dazu.
  3. Optional: Bausteine, die aus einem Istzustand der Achse, einem E/A-Signal oder einem Signal der Applikation eine Entscheidung ableiten und einen Befehl auslösen. Zum Beispiel kann als Reaktion auf das Signal eines Näherungsschalters ein Achsstart ausgelöst werden oder in Abhängigkeit vom Druckanstieg eine Achsbewegung vor dem Erreichen der Zielposition gestoppt werden.
  4. Obligatorisch: Stellwertgeneratoren wie Bausteine des Typs MC_AxRuntime_BkPlcMc.
  5. Optional: Bei Bedarf können an dieser Stelle verschiedene Regler aufgerufen werden. Dabei kann es sich um einen Baustein der Typen MC_AxCtrlVeloMoving, MC_AxCtrlPullbackOnPressure_BkPlcMc oder MC_AxCtrlSlowDownOnPressure_BkPlcMc handeln.
  6. Obligatorisch: Ein Anpassungsbaustein des Typs MC_AxRtFinish_BkPlcMc.
  7. Obligatorisch: Ein Ausgabebaustein des Typs MC_AxRtDrive_BkPlcMc.

An Stelle der Bausteine der Library können auch Applikations-Bausteine treten. Dabei ist die Notwendigkeit jedoch sorgfältig zu überprüfen und eine Kompatibilität zur Library sicher zu stellen. In einigen Anwendungsfällen kann dies notwendig werden, um einen nicht standardisierten Sensor oder Aktor anzupassen oder um ein besonderes Regelungsproblem zu lösen.

FAQ #9: Wie steuere ich eine Ventilendstufe (Onboard oder extern) an?

In der ST_TcPlcMcDriveOut Struktur sind die Signale bPowerOn und bEnable für die Steuerung der Endstufenversorgung und -freigabe vorgesehen. Beide Signale werden durch Bausteine vom Typ MC_Power_BkPlcMc gesetzt, wenn der Eingang Enable gesetzt wird. Gleichzeitig setzen diese Bausteine die Software-Reglerfreigabe in ST_TcHydAxRtData.nDeCtrlDWord. Ist dieser direkte Zusammenhang nicht gewünscht kann auf den MC_Power_BkPlcMc verzichtet werden. Dann sind die Signale in der ST_TcPlcMcDriveOut Struktur direkt von der Applikation zu steuern. Für die Festlegung der Software-Freigaben sind dann MC_AxRtSetControllerEnable_BkPlcMc, MC_AxRtSetFeedEnableMinus_BkPlcMc und MC_AxRtSetFeedEnablePlus_BkPlcMc zu verwenden.

In der ST_TcPlcMcDriveIn Struktur sind die Signale bPowerOk, bEnAck und bReady für die Kontrolle der Endstufenversorgung, die Rückmeldung der Endstufenfreigabe und des Statussignals vorgesehen. Die von verschiedenen Herstellern bereitgestellten Signale unterscheiden sich jedoch sehr stark. Derzeit wird deshalb nur das bPowerOk Signal bei der Festlegung des Status Ausgangs des MC_Power_BkPlcMc Bausteins verwendet.

FAQ #10: Wie lege ich einen Meldungspuffer an?

Eine direkte Ausgabe von Meldungen aus den Bausteinen würde zu nicht kalkulierbaren Laufzeitschwankungen führen. Aus diesem Grund werden die Meldungen in einem Puffer abgelegt und falls dies gewünscht wird nacheinander in die Ereignisanzeige von Windows ausgegeben.

Um einen Meldungspuffer nutzen zu können ist eine Variable des Typs ST_TcPlcMcLogBuffer anzulegen. In diesen Puffer werden die Meldungen aller Achsen aufgenommen. Es ist wichtig, unabhängig von der Anzahl der Achsen nur eine solche Variable im Projekt anzulegen. Die Adresse dieses Puffers ist den Bausteinen MC_AxUtiCheckTypedPointers aller Achsen zusammen mit den Adressen der anderen individuellen Achsbestandteilen zu übergeben. Diese Bausteine werden in der Regel im Initialisierungsteil des Projekts aufgerufen. In der Struktur Axis_Ref_BkPlcMc wird diese Adresse im Element pStAxLogBuffer abgelegt und durch den Baustein überwacht.

In nLogLevel in Axis_Ref_BkPlcMc wird festgelegt, bis zu welcher Bedeutsamkeit anfallende Meldungen in den Puffer aufgenommen werden. Die dabei zu verwendenden Werte sind in den Globalen Variablen der Bibliothek definiert. Es ist zu beachten, dass diese Einstellung pro Achse zu erfolgen hat.

Die Bausteine der Bibliothek erkennen die oben genannten Vorbereitungen und werden die Ausgabe von Meldungen aufnehmen. Allerdings würde der Puffer bei aktivierter Meldungsausgabe nach mehr oder weniger kurzer Zeit vollständig gefüllt sein und keine weiteren Meldungen aufnehmen. Um dies zu vermeiden sind zwei Wege nutzbar.

FAQ #10.1: Weitergabe der Meldungen an die Ereignisanzeige von Windows

Um die angefallenen Meldungen aus dem LogBuffer der Library in die Ereignisanzeige von Windows zu transportieren ist zyklisch ein Baustein des Typs MC_AxRtLoggerSpool_BkPlcMc aufzurufen. Bei jedem Aufruf wird so eine Meldung aus dem LogBuffer entfernt.

Hinweis: Auch auf Rechnern unter Windows CE kann eine Ereignisanzeige für die von TwinCAT erzeugten Meldungen ergänzt werden. Dazu wird dieser Dienst vom TwinCAT System Service nachgebildet. Allerdings wird in der Regel hier nur eine FlashDisk zur Verfügung stehen. Um den hier relativ kleinen Meldungsvorrat der Ereignisanzeige nicht zu überlasten sollten nur Fehler aufgezeichnet werden.

FAQ #10.2: Löschen der jeweils ältesten Meldungen

Um einen Minimalwert an aufnehmbaren Meldungen sicher zu stellen kann zyklisch ein Baustein des Typs MC_AxRtLoggerDespool_BkPlcMc aufgerufen werden. Dieser Baustein entfernt pro Aufruf die jeweils älteste Meldung im LogBuffer, bis eine übergebene Anzahl von freien Meldungen zur Verfügung steht. Die entfernten Meldungen gehen dabei verloren.

FAQ #10.3: Erzeugen von Loggereinträgen durch die Applikation

t.b.d.

FAQ #11: Wie breche ich die Überwachung einer Funktion ab?

Einige Bausteine der Bibliothek starten eine Aktivität, für deren Abarbeitung ihr zyklischer Aufruf jedoch nicht mehr zwingend erforderlich ist. Allerdings sind die Bausteine entsprechend den Regeln der PLCopen Motion Control Richtlinien so ausgeführt, dass sie die Aktivität vollständig überwachen und an ihren Ausgängen darstellen. Erkennbar ist dies durch den Ausgang Busy, den die meisten Bausteine bereitstellen.

Den zyklischen Aufruf eines in diesem Überwachungszustand befindlichen Bausteins zu unterlassen wird zumeist erhebliche Probleme erzeugen. Der nächste Funktionsstart mit dem betreffenden Baustein wird Probleme bei der Auswertung der Flanken an seinen Eingängen haben oder er wird feststellen, dass die Achse inzwischen eine andere Funktion ausgeführt hat und ein nicht vorhandenes Problem (CommandAborted) signalisieren.

Soll die Überwachung durch einen Baustein abgebrochen werden ist wie folgt vor zu gehen:

  • Aufruf des die Aktivität startenden Bausteins mit allen nötigen Parametern und sonstigen Informationen. Die aktive Flanke des auslösenden Eingangs sollte jetzt anstehen.
  • Auswertung der Ausgänge des Bausteins um festzustellen, ob der Baustein den Start akzeptiert hat und nun die Überwachung aktiv ist.
    • Beim Vorliegen eines Fehler:
      • Aufruf des Bausteins mit einem FALSE am auslösenden Eingang.
      • Einleiten einer geeigneten Reaktion.
    • Beim erfolgreichen Start der Funktion:
      • Aufruf eines MC_AxUtiCancelMonitoring_BkPlcMc Bausteins mit Execute:=TRUE.
      • Aufruf eines MC_AxUtiCancelMonitoring_BkPlcMc Bausteins mit Execute:=FALSE.
      • Erster Aufruf des Bausteins mit einem FALSE am auslösenden Eingang. Jetzt wird der Baustein CommandAborted signalisieren.
      • Zweiter Aufruf des Bausteins mit einem FALSE am auslösenden Eingang. Jetzt wird der Baustein in den Ruhezustand zurückkehren und alle Ausgänge löschen.

Die beschriebene Prozedur täuscht den Aufruf einer anderen die Kontrolle übernehmenden Funktion vor und führt den Signalaustausch des Bausteins zum Abschluß.

Derzeit ist der Abbruch der Überwachung nur bei Bausteinen der Typen MC_MoveAbsolute_BkPlcMc und MC_MoveVelocity_BkPlcMc zulässig.

FAQ #12: Wie überwache ich die Kommunikation mit einem E/A-Gerät?

Sowohl ST_TcPlcMcDriveIn als auch ST_TcPlcMcAx2000In Variablen stellen ein Element mit Namen uiBoxState bereit. Wenn die eingesetzten Buskoppler bzw. die Interface-Karten der Leistungsteile eine entsprechende Variable anbieten und beim eingesetzten Feldbus die Variable bei ungestörter Kommunikation den Wert 0 annimmt sollte eine Verknüpfung hergestellt werden. Diese Möglichkeit besteht z.B. beim Beckhoff LightBus und bei Realtime Ethernet und EtherCAT.

Wird für die Achse ein MC_Power_BkPlcMc Baustein verwendet überwacht dieser den uiBoxState und meldet Störungen der Kommunikation. In einem solchen Fall wird die Achse in einen Störzustand versetzt.

FAQ #13: Wie versehe ich die kundenspezifischen Achsparameter mit selbstgewählten Bezeichnungen?

Die Axis_Ref_BkPlcMc Struktur unterstützt mit dem pAuxLabels Pointer die Verwendung eines Array von Texten, die vom PlcMcManager mit angezeigt werden. Diese Texte können durch den MC_AxUtiStandardInit_BkPlcMc Baustein beim Start der Applikation aus einer Datei geladen werden. Dazu muss diesem Baustein ein die Adresse einer ST_TcMcAuxDataLabels Variablen übergeben und eine geeignete Datei bereit gestellt werden.

Selbstverständlich ist es auch möglich, die Elemente der ST_TcMcAuxDataLabels Variablen durch direktes Zuweisen aus der Applikation zu definieren. In diesem Fall wird die Datei nicht benötigt.


TcPlcHydraulics: Knowledge Base: Global Constants

Knowledge Base der SPS Bibliothek TcPlcHydraulics: Global Constants

Bit-Masken für Positionsnocken

Diese Masken sind von der Applikation für die Bereitstellung von digitalen Wegnocken für bActPosCams in ST_TcHydAxRtData zu verwenden.

Konstante | Beschreibung
bTcHydActPosCamPos | Zusammenfassung von bTcHydActPosCamHigh und bTcHydActPosCamUp.
bTcHydActPosCamHigh | Achse hat obere Zielposition erreicht.
bTcHydActPosCamUp | Achse befindet sich in der Nähe der oberen Zielposition.
bTcHydActPosCamDown | Achse befindet sich in der Nähe der unteren Zielposition.
bTcHydActPosCamLow | Achse hat untere Zielposition erreicht.
bTcHydActPosCamNeg | Zusammenfassung von bTcHydActPosCamLowund bTcHydActPosCamDown.

Bit-Masken für Achsstatusinformationen

Diese Masken sind von der Applikation für die Abfrage von Status-Signalen in nStateDWord in ST_TcHydAxRtData zu verwenden.

Konstante | Beschreibung
dwTcHydNsDwFunctional | Achse ist betriebsbereit.
dwTcHydNsDwReferenced | Achse ist referenziert.
dwTcHydNsDwSteady | Achse ist nicht aktiv.
dwTcHydNsDwInTargRng | Die Achse befindet sich innerhalb einer von fMonPositionRange in ST_TcHydAxParam vorgegebenen Entfernung von der Zielposition.
dwTcHydNsDwInTarget | Die Achse befindet sich seit einer von fMonTargetFilter vorgegebenen Zeit ununterbrochen innerhalb einer von fMonTargetRange in ST_TcHydAxParam vorgegebenen Entfernung von der Zielposition.
dwTcHydNsDwStopped | Die letzte Bewegung der Achse wurde gestoppt, ohne die vorgegebene Zielposition zu erreichen.
dwTcHydNsDwBusy | Achse ist aktiv.
dwTcHydNsDwMoveUp | Achse bewegt sich in Richtung größerer Positionen.
dwTcHydNsDwMoveDown | Achse bewegt sich in Richtung kleinerer Positionen.
dwTcHydNsDwConstVelo | Achse bewegt sich mit konstanter Geschwindigkeit.
dwTcHydNsDwErrState | Achse im Störzustand.

Bit-Masken für Achsfreigabeinformationen

Diese Masken sind von der Applikation für die Bereitstellung von Freigabe-Signalen in nDeCtrlDWord in ST_TcHydAxRtData zu verwenden.

Konstante | Beschreibung
dwTcHydDcDwCtrlEnable | Reglerfreigabe. Diese Freigabe ist Voraussetzung für die Ausgabe von Stellwert- und Regler-Ausgaben.
dwTcHydDcDwFdPosEna | Vorschubfreigabe in positiver Richtung. Diese Freigabe ist Voraussetzung für eine Ausgabe von Stellwert- und Regler-Ausgaben in Richtung steigender Positionswerte.
dwTcHydDcDwCtrlPosEna | Zusammenfassung von dwTcHydDcDwCtrlEnable und dwTcHydDcDwFdPosEna.
dwTcHydDcDwFdNegEna | Vorschubfreigabe in negativer Richtung. Diese Freigabe ist Voraussetzung für eine Ausgabe von Stellwert- und Regler-Ausgaben in Richtung sinkender Positionswerte.
dwTcHydDcDwCtrlNegEna | Zusammenfassung von dwTcHydDcDwCtrlEnable und dwTcHydDcDwFdNegEna.
dwTcHydDcDwRefIndex | Referenziernocken.

Error-Codes

Diese Konstanten werden für ErrorID-Ausgänge von Bausteinen und nErrorCode in ST_TcHydAxRtData zu verwenden.

Konstante | Hexadezimal | Dezimal | Beschreibung
dwTcHydAdsErrNoError | 0 | 0 | Kein Fehler.
dwTcHydAdsErrInvalidIdxGroup | 16#702 | 1794 | Unzulässiger IndexGroup.
dwTcHydAdsErrInvalidIdxOffset | 16#703 | 1795 | Unzulässiger IndexOffset.
dwTcHydAdsErrRdWrNotPermitted | 16#704 | 1796 | Zugriff (Schreiben, Lesen) nicht zulässig.
dwTcHydAdsErrInvalidSize | 16#705 | 1797 | Nicht zulässige Größe (Anzahl Bytes).
dwTcHydAdsErrIllegalValue | 16#706 | 1798 | Nicht zulässiger Wert.
dwTcHydAdsErrNotReady | 16#707 | 1799 | Nicht betriebsbereit.
dwTcHydAdsErrBusy | 16#708 | 1800 | Bereits aktiv.
dwTcHydAdsErrTimeout | 16#745 | 1861 | Zeitüberschreitung.
dwTcHydErrCdNotCompatible | 16#4040 | 16448 | Achse ist zur geforderten Funktion nicht kompatibel.
dwTcHydErrCdIllegalOutputNumber | 16#4104 | 16644 | Ausgangsnummer ausserhalb des zulässigen Bereichs.
dwTcHydErrCdNotSupport | 16#4107 | 16647 | Funktion oder Kommando wird nicht unterstützt.
dwTcHydErrCdCycleTime | 16#4205 | 16901 | Zykluszeit (fCycletime in ST_TcHydAxParam) nicht zulässig.
dwTcHydErrCdMissingEnc | 16#4210 | 16912 | Es besteht keine Verbindung zu einem Encoder-Interface (pStAxEncInput und/oder pStAxEncOutput in Axis_Ref_BkPlcMc).
dwTcHydErrCdMissingDrive | 16#4212 | 16914 | Es besteht keine Verbindung zu einem Drive-Interface (pStAxDriveOutput und/oder pStAxDriveInput bzw. pStAxAx2000Out und/oder pStAxAx2000In in Axis_Ref_BkPlcMc).
dwTcHydErrCdIllegalGearFactor | 16#421B | 16923 | Die Parameter einer Getriebekopplung sind nicht zulässig.
dwTcHydErrCdSoftEnd | 16#4222 | 16930 | Die Zielposition liegt jenseits eines aktiven Software-Endschalters und ist somit nicht zulässig.
dwTcHydErrCdLowDist | 16#4228 | 16936 | Die Fahrstrecke ist unzulässig klein.
dwTcHydErrCdIllegalStartType | 16#4239 | 16953 | Unzulässiger Start-Typ.
dwTcHydErrCdAcc | 16#4309 | 17161 | Die Beschleunigung ist nicht zulässig.
dwTcHydErrCdDec | 16#430A | 17162 | Die Verzögerung ist nicht zulässig.
dwTcHydErrCdJerk | 16#430B | 17163 | Die Ruckbegrenzung ist nicht zulässig.
dwTcHydErrCdPtrPlcMc | 16#4345 | 17221 | Es besteht keine Verbindung zu einem der benötigten Achs-Interfaces (pStAxParams, pStAxRtData in Axis_Ref_BkPlcMc).
dwTcHydErrCdPtrMcPlc | 16#4346 | 17222 | Es besteht keine Verbindung zu einem der benötigten Achs-Interfaces (pStAxParams, pStAxRtData in Axis_Ref_BkPlcMc).
dwTcHydErrCdCtrlEna | 16#4356 | 17238 | Bewegung ohne Reglerfreigabe unzulässig.
dwTcHydErrCdNegFdEna | 16#4357 | 17239 | Bewegung in Richtung sinkender Positionen ohne Vorschubfreigabe in negativer Richtung unzulässig.
dwTcHydErrCdPosFdEna | 16#4358 | 17240 | Bewegung in Richtung steigender Positionen ohne Vorschubfreigabe in positiver Richtung unzulässig.
dwTcHydErrCdSetVelo | 16#4359 | 17241 | Die geforderte Geschwindigkeit ist nicht zulässig.
dwTcHydErrCdNotMoving | 16#435D | 17245 | Die Achse bewegt sich nicht oder nicht in die richtige Richtung.
dwTcHydErrCdConsequential | 16#43A0 | 17312 | Folgefehler: Die Achse ist durch ein Problem bei einer anderen Achse ebenfalls in den Störzustand versetzt worden.
dwTcHydErrCdEncType | 16#4401 | 17409 | Der Parametertyp ist ungültig.
dwTcHydErrCdEncScaling | 16#4406 | 17414 | Die Inkrementskalierung ist unzulässig.
dwTcHydErrCdEncSyncDist | 16#4414 | 17428 | Der Abstand zwischen Latch_Enable und Sync-Puls ist zu klein.
dwTcHydErrCdEncSetActPos | 16#4422 | 17442 | Beim Istwertsetzen ist ein Problem aufgetreten.
dwTcHydErrCdPtrPlcEncIn | 16#4442 | 17474 | Die Achse besitzt keinen Zeiger auf ein Encodereingangsinterface
dwTcHydErrCdPtrPlcEncOut | 16#4443 | 17475 | Die Achse besitzt keinen Zeiger auf ein Encoderausgangsinterface
dwTcHydErrCdSsi | 16#4470 | 17520 | Beim Betrieb eines SSI-Encoders wurde ein Fehler erkannt.
dwTcHydErrCdPosLag | 16#4550 | 17744 | Der Schleppabstand überschreitet eine aktive Grenze.
dwTcHydErrCdDriveType | 16#4601 | 17921 | Der in nDrive_Type eingestellte Wert ist nicht zulässig.
dwTcHydErrCdRefVelo | 16#4605 | 17925 | Bezugsgeschwindigkeit (fRefVelo in ST_TcHydAxParam) nicht zulässig.
dwTcHydErrCdStepperStalled | 16#4636 | 17974 | Eine Stall-Situation wurde erkannt.
dwTcHydErrCdPtrPlcDriveIn | 16#4642 | 17986 | Die Achse besitzt keinen Zeiger auf ein Antriebseingangsinterface
dwTcHydErrCdPtrPlcDriveOut | 16#4643 | 17987 | Die Achse besitzt keinen Zeiger auf ein Antriebsausgangsinterface
dwTcHydErrCdDriveNotReady | 16#4650 | 18000 | Leistungsteil nicht betriebsbereit
dwTcHydErrCdTblEntryCount | 16#4A02 | 18946 | Die Anzahl der Tabelleneinträge (Zeilen) ist nicht zulässig
dwTcHydErrCdTblNoInit | 16#4A10 | 18960 | Die Tabelle ist nicht initialisiert
dwTcHydErrCdTblLineCount | 16#4A15 | 18965 | Die Anzahl der Tabelleneinträge ist zu groß
dwTcHydErrCdNotStartable | 16#4B01 | 19201 | Achse ist in einem Zustand, der einen Start nicht zulässt.
dwTcHydErrCdNotReady | 16#4B09 | 19209 | Achse ist in einem nicht betriebsbereiten Zustand.
dwTcHydErrCdHomingType | 16#4F00 | 20224 | Referenziermethode (nEnc_HomingType in ST_TcHydAxParam) nicht zulässig.
dwTcHydErrCdEncCutOff | 16#4F01 | 20225 | Die Grenzfrequenz des Istwerterfassung wurde überschritten.
dwTcHydErrCdIllegalDistance | 16#4F02 | 20226 | Distanz ist unzulässig: Null oder negativ.
dwTcHydErrEncDisconected | 16#4FF0 | 20464 | Encoderhardware ist abgekoppelt.
dwTcHydErrDriveDisconected | 16#4FF1 | 20465 | Antriebshardware ist abgekoppelt.
dwTcHydErrDistanceInsufficient | 16#4FF2 | 20466 | Fahrweg nicht ausreichend.

Gerätespezifische Error-Codes des Bausteins MC_Power_BkPlcMc

Diese Werte erscheinen am ErrorID Ausgang eines MC_Power_BkPlcMc Bausteins, wenn ein Fehler vom externen Gerät gemeldet wird.

Konstante | Hexadezimal | Dezimal | Beschreibung
dwTcHydErrCdAX2000MainPwrTmOut | 1 | 16#0001 | Nur bei AX2000: Keine Rückmeldung durch das Netzschütz (Zeitüberschreitung beim Warten auf ST_TcPlcMcAx2000In.bPowerOk).
dwTcHydErrCdAX2000MainPwrFault | 2 | 16#0002 | Nur bei AX2000: Fallende Flanke an Rückmeldung des Netzschütz (ST_TcPlcMcAx2000In.bPowerOk).
dwTcHydErrCdAX2000PwrStageTmOut | 3 | 16#0003 | Nur bei AX2000: Keine Rückmeldung durch AX-Endstufe (Zeitüberschreitung beim Warten auf ST_TcPlcMcAx2000In.DriveState[3].6, kein Ready).
dwTcHydErrCdAX2000PwrStageFault | 4 | 16#0004 | Nur bei AX2000: Fallende Flanke von AX-Endstufe (ST_TcPlcMcAx2000In.DriveState[3].6, kein Ready).
dwTcHydErrCdAX2000ReportsError | 5 | 16#0005 | Nur bei AX2000: Fehlermeldung durch AX-Gerät (ST_TcPlcMcAx2000In.DriveState[3].7 oder ST_TcPlcMcAx2000In.DriveError<>0).
dwTcHydErrCdAX2000ErrorI2T | 6 | 16#0006 | Nur bei AX2000: I2T-Fehlermeldung von AX-Endstufe (ST_TcPlcMcAx2000In.DriveState[0].0).
dwTcHydErrCdAX2000ErrorChopper | 7 | 16#0007 | Nur bei AX2000: Bremswiderstand der AX-Endstufe defekt (ST_TcPlcMcAx2000In.DriveState[0].1).
dwTcHydErrCdAX2000ErrorWatchDog | 8 | 16#0008 | Nur bei AX2000: Watchdog (Timeout bei Kommunikation) der AX-Endstufe hat angesprochen (ST_TcPlcMcAx2000In.DriveState[0].3).
dwTcHydErrCdAX2000ErrorPwrLine | 9 | 16#0009 | Nur bei AX2000: Versorgungsfehler durch AX-Endstufe gemeldet (ST_TcPlcMcAx2000In.DriveState[0].4).
dwTcHydErrCdAX2000ConnectionLost | 10 | 16#000A | Nur bei AX2000: Die Verbindung zum AX-Gerät ist unterbrochen oder erheblich gestört (ST_TcPlcMcAx2000In.BoxState<>0).
dwTcHydErrCdAX2000ConnectionTmOut | 11 | 16#000B | Nur bei AX2000: Die Kommunikation mit dem AX-Gerät konnte nicht aufgenommen werden (Zeitüberschreitung).
dwTcHydErrCdKL2531OverTemp | 1 | 16#0001 | Nur bei KL2531/KL2541: Die KL2531/KL2541-Klemme meldet Übertemperatur-Alarm.
dwTcHydErrCdKL2531UnderVoltage | 2 | 16#0002 | Nur bei KL2531/KL2541: Die KL2531/KL2541-Klemme meldet eine zu geringe Versorgungsspannung auf der Power Rail.
dwTcHydErrCdKL2531OverCurrentHigh | 3 | 16#0003 | Nur bei KL2531/KL2541: Derzeit nicht ausgewertet.
dwTcHydErrCdKL2531OpenLoadA | 4 | 16#0004 | Nur bei KL2531/KL2541: Derzeit nicht ausgewertet.
dwTcHydErrCdKL2531OpenLoadB | 5 | 16#0005 | Nur bei KL2531/KL2541: Derzeit nicht ausgewertet.
dwTcHydErrCdKL2531OverCurrentA | 6 | 16#0006 | Nur bei KL2531/KL2541: Derzeit nicht ausgewertet.
dwTcHydErrCdKL2531OverCurrentB | 7 | 16#0007 | Nur bei KL2531/KL2541: Derzeit nicht ausgewertet.
dwTcHydErrCdKL2531NotReady | 8 | 16#0008 | Nur bei KL2531/KL2541: Die Klemme meldet ein Endstufenproblem (Enabled, nicht Ready).
dwTcHydErrCdKL2531ConnectionLost | 10 | 16#000A | Nur bei KL2531/KL2541: Die Verbindung zum Klemme ist unterbrochen oder erheblich gestört (ST_TcPlcMcDriveIn.uiBoxState<>0).
dwTcHydErrCdKL2531ConnectionTmOut | 11 | 16#000B | Nur bei KL2531/KL2541: Die Kommunikation mit der Klemme konnte nicht aufgenommen werden (Zeitüberschreitung).

ADS-Codes

Diese Konstanten werden von den MC_AxAdsReadDecoder und MC_AxAdsWriteDecoder Bausteinen akzeptiert.

IndexGroup | IndexOffset | Typ | R/W | Beschreibung
16#4000 + Achsindex | 2 | STRING() | R | Achsname als Text.
 | 4 | UDINT | R | Zykluszeit in Mikrosekunden.
 | 16#10003 | UDINT | R | Encodertyp: nEnc_Type aus ST_TcHydAxParam.
 | 16#10006 | LREAL | R | Inkrementbewertung: fEnc_IncWeighting aus ST_TcHydAxParam.
 | 16#30003 | UDINT | R | Drivetyp: nDrive_Type aus ST_TcHydAxParam.
16#4100 + Achsindex | 1 | UDINT | R | Errorcode: nErrorCode aus ST_TcHydAxRtData.
 | 16#10002 | LREAL | R | Istposition: fActPos aus ST_TcHydAxRtData.
 | 16#10005 | LREAL | R | Istgeschwindigkeit: fActVelo aus ST_TcHydAxRtData.
16#4200 + Achsindex | 1 | - | W | Achsreset ausführen.
 | 16#10 | - | W | Referenzfahrt starten.
 | 16#21 | Struktur | W | Achsbewegung starten.
 | 16#FFFF0001 | - | W | Parameter speichern.
 | 16#FFFF0002 | - | W | Parameter laden.
16#4300 + Achsindex | 16#81 | UDINT | R | Statusdoppelwort: nStateDWord aus ST_TcHydAxRtData.
 | 16#B1 | UDINT | R | Errorcode: nErrorCode aus ST_TcHydAxRtData.
16#F000 + Achsindex | 1 | Struktur | R | Die ST_TcHydAxRtData Variable der Achse.
 | 2 | Struktur | R/W | Die ST_TcHydAxParam Variable der Achse.
16#FFFFFFFF | 0 | String() | R | Kennung des Servers.
 | 1 | UINT | R | Major version der Library.
 | 2 | UINT | R | Minor version der Library.
 | 3 | UINT | R | Release der Library.
 | 4 | UINT | R | Anzahl der unterstützten Achsen

Array Dimensions

Die folgenden Konstanten werden für die Dimensionierung von Feldern verwendet und können von der Applikation genutzt werden.

Konstante | Beschreibung
ciBkPlcMc_CamSwitchRef_MinIdx | Lower boundary index on an array[] of MC_CAMSWITCH_REF_BkPlcMc, supplied to blocks of type MC_DigitalCamSwitch_BkPlcMc
ciBkPlcMc_CamSwitchRef_MaxIdx | Upper boundary index on an array[] of MC_CAMSWITCH_REF_BkPlcMc, supplied to blocks of type MC_DigitalCamSwitch_BkPlcMc
ciBkPlcMc_TrackRef_MinIdx | Lower boundary index on an array[] of MC_TRACK_REF_BkPlcMc, supplied to blocks of type MC_DigitalCamSwitch_BkPlcMc
ciBkPlcMc_TrackRef_MaxIdx | Upper boundary index on an array[] of MC_TRACK_REF_BkPlcMc, supplied to blocks of type MC_DigitalCamSwitch_BkPlcMc

Logger Levels

Die folgenden Konstanten werden für die Festlegung des Levels verwendet, ab der Meldungen in die Logger-Funktion der Library aufgenommen werden.

Konstante | Beschreibung
dwTcHydLogLevel_None | Keine Aufzeichnung
dwTcHydLogLevel_Errors | Nur Fehlermeldungen
dwTcHydLogLevel_Warnings | Fehlermeldungen und Warnungen
dwTcHydLogLevel_Actions | Fehlermeldungen, Warnungen und Aktivitäten

Logger Sources

Die folgenden Konstanten werden für die Festlegung der Quelle einer Meldungen in der Logger-Funktion der Library verwendet.

Konstante | Beschreibung
dwTcHydLogSource_Library | Ein Baustein der Library
dwTcHydLogSource_Application | Ein Baustein der Applikation


TcPlcHydraulics: Knowledge Base: Sample List

Knowledge Base der SPS Bibliothek TcHydlib: Programm-Beispiele

Achtung: Beim Öffnen der SPS Projekte erscheint in der Regel die Meldung, dass eine oder mehrere Bibliotheken nicht geladen werden konnten. Es wird angeboten, den Pfad zur Bibliothek anzupassen. Von dieser Möglichkeit können Sie nur dann Gebrauch machen, wenn die Bibliothek in einer ausreichend aktuellen Version auf Ihrem Rechner verfügbar ist. Andernfalls sollten Sie das Angebot ablehnen und das Projekt als reines Anschauungsmaterial nutzen. Ein Kompilieren und Starten ist dann natürlich nicht möglich.

Hinweis: Ist die Bibliothek auf Ihrem Rechner vorhanden besteht die Möglichkeit, die Beispiele als ZIP Datei zu speichern und zu entpacken. Die enthaltene PRO Datei ist im PlcControl zu öffnen. In der Regel ist der Pfad zu den Bibliotheken zu aktualisieren. Im Baustein FB_AxInit ist etwa in Zeile 15 der Ausdruck < stemp:=CONCAT('C:\TwinCAT\PLC\',stAxItf.sAxisName); > an die Verhältnisse auf Ihrem Rechner anzupassen. Die Dateien vom Typ DAT sind im hierdurch festgelegten Verzeichnis abzulegen. In etwa in Zeile 38 finden Sie eine Zeile der Form < stAxParam.fCycletime:=DINT_TO_LREAL(SystemTaskInfoArr[1].cycleTime)/10000000.0; >, durch die eine automatische Anpassung der Cycle Time in den Achsparametern an die Taskeinstellung der SPS sicher gestellt wird. Sollten die Bausteine der Bibliothek nicht in Task 1 aufgerufen werden ist der Array Index entsprechend zu korrigieren. Nun sollte das Projekt problemlos kompilierbar und startbar sein. Es wird eine vorbereitete Scope-Einstellung als SCP Datei bereitgestellt, die alle wesentlichen Daten erfasst.

SPS Projekt | Projekt (ZIP) | Beschreibung
TcPlcMcEx_1.pro | TcPlcMcEx_1.zip | Demonstration der Bausteine MC_AxUtiStandardInit_BkPlcMc, MC_Power_BkPlcMc, MC_AxStandardBody_BkPlcMc und MC_AxAdsCommServer_BkPlcMc. Eine Achse. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_2.pro | TcPlcMcEx_2.zip | Demonstration der Benutzung von Arrays für Projekte mit mehreren Achsen. Fünf Achsen. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_3.pro | TcPlcMcEx_3.zip | Demonstration der Bausteine MC_AxRtEncoder_BkPlcMc, MC_AxRuntime_BkPlcMc, MC_AxCtrlSlowDownOnPressure_BkPlcMc (Ablösender Druckregler), MC_AxRtFinish_BkPlcMc und MC_AxRtDrive_BkPlcMc. Demonstration der Nutzung von fCustomerData für Projekt-Parameter. Eine Achse. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_4.pro | TcPlcMcEx_4.zip | Demonstration des Bausteins BkPlcMc_TC_1000. Der Arbeitszyklus wird durch Setzen der globalen Variablen bTriggerDown und bTriggerUp im PlcControl ausgelöst. Eine Achse. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_5.pro | TcPlcMcEx_5.zip | Demonstration der Bausteine MC_MoveAbsolute_BkPlcMc, MC_MoveVelocity_BkPlcMc, MC_MoveRelative_BkPlcMc und MC_Stop_BkPlcMc. Der Arbeitszyklus wird durch Setzen der globalen Variablen bStart im PlcControl ausgelöst. Eine Achse. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_6.pro | TcPlcMcEx_6.zip | Demonstration des Bausteins MC_AxRunTimeTimeRamp_BkPlcMc. Eine Achse. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_7.pro | TcPlcMcEx_7.zip | Demonstration des Bausteins MC_SetOverride_BkPlcMc. Über globale Variablen (bOverrideSinusoidal, fOverrideCycleTime, fOverrideMinValue, fOverrideMaxValue) kann der Verlauf, die Periodendauer und die Begrenzungen eines Signalerzeugers festgelegt werden, der den Override verändert. Eine Achse. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_100.pro | TcPlcMcEx_100.zip | Demonstration der Bausteine MC_GearIn_BkPlcMc und MC_GearOut_BkPlcMc. Fünf Achsen. Die Achse 5 ist eine virtuelle Achse (Mittelpunkt von Achse 1 und 2), die Achsen 1 und 2 werden über Getriebefunktionen an Achse 5 gekoppelt und entkoppelt. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_101.pro | TcPlcMcEx_101.zip | Demonstration der Bausteine MC_CamTableSelect_BkPlcMc, MC_CamIn_BkPlcMc und MC_CamOut_BkPlcMc. Fünf Achsen. Die Achse 5 ist eine virtuelle Achse (Mittelpunkt von Achse 1 und 2), die Achsen 1 und 2 werden über Camming Tabellen an Achse 5 gekoppelt und entkoppelt. Bedienung über PlcControl und PlcMcManager.
TcPlcMcEx_102.pro | TcPlcMcEx_102.zip | Demonstration der Bausteine BkPlcMc_TC_1001 und MC_MoveAbsolute_BkPlcMc. Der Arbeitszyklus wird durch Setzen der globalen Variablen bStart im PlcControl ausgelöst. Eine Achse. Bedienung über PlcControl und PlcMcManager.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtDriveIx2512_BkPlcMc

FUNCTION_BLOCK MC_AxRtDriveIx2512_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Aufbereitung des Stellwerts der Achse für die Ausgabe auf einer PWM Ausgabeklemme. Er wird von Bausteinen des Typs MC_AxRtDrive_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nDrive_Type der Wert iTcMc_DriveIx2512_1Coil oder iTcMc_DriveIx2512_2Coil eingestellt ist.

VAR_INPUT
    Coils:		INT;
END_VAR
VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Coils: Hier wird die Anzahl der Spulen (1 oder 2) übergeben.

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxDriveOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcDriveOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird der Stellwert der Achse als Ganzzahl im Bereich 0..32767 in Axis.pStAxDriveOutput zur Verfügung gestellt. Gilt Coils=1 wird der Ausgabewert in uiDacOutA zur Verfügung gestellt. Dabei gelten die folgenden Regeln:

  • Für positive Stellwerte wird uiDacOutA auf Werte zwischen 16385 und 32767 gesetzt.
  • Für negative Stellwerte wird uiDacOutA zwischen 0 und 16383 gesetzt.
  • Für den Stellwert 0.0 wird uiDacOutA auf 16384 gesetzt.

Wenn Coils=2 vorgegeben wird steht der Ausgabewert in uiDacOutA und uiDacOutB zur Verfügung. Dabei gelten folgende Regeln:

  • Für positive Stellwerte wird uiDacOutA genutzt. uiDacOutB ist dann 0.
  • Für negative Stellwerte wird uiDacOutB genutzt. uiDacOutA ist dann 0.
  • Für den Stellwert 0.0 wird uiDacOutA und uiDacOutB auf 0 gesetzt.


TcPlcHydraulics: PLCopen Motion Control: System: MC_AxRtEncoderKL2531_BkPlcMc

FUNCTION_BLOCK MC_AxRtEncoderKL2531_BkPlcMc

(internal use only) Der Funktionsbaustein übernimmt die Ermittlung der Istposition der Achse aus den von einer Schrittmotorendstufenklemme KL2531 erfassten ausgegebenen Impulsen. Er wird von Bausteinen des Typs MC_AxRtEncoder_BkPlcMc aufgerufen, wenn in Axis.pStAxParam als nEnc_Type der Wert iTcMc_EncoderKL2531 eingestellt ist.

Hinweis: Die Hydraulik Library bietet auch im Zusammenhang mit elektrischen Antrieben nur einen eingeschränkten Funktionsumfang. Ein erheblich weiteres Spektrum und eine umfassende Unterstützung bei Inbetriebnahme und Diagnose bieten TwinCAT NC PTP, NC I und CNC.

VAR_OUTPUT
    Error:		BOOL;
    ErrorID:		UDINT;
END_VAR
VAR_INOUT
    Axis:		Axis_Ref_BkPlcMc;
END_VAR

Error: Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID: Hier wird eine codierte Fehlerursache bereitgestellt.

Axis: Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben.

Verhalten des Bausteins

Bei jedem Aufruf untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

  • Ist der Pointer pStAxRtData in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse kann in diesem Fall nicht in einen Störzustand versetzt werden.
  • Ist der Pointer pStAxEncInput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncIn. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxEncOutput in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrPlcEncOut. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Ist der Pointer pStAxParams in Axis_Ref_BkPlcMc nicht initialisiert reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdPtrMcPlc. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt.
  • Wird bEncDoLatch in Axis.ST_TcHydAxRtData gültig reagiert der Baustein mit Error und ErrorID:=dwTcHydErrCdHomingType. Die Achse wird mit diesem Wert in nErrorCode in ST_TcHydAxRtData in einen Störzustand versetzt. Diese Situation tritt dann ein, wenn in Axis.ST_TcHydAxParam bei nEnc_HomingType der Wert iTcMc_HomingOnSync eingetragen ist.

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Istposition der Achse durch Auswertung der Variablen uiCount in Axis.pStAxEncInput ermittelt. Zur Umrechnung in Wegeinheiten der Achse werden fEnc_IncWeighting und fEnc_ZeroShift aus Axis.pStAxParam verwendet.

Hinweis: Dieser Baustein unterstützt die Referenziermethode iTcMc_HomingOnBlock und iTcMc_HomingOnIndex, nicht jedoch iTcMc_HomingOnSync.