FAQs (ab V3.0)

Hier finden Sie eine Reihe von Antworten auf immer wieder auftretende 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 Achse 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?

FAQ #14

Wie steuere ich ein Stromventil an?

FAQ #15

Welche Variablen einer Achse sollten mit dem Scope aufgezeichnet werden?

FAQ #16

Welche Bedeutung hat die Variable nDebugTag in Axis_Ref_BkPlcMc?

FAQ #17

Welche Besonderheiten sind beim Einsatz von Sercos-Antrieben zu berücksichtigen?

FAQ #18

Wie wird ein Druck oder eine Kraft ermittelt?

FAQ #19

Welche Besonderheiten sind beim Einsatz von AX5000 Antrieben zu berücksichtigen?

FAQ #20

Wie wird eine Achse für die Nutzung des Blendings nach PLC Open vorbereitet?

FAQ #21

Wie kann auf Register einer Klemme zugegriffen werden an der ein Encoder oder ein Ventil einer Achse angeschlossen ist?

FAQ #22

Wie ist die ASCII Datei für eine Linearisierungstabelle aufgebaut?

FAQ #23

Wie können Kommandos des PlcMcManagers abgeblockt werden?

FAQ #24

Welches Format haben Import / Export-Dateien mit Kennlinien-Daten.

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:

FAQs (ab V3.0) 1:

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 Axis_Ref_BkPlcMc, ST_TcPlcDeviceInput und ST_TcPlcDeviceOutput angelegt werden. 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 ersten Programm-Beispielen.

Die in diesen Beispielen gezeigte Vorgehensweise unter Verwendung von MC_AxUtiStandardInit_BkPlcMc Bausteinen sorgt für eine korrekte Initialisierung beim Start der PLC und veranlasst das Laden der Parameter der Achsen aus Dateien.

Für die Realisierung einer Meldungsaufzeichnung sind weitere Daten erforderlich. Siehe hierzu FAQ #10.

Um im PlcMcManager kundenspezifische Achsparameter mit selbstgewählten Bezeichnungen zu versehen sind weitere Daten erforderlich. Siehe hierzu FAQ #13

Um das Blending nach PLC Open nutzen zu können sind weitere Daten erforderlich. Siehe hierzu FAQ #20.

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, die von einem MC_AxUtiStandardInit_BkPlcMc Baustein bereitgestellt werden und nur in Sonderfällen durch die Applikation direkt realisiert werden sollten. Hier werden sie also nur aus Gründen der Vollständigkeit beschrieben.

  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_AxUtiStandardInit_BkPlcMc gelöst werden, der eine Verschiebung oder Größenänderung im Speicher oder die Änderung eines Typcodes 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 durch den MC_AxUtiStandardInit_BkPlcMc Baustein 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. Ein MC_AxUtiStandardInit_BkPlcMc Baustein übernimmt diese Aufgabe automatisch.
FAQs (ab V3.0) 2:

Wenn in der Applikation ein Baustein vom Typ MC_AxAdsCommServer_BkPlcMc genutzt wird, muss dieser Baustein in derselben 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.

FAQs (ab V3.0) 3:

Sämtliche hier aufgeführten Aktivitäten sollten durch einen MC_AxUtiStandardInit_BkPlcMc Baustein verwirklicht und koordiniert werden. 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.

FAQs (ab V3.0) 4:

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 kommt eine Reihe von Signalgebern in Frage, die nach diversen physikalischen Prinzipien eine positionsabhängige elektrische Größe erzeugen. Diese Größe bestimmt den Typ der einzusetzenden E/A-Komponente. Die pro Achse anzulegenden Variablen der Typen ST_TcPlcDeviceInput und ST_TcPlcDeviceOutput enthalten Elemente, die mit den Istwert-, Zähl-, Latch-, Control- und Status-Variablen der E/A-Hardware zu verknüpfen sind.

Hier einige Beispiele:

E/A-Komponente

Signal

Encoder Type

AX2000 B110 mit Absolut-Encoder

EtherCAT

iTcMc_EncoderAx2000_B110A

AX2000 B110 mit Resolver

EtherCAT

iTcMc_EncoderAx2000_B110R

AX2000 B200 mit Resolver

EtherCAT

iTcMc_EncoderAx2000_B200R

AX2000 B750 mit Absolut-Encoder

EtherCAT

iTcMc_EncoderAx2000_B750A

AX2000 B900 mit Resolver

EtherCAT

iTcMc_EncoderAx2000_B900R

AX5000 B110 mit Multiturn-Absolut-Encoder

EtherCAT

iTcMc_EncoderAX5000_B110A

EtherCAT-Servoregler mit CoE DS402 Support und
Multiturn-Encoder

EtherCAT

iTcMc_EncoderCoE_DS402A

EtherCAT-Servoregler mit CoE DS402 Support und Resolver oder Singleturn-Encoder

EtherCAT

iTcMc_EncoderCoE_DS402SR

EL3102

-10V .. 10V

iTcMc_EncoderEL3102

EL3142

0mA .. 20mA

iTcMc_EncoderEL3142

EL3162

0 .. 10V

iTcMc_EncoderEL3162

EL3255

Potentiometrischer Weggeber

iTcMc_EncoderEL3162

EL5001

SSI

iTcMc_EncoderEL5001

EL5101

A/B-Inkremente, RS422="TTL"

iTcMc_EncoderEL5101

EL7041

A/B-Inkremente, RS422="TTL"

iTcMc_EncoderEL7041

EtherCAT-Encoder mit CoE_DS406 Profil

EtherCAT

iTcMc_EncoderCoE_DS406

IE5009

SSI

iTcMc_EncoderIx5009

IP5009

SSI

iTcMc_EncoderIx5009

KL10xx

2 Bit, A/B-Inkremente

iTcMc_EncoderDigIncrement

KL11xx

2 Bit, A/B-Inkremente

iTcMc_EncoderDigIncrement

KL12xx

2 Bit, A/B-Inkremente

iTcMc_EncoderDigIncrement

KL13xx

2 Bit, A/B-Inkremente

iTcMc_EncoderDigIncrement

KL14xx

2 Bit, A/B-Inkremente

iTcMc_EncoderDigIncrement

KL17xx

2 Bit, A/B-Inkremente

iTcMc_EncoderDigIncrement

KL10xx

4 Bit, Positionsnocken

iTcMc_EncoderDigCam

KL11xx

4 Bit, Positionsnocken

iTcMc_EncoderDigCam

KL12xx

4 Bit, Positionsnocken

iTcMc_EncoderDigCam

KL13xx

4 Bit, Positionsnocken

iTcMc_EncoderDigCam

KL14xx

4 Bit, Positionsnocken

iTcMc_EncoderDigCam

KL17xx

4 Bit, Positionsnocken

iTcMc_EncoderDigCam

KL2521

Pulse Train

iTcMc_EncoderKL2521

KL2531

Schrittmotor, direkt (Encoder durch Pulszähler emuliert)

iTcMc_EncoderKL2531

KL2541

Schrittmotor, direkt (mit Encoder oder Encoder durch Pulszähler emuliert)

iTcMc_EncoderKL2541

KL2542

DC Motor, direkt mit Encoder

iTcMc_EncoderKL2542

KL3001

-10V .. 10V

iTcMc_EncoderKL3002

KL3002

-10V .. 10V

iTcMc_EncoderKL3002

KL3011

0mA .. 20mA

iTcMc_EncoderKL3042

KL3012

0mA .. 20mA

iTcMc_EncoderKL3042

KL3021

4mA .. 20mA

iTcMc_EncoderKL3042

KL3022

4mA .. 20mA

iTcMc_EncoderKL3042

KL3041

0mA .. 20mA

iTcMc_EncoderKL3042

KL3042

0mA .. 20mA

iTcMc_EncoderKL3042

KL3044

0mA .. 20mA

iTcMc_EncoderKL3042

KL3051

4mA .. 20mA

iTcMc_EncoderKL3042

KL3052

4mA .. 20mA

iTcMc_EncoderKL3042

KL3054

4mA .. 20mA

iTcMc_EncoderKL3042

KL3061

0V .. 10V

iTcMc_EncoderKL3062

KL3062

0V .. 10V

iTcMc_EncoderKL3062

KL3064

0V .. 10V

iTcMc_EncoderKL3062

KL3162

0V .. 10V

iTcMc_EncoderKL3162

KL5001

SSI

iTcMc_EncoderKL5001

KL5101

A/B-Inkremente, RS422="TTL"

iTcMc_EncoderKL5101

KL5111

A/B-Inkremente, RS422="HTL"

iTcMc_EncoderKL5111

M2510

-10V .. 10V

iTcMc_EncoderM2510

M3100

A/B-Inkremente, RS422="TTL"

iTcMc_EncoderM3120

M3120

A/B-Inkremente, RS422="TTL"

iTcMc_EncoderM3120

Wenn eine der hier genannten Komponenten eingesetzt wird kann in der Regel einer der bereitgestellten Encoder-Bausteine verwendet werden. Die Schnittstellen dieser Bausteine sind nicht garantiert und sollten somit nicht direkt von der Applikation aufgerufen werden. Besser ist es, den Encoder-Typ entsprechend der Konstanten in E_TcMcEncoderType 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.

Alle Encoder-Bausteine verwenden die Parameter fEnc_IncWeighting und fEnc_IncInterpolation 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_SetPosition_BkPlcMc Baustein festgelegt werden. Der Referenziert-Status der Achse ist mit MC_SetReferenceFlag_BkPlcMc() zu definieren.

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 und bei Bedarf auch fActVelo in ST_TcHydAxRtData eingetragen werden. Um die Durchgängigkeit zu erhalten sollte auch hier wenn möglich auf die Parameter fEnc_IncWeighting, fEnc_IncInterpolation und fEnc_ZeroShift bzw. fEnc_RefShift zurückgegriffen werden.

FAQs (ab V3.0) 5:

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.

FAQs (ab V3.0) 6:

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 oder ersatzweise ein geeigneter Reglerbaustein (z. B. ein Druckregler) aufgerufen werden. Der Parameter nProfileType in ST_TcHydAxParam legt fest, nach welchem Verfahren der Stellwert generiert wird. Dabei werden je nach Typ und in Abhängigkeit von weiteren Parametern der Achse und 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.

FAQs (ab V3.0) 7:

Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollen, verwenden Sie zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc.

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_TcPlcDeviceInput und ST_TcPlcDeviceOutput enthalten Elemente, die mit den Sollwert- und Steuer-Variablen der E/A-Hardware zu verknüpfen sind.

FAQs (ab V3.0) 8:

Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollen, verwenden Sie zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc.

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_TcPlcDeviceInput und ST_TcPlcDeviceOutput enthalten Elemente, die mit den Variablen der E/A-Hardware zu verknüpfen sind.

Hier einige Beispiele:

E/A-Komponente

Signal

Drive Type

AX2000 B110 mit Absolut-Encoder

EtherCAT

iTcMc_DriveAX2000_B110A

AX2000 B110 mit Resolver

EtherCAT

iTcMc_DriveAX2000_B110R

AX2000 B200 mit Resolver

EtherCAT

iTcMc_DriveAX2000_B200R

AX2000 B750 mit Absolut-Encoder

EtherCAT

iTcMc_DriveAx2000_B750A

AX2000 B900 mit Resolver

EtherCAT

iTcMc_DriveAX2000_B900R

AX5000 B110 mit Absolut-Encoder

EtherCAT

iTcMc_DriveAX5000_B110A

EtherCAT-Servoregler mit CoE DS402 Support und Resolver, Singleturn- oder Multiturn-Encoder

EtherCAT

iTcMc_DriveCoE_DS402

EtherCAT-Ventil mit CoE_DS408 Profil

EtherCAT

iTcMc_Drive_CoE_DS408

EL2535

PWM

iTcMc_DriveEL2535

EL4031, EL4032, EL4034, EL4038
EL4131, EL4132, EL4134

-10V .. 10V

iTcMc_DriveEL4132

EL4011, EL4012, EL4014, EL4018,
EL4112
EL4021, EL4022, EL4024,
EL4028,
EL4122, EL4124

0..20mA

 

4..20mA

iTcMc_DriveEL4x22

EL7031

Schrittmotor, direkt

iTcMc_DriveEL7031

EL7041

Schrittmotor, direkt

iTcMc_DriveEL7041

IE2512

PWM

iTcMc_DriveIx2512_1Coil

iTcMc_DriveIx2512_2Coil

IP2512

PWM

iTcMc_DriveIx2512_1Coil

iTcMc_DriveIx2512_2Coil

KL20xx, KL21xx, KL22xx, KL24xx

5 Bit zum Betrieb eines Frequenzumrichters mit Festfrequenzen

iTcMc_DriveLowCostInverter

KL20xx, KL21xx, KL22xx, KL24xx

4 Bit zum Betrieb eines spannungsgesteuerten Schrittmotors

iTcMc_DriveLowCostStepper

KL2521

Pulse Train

iTcMc_DriveKL2521

KL2531

Schrittmotor, direkt

iTcMc_DriveKL2531

KL2532

DC Motor, direkt mit Encoder

iTcMc_DriveKL2532

KL2535

PWM

iTcMc_DriveKL2535_1Coil

iTcMc_DriveKL2535_2Coil

KL2541

Schrittmotor, direkt

iTcMc_DriveKL2541

KL2542

DC Motor, direkt mit Encoder

iTcMc_DriveKL2542

KL4031

-10V .. 10V

iTcMc_DriveKL4032

KL4032

-10V .. 10V

iTcMc_DriveKL4032

KL4034

-10V .. 10V

iTcMc_DriveKL4032

M2400

-10V .. 10V

iTcMc_DriveM2400_D1, iTcMc_DriveM2400_D2, iTcMc_DriveM2400_D3, iTcMc_DriveM2400_D4

Wenn eine der hier genannten Komponenten eingesetzt wird kann in der Regel einer der bereitgestellten Drive-Bausteine verwendet werden. Diese Schnittstellen dieser Bausteine sind nicht garantiert und sollten somit nicht direkt von der Applikation aufgerufen werden. Besser ist es, den Drive-Typ entsprechend der Konstanten in E_TcMcDriveType unter nDrive_Type in ST_TcHydAxParam einzustellen und einen Baustein vom Typ MC_AxRtDrive_BkPlcMc zu verwenden.

FAQs (ab V3.0) 9:

Wenn nur die üblichen Bausteine (Encoder, Generator, Finish, Drive) für die Achse aufgerufen werden sollen, verwenden Sie zur Vereinfachung ein Baustein des Typs MC_AxStandardBody_BkPlcMc.

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. 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_AxCtrlSlowDownOnPressure_BkPlcMc oder ähnliches handeln.
  6. Obligatorisch: Ein Anpassungsbaustein des Typs MC_AxRtFinish_BkPlcMc.
  7. Optional: Bei Bedarf kann an dieser Stelle ein Baustein für die automatische Inbetriebnahme aufgerufen werden.
  8. Obligatorisch: Ein Ausgabebaustein des Typs MC_AxRtDrive_BkPlcMc.

Anstelle 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_TcPlcDeviceOutput 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 setzt dieser Baustein die Software-Reglerfreigabe in ST_TcHydAxRtData.nDeCtrlDWord.

In der ST_TcPlcDeviceInput 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. Steht auch hierfür kein geeignetes Signal zur Verfügung oder soll keine Überwachung realisiert werden ist ST_TcHydAxParam.bDrive_DefaultPowerOk zu setzen.

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_AxUtiStandardInit_BkPlcMc aller Achsen zusammen mit den Adressen der anderen individuellen Achsbestandteile 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 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.

FAQs (ab V3.0) 10:

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

Eine Meldung kann durch die Applikation entweder achsbezogen oder nicht achsbezogen ausgegeben werden. Hierzu stehen die Bausteine MC_AxRtLogAxisEntry_BkPlcMc und MC_AxRtLogEntry_BkPlcMc zur Verfügung.

FAQ #10.4: Bibliotheksinterner Meldungspuffer

Bei einem zyklischen Aufruf des Bausteins MC_Communications_BkPlcMc wird ein bibliotheksinterner Meldungspuffer genutzt. Dazu referenziert der Baustein MC_Communications_BkPlcMc den internen Meldungspuffer in den übergebenen Achsen und ruft den Baustein MC_AxRtLoggerSpool_BkPlcMc auf. Ein in der PLC-Applikation angelegter Meldungspuffer ist hierbei nicht mehr erforderlich. Außerdem wird der beim Aufruf von MC_AxUtiStandardInit_BkPlcMc referenzierte Meldungspuffer ignoriert, wenn der Baustein MC_Communications_BkPlcMc aufgerufen wird.

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 auch diese 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.

In älteren Versionen der Library wurde ein Baustein des Typs MC_AxUtiCancelMonitoring_BkPlcMc() bereitgestellt, der für einige wenige Motion Funktionen die Überwachung durch den die Funktion einleitenden Baustein abgebrochen hat. Dieser Baustein wird durch die inzwischen vollständigere Implementation der PLC Open Regeln nicht mehr benötigt.

Soll ein Baustein die Ausführung seiner Funktion nicht mehr überwachen ist es in den meisten Fällen ausreichend ihn ein- oder mehrmals mit Execute:=FALSE aufzurufen. Dies gilt insbesondere für MC_MoveAbsolute_BkPlcMc(), MC_MoveRelative_BkPlcMc() und MC_MoveVelocity_BkPlcMc().

Anschließend kann in gleichen oder einem späteren Zyklus mit demselben Baustein oder einer Instanz desselben oder eines anderen Typs eine neue Funktionalität gestartet werden. Diese Vorgehensweise ist beliebig wiederholbar.

FAQs (ab V3.0) 11:

Komplexe aus mehreren Teilaktionen zusammengesetzte Funktionen wie MC_Home_BkPlcMc() erfordern den kontinuierlichen Aufruf des Bausteins da dieser die erforderlichen Abläufe selbst organisiert.( MC_Home_BkPlcMc())

FAQ #12: Wie überwache ich die Kommunikation mit einem E/A-Gerät?

Sowohl ST_TcPlcDeviceInput als auch ST_TcPlcDeviceOutput 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. 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.

EtherCAT bietet hier erheblich erweiterte Möglichkeiten.

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 die Adresse einer ST_TcMcAuxDataLabels Variablen übergeben und eine geeignete Datei bereitgestellt 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.

FAQs (ab V3.0) 12:

Eine Reihe von Reglerbausteinen der Library definiert die Texte des Arrays automatisch.

FAQ #14: Wie steuere ich ein Stromventil an?

Im Gegensatz zu einem 4/2 oder 3/2 Proportionalwegeventil oder Servoventil wird ein Stromventil mit einem 0..10V Signal (bei vorhandener Ventilendstufe) angesteuert oder mit einem eingeprägten Strom von 0...INenn betätigt. In dieser Ansteuerung wird nur der Betrag der Geschwindigkeit übertragen. Die Richtung wird nicht mit dem Vorzeichen, sondern auf andere Weise transportiert. Hierfür werden zumeist digitale Signale benötigt, die für die Ansteuerung von Schaltventilen verwendet werden. In der ST_TcPlcDeviceOutput Struktur stehen hierfür unter anderem die Elemente bBrakeOff, bMovePos und bMoveNeg bereit. Für die Erzeugung eines Absolut-Stellwerts ist bDrive_AbsoluteOutput in den Achsparametern zu setzen.

FAQs (ab V3.0) 13:

Auf diesem Weg ist auch der Einsatz von klassischen Frequenzumrichtern mit Asynchronmotor, Encoder und Bremse möglich, wenn der Umrichter einen Analogeingang bereitstellt.

FAQ #15: Welche Variablen einer Achse sollten mit dem Scope aufgezeichnet werden?

Die folgende Signalzusammenstellung ist zu empfehlen:

FAQs (ab V3.0) 14:

Die Signalauswahl im ScopeView wird erleichtert, wenn die Axis_Ref_BkPlcMc Variablen einen Namen erhalten, der mit aaa_ beginnt. Diese Vorgehensweise wird in den Programmbeispielen benutzt und sorgt dafür, dass die Variablen in der Symbol-Liste schnell auffindbar sind.

FAQs (ab V3.0) 15:

In der Signalzusammenstellung des ScopeViews können Kanäle zeitweise deaktiviert werden. So ist es möglich, eine umfassende Zusammenstellung vorzuhalten, aber nur die aktuell interessanten Daten aufzuzeichnen.

FAQ #16: Welche Bedeutung hat die Variable nDebugTag in Axis_Ref_BkPlcMc?

FAQs (ab V3.0) 16:

In einigen Versionen ist diese Variable vorhanden. Sie hat für das PLC-Projekt keine Bedeutung.

In dieser Variablen hinterlegen fast alle Bausteine der Bibliothek für die Dauer ihrer Ausführung eine eindeutige Kennung. Dazu wird der vorgefundene Inhalt in einer lokalen Variablen des Bausteins gesichert und unmittelbar vor dem Verlassen des Bausteins wiederhergestellt.

Sollte es zu einem Programm-Absturz kommen und es besteht der Verdacht, dass es zu einem Problem in einem Baustein der Bibliothek gekommen ist, sind die nDebugTag Variablen aller Achsen zu überprüfen. Ist ein Wert <> 0 vorhanden, war der Baustein vom Absturz betroffen und die Ursache ist zu klären. Die verwendeten numerischen Werte sind in der Bibliothek unter "Globale_Konstanten" aufgeführt. Es sollte zusätzlich der Inhalt von ST_TcHydAxRtData.sTopBlockName festgestellt werden. Hier ist in der Regel der Name des von der Applikation direkt aufgerufenen Bausteins zu finden.

FAQ #17: Welche Besonderheiten sind beim Einsatz von Sercos-Antrieben zu berücksichtigen?

Beim Betrieb von Sercos-Antrieben (ab V3.0.26) sind die nachfolgenden Regeln zu beachten:

FAQ #18: Wie wird ein Druck oder eine Kraft ermittelt?

Zur Ermittlung eines Ist-Drucks oder einer Ist-Kraft sind pro Achse einer oder mehrere Bausteine der Typen MC_AxRtReadPressureDiff_BkPlcMc, MC_AxRtReadForceDiff_BkPlcMc, MC_AxRtReadForceSingle_BkPlcMc oder MC_AxRtReadPressureSingle_BkPlcMc aufzurufen. Details zur Aufrufreihenfolge sind unter FAQ #8 zu finden.

Die an die Bausteine zu übergebenden AD-Wandlerwerte sind auf allozierte Variablen der Applikation zu verknüpfen. Details zur Wahl und zur Parametrierung sind in den Beschreibungen der Bausteine zu finden.

FAQ #19: Welche Besonderheiten sind beim Einsatz von AX5000 Antrieben zu berücksichtigen?

Bei AX5000 Geräten wird beim Herstellen der Kommunikation eine Reihe von IDNs aus dem Gerät gelesen und es werden verschiedene Parameter automatisch berechnet.

IDN

verwendet für Parameter

44

Bezugsgeschwindigkeit, intern: Skalierung der Geschwindigkeitsausgabe

45

intern: Skalierung der Geschwindigkeitsausgabe

46

intern: Skalierung der Geschwindigkeitsausgabe

76

Encoderinterpolation

79

Encoderinterpolation

91

Bezugsgeschwindigkeit

Die folgenden Parameter werden somit automatisch eingestellt und sind über den PlcMcManager nicht beeinflussbar:

Parameter

 

beeinflusst welche weiteren Parameter

Global: Bezugsgeschw.

wird aus der Maximal-Drehzahl des Geräts und dem Umdrehungsvorschub berechnet

Handgeschwindigkeiten, Max. Appl. Geschw.

Encoder: Inc.Zwischenteilung

wird aus IDN79 des Geräts gelesen

Achtung: der Umdrehungsvorschub ist als Inc.Bewertung einzugeben

FAQ #20: Wie wird eine Achse für die Nutzung des Blendings nach PLC Open vorbereitet?

In der Hydraulik.lib ist es möglich, bis zu 12 gepufferte Bewegungen zu kommandieren. Hierzu muss dem MC_AxUtiStandardInit_BkPlcMc Baustein zum Aktualisieren der Achse-Referenz ein Kommandopuffer vom Typ ST_TcPlcCmdBuffer_BkPlcMc übergeben werden und zyklisch ein Baustein MC_AxRtCmdBufferExecute_BkPlcMc aufgerufen werden.

Wenn jetzt Move-Bausteine wie MC_MoveAbsolute_BkPlcMc, MC_MoveRelative_BkPlcMc oder MC_MoveVelocity_BkPlcMc aktiviert werden tragen sie ihre Daten in den Kommandopuffer ein.

Es ist im gepufferten Betrieb unbedingt drauf zu achten, dass die Move-Bausteine und der MC_AxRuntime_BkPlcMc der Achse in einer PLC-Task laufen.

Übergang zwischen einem langsamen und einem schnellen Abschnitt.

FAQs (ab V3.0) 17:

Übergang zwischen einem schnellen und einem langsamen Abschnitt.

FAQs (ab V3.0) 18:

FAQ #21: Wie kann auf Register einer Klemme zugegriffen werden an der ein Encoder oder ein Ventil einer Achse angeschlossen ist?

Für die Registerkommunikation mit Klemmen an denen der Encoder oder das Ventil einer Achse angeschlossen sind wird die Verwendung von Bausteinen der Typen MC_AxUtiReadRegDriveTerm_BkPlcMc(), MC_AxUtiReadRegEncTerm_BkPlcMc(), MC_AxUtiWriteRegDriveTerm_BkPlcMc() und MC_AxUtiWriteRegEncTerm_BkPlcMc() empfohlen.

FAQ #22: Wie ist die ASCII Datei für eine Linearisierungstabelle aufgebaut?

Das Format einer ASCII Datei einer Linearisierungstabelle ist wie folgt festgelegt:

Beispiel: Die folgende (idealisierte) Tabelle beschreibt einen Zylinder der durch asymmetrische Wirkungsflächen (bedingt durch einseitige Kolbenstange) in negativer Bewegungsrichtung nur die halbe Geschwindigkeit der positiven Richtung erreicht. Es wird hier angenommen, dass der Zylinder mit einem Nullschnitt-Ventil mit Kennlinienknick bei 40% betrieben wird

normalisierte Geschwindigkeit

normalisierte Ausgabe

-0,500

-1,000

-0,430

-0.900

-0,360

-0,800

-0,290

-0,700

-0,220

-0,600

-0,150

-0,500

-0,080

-0,400

-0,060

-0,300

-0,040

-0,200

-0,020

-0,100

0,000

0,000

0,040

0,100

0,080

0,200

0,120

0,300

0,160

0,400

0,300

0,500

0,440

0,600

0,580

0,700

0,720

0,800

0,860

0,900

1,000

1,000

FAQ #23: Wie können Kommandos des PlcMcManagers abgeblockt werden?

In einigen Situationen kann die Auslösung von Kommandos durch den PlcMcManager problematisch sein. Dies wäre z. B. der Fall, wenn eine bestimmte Abfolge von Aktionen zwingend vollständig abgearbeitet werden muss. Um in diesen Fällen die versehentliche Kommandogabe durch den PlcMcManager zu verhindern kann mit der MC_AxRtCommandsLocked_BkPlcMc Funktion eine Verriegelung im Status-Doppelwort der Achse eingetragen werden. Ist diese Verriegelung aktiv wird ein vom PlcMcManager gesendetes Kommando mit einem Schreibschutz-Fehler abgelehnt.

FAQs (ab V3.0) 19:

Es ist unbedingt erforderlich die Verriegelung nach Abarbeitung der zu schützenden Aktion aufzuheben. Dies gilt auch und besonders beim Auftreten von Fehlern.

Es steht ein Beispiel zur Verfügung.

FAQ #24: Welches Format haben Dateien mit Kennlinien-Daten

Wenn eine Achse mit Komponenten für eine kennliniengesteuerte Linearisierung ausgerüstet ist können die Stützpunkte mit einem Baustein vom Typ MC_LinTableExportToAsciiFile_BkPlcMc() in eine Datei exportiert werden. Sollen solche Daten aus einer auf diese oder andere Weise erzeugten oder veränderten Datei importiert werden, steht der Baustein MC_LinTableImportFromAsciiFile_BkPlcMc() zur Verfügung.

Damit solche Dateien genutzt werden können ist das nachstehende Format streng einzuhalten.