Tools
TB_Blinker
Diese Technologiefunktion realisiert einen Blinker mit seperat einstellbarer Dauer für Ein und Aus. Wenn der Eingang "x_Const_Out = 1" ist der Ausgang dauerhaft High. Wird an diesem Eingang eine HL-Flanke erkannt beginnt der Blinker automatisch zu blinken.
Empfohlene Task: CYCLIC/ EVENT
Verwendete Bibliotheken: -
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | FALSE: Die Funktion ist deaktiviert TRUE: Die Funktion ist aktiviert, ist bei einer LH-Flanke der Eingang "x_ConstOut = FALSE", beginnt der Ausgang automatisch zu blinken |
| x_Const_Out | BOOL | FALSE: Der Ausgang blinkt, bei einer HL-Flanke beginnt der Ausgang automatisch wieder zu blinken TRUE: Der Ausgang ist konstant High |
| t_BlinkON_Time | TIME | Dauer ínnerhalb eines Blinkintervalls in der der Ausgang High ist. |
| t_BlinkOFF_Time | TIME | Dauer ínnerhalb eines Blinkintervalls in der der Ausgang Low ist. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Blink_Out | BOOL | Blinkausgang |

TB_DriveReadConfig
Dieser Baustein liest bestimmte Konfigurationsparameter aus einem Baumüller Antrieb aus. Nähere Informationen siehe Allgemeine Beschreibung.
Aktuell können die Fehler folgender Regler ausgelesen werden:
BmaXX 32xx, BmaXX 33xx, BmaXX 52xx, BmaXX 53xx
Empfohlene Task: Event / Cyclic
Verwendete Bibliotheken: TECH_TYPES_xxbd07 oder höherMOTION_CONTROL_xxbd08 oder höherMOTION_TYPES_xxbd08 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Execute | BOOL | Mit einer LH-Flanke wird das Auslesen der Konfiguration gestartet. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Busy | BOOL | TRUE: ist beschäftigt und liest die Konfiguration aus FALSE: ist im StandBy |
| x_Done | BOOL | TRUE: Auslesen der Konfiguration war erfolgreich, x_Busy muss in diesem Zustand FALSE sein. |
| x_Error | BOOL | TRUE: Baustein hat einen Fehler. |
| w_ErrorID | WORD | Wenn x_Error = TRUE wird an diesem Ausgang eine detaillierte Fehlermeldung ausgegeben. |
| a_DriveCfg | AXS_PAR | Struktur in der alle Konfigurationsparameter eingetragen werden und der Inhalt ausgelesen werden kann. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| _Axis | AXIS_REF | Referenz auf die Achse |

TB_DriveReadError
Mit diesem Baustein werden Fehler eines Baumüller Antriebs ausgelesen. Sobald ein (oder mehrere) Fehler am Regler ansteht werden einmalig alle ausgelesen und im Array "a_ErrorList" gespeichert. Darin wird ebenfalls die Anzahl aller anstehenden Fehler eingetragen. Ein erfolgreiches Auslesen wird durch "x_ListDone = TRUE" gekennzeichnet. Durch eine fallende Flanke am Eingang "x_Acknowledge" wird die Fehlerliste des Bausteins gelöscht und die automatische Fehlerüberwachung wieder aktiviert.
Ebenfalls kann man die aktuell anstehenden Fehlermeldungen durch den Baustein zyklisch auslesen lassen. Diese Funktion muss durch "x_ContCheck = TRUE" aktiviert werden. Hierbei muss beachtet werden, dass t_CheckCycle größer als 0 gewählt werden muss, da sonst das Auslesen nicht mehr funktioniert. Die De- bzw. Aktivierung der Funktion kann jederzeit vorgenommen werden. Achtung: Das Auslesen findet via Bedarfsdatenkommunikation zum Antrieb statt.
Aktuell können die Fehler folgender Regler ausgelesen werden:
BmaXX 32xx, BmaXX 33xx, BmaXX 44xx ab Firmwareversion 3.11, BmaXX 52xx, BmaXX 53xx
Empfohlene Task: Event
Verwendete Bibliotheken: BM_TYPES_xxbd01 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | TRUE: Baustein ist eingeschalten |
| x_Acknowledge | BOOL | HL-Flanke: Nach erfolgreichem Auslesen der Fehler einer Achse wird die Überwachung auf neue Fehler wieder eingeschaltet und die Liste der Fehler gelöscht. |
| x_ContCheck | BOOL | TRUE: zyklisches Auslesen einschalten |
| x_CheckCycle | TIME | Intervall für das zyklische Auslesen; Achtung: dieser Wert muss größer als 0 sein, da ansonsten das Auslesen nicht mehr funktioniert. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Error | BOOL | TRUE: Der Baustein hat einen Fehler |
| x_ListDone | BOOL | TRUE: Fehlerliste wurde erfolgreich erzeugt und kann benutzt werden. |
| x_DriveError | BOOL | TRUE: am Antrieb liegt mindestens ein Fehler an. |
| x_DriveWarning | BOOL | TRUE: am Antrieb liegt mindestens eine Warnung an. |
| x_Active | BOOL | TRUE: Baustein ist aktiv und wartet auf einen Fehler an der Achse um dann automatisch das Fehler auslesen zu starten. |
| w_ErrorID | WORD | Fehlernummer des Bausteins, für weitere Informationen siehe Fehlerliste des Bausteins. |
| a_ErrorList | INT_32_BMARRAY | Liste der ausgelesen Fehlernummern (1 bis 20) einer Achse. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| _Axis | AXIS_REF | Referenz auf die Achse |

TB_FIFO
Mit dem TB_FIFO (First In–First Out) werden sequentiell Datensätze gespeichert, die zu einem späteren Zeitpunkt in der gleichen Reihefolge wieder ausgelesen werden können. Es können bis zu 256 Datensätze gespeichert werden.
Mit x_Enable=TRUE wird der Baustein aktiviert. Die erfolgte Aktivierung wird mit TRUE am Ausgang x_Active gemeldet. Ab diesem Zeitpunkt können Datensätze gespeichert und gelesen werden. Ein Datensatz besteht aus ein bis vier Datenworten.
Daten speichern:
Gespeichert wird der an di_InVal0..3 angelegte Datensatz mit der positiven Flanke am Eingang x_Put. Wurde der Datensatz übernommen, wird dies mit TRUE am Ausgang x_PutDone für einen Zyklus gemeldet. Konnte der Datensatz nicht gespeichert werden (FIFO voll), so bleibt x_PutDone FALSE und es wird ein Fehler ausgegeben. Es können bis zu 256 Datensätze gespeichert werden.
Daten lesen:
Mit einer positiven Flanke am Eingang x_Get wird der älteste Datensatz gelesen an di_OutVal0..3 ausgegeben und intern gelöscht. Das heißt ein bereits gelesener Datensatz kann kein zweites Mal ausgelesen werden. Die erfolgreiche Ausgabe wird mit TRUE am Ausgang x_GetDone für einen Zyklus angezeigt. Konnte kein Datensatz gelesen werden (FIFO leer), so bleibt x_GetDone FALSE und es wird ein Fehler ausgegeben.
FIFO löschen:
Mit Wegnahme der Freigabe (x_Enable=FALSE) wird der FIFO gelöscht und alle gespeicherten Datensätze werden gelöscht.
Fehler quittieren:
Fehler werden durch einen gültigen Befehl automatisch gelöscht. Wird z.B. nach einem Fehler -2 (FIFO leer) ein Datensatz gespeichert, so wird damit x_Error=FALSE und i_Error=0.
Empfohlene Task: Event / Cyclic
Verwendete Bibliotheken: -
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | TRUE: Freigabe des Bausteins und löschen des FIFOs. Die erfolgreiche Freigabe wird an x_Active angezeigt. |
| x_Get | BOOL | Mit der positiven Flanke wird der älteste Datensatz an di_OutVal0..3 ausgegeben. Die erfolgreiche Ausgabe wird an x_PutDone angezeigt. |
| x_Put | BOOL | Mit der positiven Flanke wird der Datensatz an di_InVal0..3 übernommen. Die erfolgreiche Übernahme wird an x_PutDone angezeigt. |
| di_InVal0 | DINT | Erstes Datenwort des Datensatzes, der in den FIFO eingetragen wird. |
| di_OutVal1 | DINT | Zweites Datenwort des Datensatzes, der in den FIFO eingetragen wird. |
| di_OutVal2 | DINT | Drittes Datenwort des Datensatzes, der in den FIFO eingetragen wird. |
| di_OutVal3 | DINT | Viertes Datenwort des Datensatzes, der in den FIFO eingetragen wird. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein aktiv. Es können Datensätze geschrieben und gelesen werden. |
| x_GetDone | BOOL | TRUE: Zeigt für einen Zyklus an, dass die an di_OutVal0..3 ausgegebenen Daten gültig sind. |
| x_PutDone | BOOL | TRUE: Zeigt für einen Zyklus an, dass die an di_InVal0..3 angelegten Daten übernommen sind. |
| di_OutVal0 | DINT | Erstes Datenwort des Datensatzes, das aus dem FIFO ausgelesen wurde. |
| di_OutVal1 | DINT | Zweites Datenwort des Datensatzes, das aus dem FIFO ausgelesen wurde. |
| di_OutVal2 | DINT | Drittes Datenwort des Datensatzes, das aus dem FIFO ausgelesen wurde. |
| OutVal3 | DINT | Viertes Datenwort des Datensatzes, das aus dem FIFO ausgelesen wurde. |
| i_Elements | INT | Anzahl der aktuell im FIFO gespeicherten Datensätze. |
| x_Error | BOOL | TRUE: Es wurde ein Fehler festgestellt. |
| i_Error | INT | Aktuelle Fehlernummer. Siehe Tabelle oben. |

TB_FilterReal
Der Funktionsbaustein TB_FilterReal implementiert einen Tiefpassfilter mit programmierbarer Zeitkonstante (T) für REAL-Werte. Bei jedem Zyklus berechnet der Baustein den gefilterten Wert basierend auf dem aktuellen Eingangswert und dem vorherigen gefilterten Wert. Die Zeitkonstante T bestimmt, wie schnell der Filter auf Änderungen im Eingangswert reagiert. Der gefilterte Wert wird im Ausgang Y bereitgestellt.
Der FB eignet sich zur Dämpfung hochfrequenter Eingangswerte und zur Erzeugung geglätteter Ausgangswerte. Die Wahl der Zeitkonstante T beeinflusst die Filterreaktionsgeschwindigkeit. Ein größerer T-Wert führt zu einer langsameren Reaktion auf Änderungen.
Empfohlene Task: Cyclic/Event
Verwendete Bibliotheken: keine
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| X | REAL | Wert, der gefiltert werden soll. |
| T | TIME | Zeitkonstante des Tiefpassfilters. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| Y | REAL | Gefilterter Wert. |

TB_NormCamCreate
Dieser Baustein erstellt die Stützpunkttabelle der Standardkurven für die Verwendung in Technologiebausteinen wie TB_SyncLin. TB_SyncRot, TB_CamStretch.
In der Stützpunkttabelle sind die Kurvenstützpunkte für die Technologiebausteine abgelegt.
Die Tabelle bietet Platz für 32 Kurven á 512 Stützpunkte. Die ersten 16 Plätze sind reserviert. Die Plätze 17 bis 32 können mit Anwenderkurven gefüllt werden. Bausteine mit CamId-Eingang (wie z.B: TB_CamStretch), können die Anwenderkurven verarbeiten. Siehe Beschreibung der entsprechenden Bausteine.
Empfohlene Task: Kaltstart/Warmstart oder Zyklus
Verwendete Bibliotheken: TECH_TYPES_xxbd05 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | TRUE: Erstellen der Stützpunkttabelle. Die Erstellung erfolgt in einem Zyklus. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Done | BOOL | TRUE: Die Stützpunkttabelle ist erstellt und kann verwendet werden. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| a_CamTable | CAM_TABLE | Stützpunkttabelle. |

TB_PosAdd
Dieser Baustein erzeugt zyklische Sollpositionen in Anwendereinheiten und kann in Verbindung mit Technologiebausteinen wie TB_SyncRot oder TB_SyncLin Zusatzpositionierungen ausführen.
Der Baustein erzeugt Sollpositionen abhängig einer Leitposition. Die Bewegung startet aus der Rast, sobald die Leitposition (di_xPos) gleich der Startposition (di_xOffs) ist. Die Bewegung der Achse (di_yFact) wird ausgeführt während der Leitweg di_xFact zurücklegt. Es wird ein Geschwindigkeitsprofil ohne Geschwindigkeits-Plateau erzeugt.
Empfohlene Task: Event
Verwendete Bibliotheken: ARITHMETIC_xxbd00 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | TRUE: Freigabe des Bausteins. |
| di_xPos | DINT | Aktuelle Leitposition in Anwendereinheiten. |
| di_xOffs | DINT | Startposition der Leitachse für die Bewegung in Anwendereinheiten. |
| di_xFact | DINT | Weg der Leitachse für die Bewegung in Anwendereinheiten. |
| di_yFact | DINT | Verfahrweg der Achse in Anwendereinheiten. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein ist aktiv und wartet, dass die Leitposition die Startposition di_xOffs erreicht. |
| x_CamActive | BOOL | TRUE: Die Bewegungsausführung ist gestartet. Die Achse bewegt sich in Abhängigkeit der Masterbewegung. |
| di_yPos | DINT | Sollposition der Achse in 1/100 Anwendereinheiten. Diese Position kann z.B. direkt an die Technologiebausteine TB_SyncLin oder TB_SyncRot am Eingang di_yPosAdd angeschlossen werden. |

TB_ReadGCodeBuffer
Mit diesem Funktionsbaustein wird der G-Code-Puffer des MC_MovePath gelesen. Die G-Code-Befehle werden aufsteigend sortiert, beginnend mit dem gerade aktiven Befehl. Die Tabelle wird automatisch aktualisiert, bei Änderung des G-Code-Buffer ArrayIndex.
Empfohlene Task: Event
Verwendete Bibliotheken: MC_SYS_40bd09 oder höherMOTION_CONTROL_40bd11 oder höherMOTION_TYPES_40bd11 oder höherTECH_TYPES_40bd12 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | TRUE: Freigabe des Bausteins, damit wird das Auslesen des G-Code-Puffers gestartet. |
| i_GetGCodeLines | INT | Anzahl der benötigten G-Code-Zeilen [1..20] |
| i_CurrentGCodeDisplayBuffer | INT | Aktueller Schritt/Index des G-Code-Puffers |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein ist beschäftigt und liest den G-Code-Puffer aus FALSE: Baustein ist im StandBy |
| x_Error | BOOL | TRUE: Baustein hat einen Fehler. |
| w_ErrorID | WORD | Wenn x_Error = TRUE wird an diesem Ausgang eine detaillierte Fehlermeldung ausgegeben. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| a_GCodeDisplay | MC_GCodeDisplayString_BMARRAY | MovePath G-Code-Puffer |
| a_GCodeBuffer | a_GCodeBufferStringArray | G-Code array |

TB_RtcDateToString
Der Funktionsbaustein TB_RtcDateToString konvertiert das RTC-Datum von HEX in einen String.
Die Ausgabe erfolgt in zwei Formaten:
Empfohlene Task: Cyclic/Event
Verwendete Bibliotheken: keine
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| dw_PSB02_RTC_Date | DWORD | Eingangswert, der das Datum im RTC-Format (hexadezimal) enthält. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| s_RTC_String_DE | STRING | Ausgabewert, der das Datum im Format DD.MM.YYYY (deutsches Format) enthält. |
| s_RTC_String_EN | STRING | Ausgabewert, der das Datum im Format YYYY-MM-DD (internationales Format) enthält. |

TB_RtcTimeToString
Der Funktionsbaustein TB_RtcTimeToString konvertiert die empfangene RTC-Zeit (im HEX-Format) in ein HH:MM:SS-Format. Optional ist eine Anzeige im 12h-Format möglich, in diesem Fall wird entsprechend der AM/PM-Suffix ergänzt.
Empfohlene Task: Cyclic/Event
Verwendete Bibliotheken: keine
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_IsAMPM | BOOL | Gibt an, ob die Uhrzeit im 12h-Format angezeigt werden soll (TRUE) oder nicht (FALSE). Wenn ja, wird der AM/PM-Suffix entsprechend ergänzt. |
| dw_PSB02_RTC_Time | DWORD | Eingangswert, der die Zeit im RTC-Format (hexadezimal) enthält. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| s_RTC_String | STRING | Ausgabewert, der die konvertierte Uhrzeit im HH:MM:SS-Format enthält, wenn x_IsAMPM auf TRUE gesetzt ist, wird das AM/PM-Suffix hinzugefügt. |

TB_Select_PT1
Der Funktionsbaustein TB_Select_PT1 dient dazu, zwischen zwei Eingangswerten (r_InValue_1 und r_InValue_2) basierend auf dem Schalter x_Switch auszuwählen. Wenn x_Switch auf FALSE gesetzt ist, wird der Wert von r_InValue_1 ausgewählt, andernfalls wird der Wert von r_InValue_2 ausgewählt. Der ausgewählte Wert wird dann durch ein PT1-Übertragungsglied mit den Zeitkonstanten t_Time_1 oder t_Time_2 (abhängig von der Auswahl) und dem Verstärkungsfaktor r_Multiplier verarbeitet.
Der Funktionsbaustein überwacht die Wertübertragung und setzt die Statussignale x_Busy und x_Done entsprechend. Wenn die Übertragung aktiv ist (d.h., die Differenz zwischen Ausgangs- und Eingangswert größer als 0.25 ist), wird x_Busy auf TRUE gesetzt. Wenn der Zielwert erreicht ist (d.h., x_Switch aktiv ist und die Differenz zwischen Ausgangs- und Eingangswert kleiner oder gleich 0.25 ist), wird x_Done auf TRUE gesetzt.
Der Funktionsbaustein kann mit dem Eingang x_Enable ein- oder ausgeschaltet werden. Wenn x_Enable auf FALSE gesetzt ist, werden alle Ausgänge zurückgesetzt, und der Funktionsbaustein ist inaktiv.
Hinweis: Falls der Wert von r_Multiplier kleiner oder gleich 0 ist, wird der Verstärkungsfaktor auf 1 gesetzt, um eine korrekte Funktionsweise sicherzustellen.
Empfohlene Task: Cyclic/Event
Verwendete Bibliotheken: keine
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | Schaltet den Funktionsbaustein ein oder aus. Wenn FALSE, werden alle Ausgänge zurückgesetzt. |
| x_Switch | BOOL | Schalter zur Auswahl des Eingangswerts. FALSE wählt InValue_1 aus, TRUE wählt InValue_2 aus. |
| r_InValue_1 | REAL | Erster Eingangswert, der ausgewählt werden kann. |
| r_InValue_2 | REAL | Zweiter Eingangswert, der ausgewählt werden kann. |
| t_Time_1 | TIME | Zeitkonstante für den PT1-Übertragungsglied bei Auswahl von InValue_1. |
| t_Time_2 | TIME | Zeitkonstante für den PT1-Übertragungsglied bei Auswahl von InValue_2. |
| r_Multiplier | REAL | Proportionalitäts- oder Verstärkungsfaktor für den PT1-Übertragungsglied. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| r_OutValue | REAL | Ausgangswert nach der Verarbeitung durch das PT1-Übertragungsglied. |
| x_Active | BOOL | Signalisiert, ob der Funktionsbaustein aktiv ist. |
| x_Busy | BOOL | Signalisiert, dass eine Wertübertragung aktiv ist, wenn der Betrag der Differenz zwischen Ausgangs- und Eingangswert größer als 0.25 ist. |
| x_Done | BOOL | Signalisiert, dass der Zielwert erreicht wurde, wenn x_Switch aktiv ist und die Differenz zwischen Ausgangs- und Eingangswert kleiner oder gleich 0.25 ist. |

TB_ShiftReg
Mit dem TB_ShiftReg steht ein Schieberegister zur Verfügung, mit dem z.B. eine Produktverfolgung implementiert werden kann. Es können vier DINT-Variable geschoben werden. Das Schieberegister kann bis zu 256 Fächer enthalten.
Mit x_Enable=TRUE wird der Baustein aktiviert. Dabei werden alle Daten gelöscht (auf 0 gesetzt). Die erfolgte Aktivierung wird mit TRUE am Ausgang x_Active gemeldet. Ab diesem Zeitpunkt können Datensätze gespeichert und gelesen werden. Ein Datensatz besteht aus ein bis vier Datenworten.
Daten speichern:
Gespeichert wird der an di_InVal0..3 angelegte Datensatz mit der positiven Flanke am Eingang x_Put an der Position us_Position. Wurde der Datensatz übernommen, wird dies mit TRUE am Ausgang x_PutDone für einen Zyklus gemeldet.
Daten lesen:
Mit einer positiven Flanke am Eingang x_Get wird der Datensatz an der Position us_Position an di_OutVal0..3 ausgegeben. Die erfolgreiche Ausgabe wird mit TRUE am Ausgang x_GetDone für einen Zyklus angezeigt.
Daten schieben:
Mit einer positiven Flanke am Eingang x_Clock werden alle Datensätze an die nächste Position geschoben.
Schieberegister löschen:
Mit Wegnahme der Freigabe (x_Enable=FALSE) wird das Schieberegister gelöscht und alle gespeicherten Datensätze werden gelöscht.
Empfohlene Task: Event / Cyclic
Verwendete Bibliotheken: -
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | TRUE: Freigabe des Bausteins und löschen des Schieberegisters. Die erfolgreiche Freigabe wird an x_Active angezeigt. |
| x_Get | BOOL | Mit der positiven Flanke wird der Datensatz an der Position us_Position an di_OutVal0..3 ausgegeben. Die erfolgreiche Ausgabe wird an x_PutDone angezeigt. |
| x_Put | BOOL | Mit der positiven Flanke wird der Datensatz an di_InVal0..3 an der Position us_Position übernommen. Die erfolgreiche Übernahme wird an x_PutDone angezeigt. |
| di_InVal0 | DINT | Erstes Datenwort des Datensatzes, der in den FIFO eingetragen wird. |
| di_InVal1 | DINT | Zweites Datenwort des Datensatzes, der in den FIFO eingetragen wird. |
| di_InVal2 | DINT | Drittes Datenwort des Datensatzes, der in den FIFO eingetragen wird. |
| di_InVal3 | DINT | Viertes Datenwort des Datensatzes, der in den FIFO eingetragen wird. |
| us_Position | USINT | Position an der geschrieben/gelesen wird. |
| x_Clock | BOOL | Mit einer positiven Flanke werden alle Fächer eine Position weiter geschoben. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein aktiv. Es können Datensätze geschrieben und gelesen werden. |
| x_GetDone | BOOL | TRUE: Zeigt für einen Zyklus an, dass die an di_OutVal0..3 ausgegebenen Daten gültig sind. |
| x_PutDone | DINT | TRUE: Zeigt für einen Zyklus an, dass die an di_InVal0..3 angelegten Daten übernommen sind. |
| di_OutVal0 | DINT | Erstes Datenwort des Datensatzes, das aus dem Schieberegister ausgelesen wurde. |
| di_OutVal1 | DINT | Zweites Datenwort des Datensatzes, das aus dem Schieberegister ausgelesen wurde. |
| di_OutVal2 | DINT | Drittes Datenwort des Datensatzes, das aus dem Schieberegister ausgelesen wurde. |
| di_OutVal3 | DINT | Viertes Datenwort des Datensatzes, das aus dem Schieberegister ausgelesen wurde. |

TB_SlipCtrl
Bei Vorschubsystemen, wie z.B. Folienvorschub, kann aufgrund mangelnder Reibung Schlupf entstehen.
Dieser Schlupf wird durch den FB TB_SlipCtrl kompensiert. Hierfür wird der Geschwindigkeits-Istwert des Encoders des Vorschubmotors mit dem Geschwindigkeits-Istwert eines zusätzlichen Encoders,
der über ein Encoderrad direkt auf dem Material, z.B. der Folie, sitzt, verglichen.
Aufgrund des gut geeigneten Regelalgorithmus ist es möglich, Schlupf bis maximal ca. 50% zu kompensieren. Dies geschieht ohne bleibende Regelabweichung.
Der maximale Einfluss bezüglich der Drehzahl kann durch di_CtrlLim begrenzt werden. Mit Hilfe des Ausgangs di_SlipPerc kann der aktuelle Schlupf überwacht und bei Bedarf auf zu großen Schlupf reagiert werden, wie z.B. Bahnriss oder Materialstau.
Im folgenden Bild sieht man, wie sich der Funktionsblock verhält, wenn die Materialgeschwindigkeit (z.B. Encoderrad) langsamer wird als der Vorschub.
Dann wird der Ausgang di_Vel insofern kompensiert, als dass dessen Wert im gleichen Maße erhöht wird, sodass der Materialvorschub weiterhin konstant bleibt.
Empfohlene Task: Event
Verwendete Bibliotheken: ARITHMETIC_xxbd00 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | TRUE:Aktivierung der Schlupfregelung, Ausgabe des korrigierten Drehzahlsollwerts di_Vel=di_SetVel+Korrektur. FALSE:Deaktivierung der Schlupfregelung, es wird di_Vel=di_SetVel ausgegeben. Es kann jederzeit während des Betriebs bzw. des laufenden Antriebs die Regelung aktiviert und deaktiviert werden. |
| di_SetVel | DINT | Drehzahlsollwert des Vorschubantriebs. Die Einheiten von di_SetVel und di_ActVel müssen gleich sein, in der Regel sind es Anwendereinheiten/Ts oder z.B. 1/100 Anwendereinheiten/Ts bei vorgeschalteten Technologiebausteinen. Ts ist die Zykluszeit der Sollwert-Eventtask. |
| di_ActVel | DINT | Drehzahlistwert des Zusatzencoders. Die Einheiten von di_SetVel und di_ActVel müssen gleich sein, in der Regel sind es Anwendereinheiten/Ts oder z.B. 1/100 Anwendereinheiten/Ts bei vorgeschalteten Technologiebausteinen. Ts ist die Zykluszeit der Sollwert-Eventtask. |
| di_CtrlLim | DINT | Begrenzung des Drehzahlkorrekturwertes in Prozent. Bei Nichtbelegung des Eingangs ist der Defaultwert 50 (%) wirksam, d.h. di_Vel ist somit maximal di_SetVel*1,5. |
| i_Kp | INT | Proportionalverstärkung der Schlupfregelung. Bei Nichtbelegung des Eingangs ist der Defaultwert 1 wirksam. Der optimale Wert für Kp ist 1. |
| u_SmoothNum | UINT | Glättung der Kompensation. Der Wert entspricht der Anzahl der Werte, über die geglättet wird. Bei Nichtbelegung des Eingangs ist der Defaultwert 20 wirksam, d.h. es wird über 20 Werte geglättet. |
| i_T_Cycle | INT | Aufrufintervall der Event-Task in der TB_SlipCtrl aufgerufen wird in ms. Gültige Werte sind 1ms, 2ms, 4ms, 8ms. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE:Schlupfregelung aktiv. FALSE:Schlupfregelung nicht aktiv. |
| di_Vel | DINT | Korrigierte Solldrehzahl in der gleichen Einheit wie di_SetVel und di_ActVel! |
| di_SlipPerc | DINT | Aktueller Schlupf in Prozent. Wert dient der Anzeige und/oder Überwachung. |
| di_CompPerc | DINT | Aktuelle Kompensation in Prozent. Wert dient der Anzeige und/oder Überwachung. |
| di_SlipUnits | DINT | Aktueller Schlupf in Einheiten oder 1/x Einheiten. Wert dient der Anzeige, Überwachung oder als Messwert für eine Optimierung. |

TB_StateMonitor_IAX
Dieser Baustein kann eingesetzt werden, um die States einer Statemachine (CASE) in einer POE zu monitoren und zu loggen
Allgemeine Beschreibung
Dieser Baustein kann zur detailierten Diagnose einer Statemachine genutzt werden. Dabei wird jeder State in einem Statustrace in Form seines Wertes, seiner Bezeichnung mitgeloggt. Auch die jeweilige Zeit in dem State wird in Millisekunden erfasst. Zusätzlich kann über den Eingang "x_EnableUsrLog" ein Userlogging auf dem PCC aktiviert werden, wobei die erfassten Werte dann auch in dem Kommandozeilen-Fenster des PCCs erscheinen. Außerdem kann man die Ausgagen auch unter D:\bm\log\PLC.log einsehen.
Dieser FB wird einfach an das Ende einer Statemachine gehängt und dort instanziert. Er arbeitet sobald er aufgerufen wird.
Damit das Userlogging auf dem PCC auch aktiv ist, muss das in einer Konfigurationsdatei freigeschaltet werden.
Diese Konfigurationsdatei liegt unter "D:\bm\boot" und heißt "PCC_PLC_001.INI". Dort muss dann der Eintrag "x_EnableUsrLog" auf 1 gesetzt werden
| Resourcenbindung: | IAX_40/BMI_S_PCC03 |
| Empfohlene Task: | CYCLIC/EVENT |
| Verwendete Bibliotheken: | BM_ReportUSR_40bd00 TECH_TYPES_40bd10 TECH_FB_STRUCTS_40bd01t1 |
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| ud_TimeInState | UDINT | Dieser Eingang erhält den Timeout-Zeitwert in ms, welcher ein State in diesem verweilen kann, bis der Ausgang x_Timeout gesetzt wird. Ist der Wert gleich 0 wird keine Timeout-Überwachung vorgenommen. |
| i_State | INT | Hier wird der State der Statemachine verknüpft. |
| s_State | STRING | Hier kann der Statename angegeben werden. |
| s_POU_Name | STRING | Dieser Eingang ist relevant für das Userlogging. Damit man in den Loggingeinträgen bei der Verwendung mehrerer FB-Instanzen unterscheiden kann, woher der Loggingeintrag stammt, kann dieser einer POU zugeordnet werden. |
| x_EnableUsrLog | BOOL | Hiermit wird das oben beschriebene Userlogging auf dem PCC aktiviert. (siehe Allgemeine Beschreibung) |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Timeout | BOOL | Wird gesetzt, sobald der State die mit dem Eingang "ud_TimeInState" parametrierbare Grenze in Millisekunden überschritten hat |
| ud_TimeInState | UDINT | Zeigt die aktuell in dem State verbrachte Zeit in ms an |
| i_CurrentIndex | INT | Hier wird der aktuell verwendete Index des _StatusTrace-Arrays angegeben. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| _StatusTrace | STATE_TRACE_DATA_ARRAY (in TECH_TYPES) | In dieses Array hat ein Größe von 128 Feldern und hier werden folgende Loggingeinträge der einzelnen States erfasst: » i_State: Der State in dem geloggt wurde » s_State: Der Name des States als STIRNG » ud_TimeInState: Die in diesem State verbrachten Millisekunden |
TB_SyncCam_Init
Mit diesem Baustein kann die Synchronbewegung der Technologiebausteine TB_SyncLin und TB_SyncRot ersetzt werden. Standardmäßig wird hier eine Gerade verwendet, so dass sich die Achse winkel- und geschwindigkeitssynchron zum Master bewegt.
Folgende Bedingungen sind für Anwender-Synchronkurven einzuhalten.
-Die Steigung am Anfang und am Ende muss gleich sein.
-Die Krümmung am Anfang und Ende muss null sein.
-Die Kurve muss aus 512 Stützpunkte bestehen
Die Kurve muss in x- und y-Richtung auf 0…16.777.216 normiert sein.
x-Richtung:
Es werden 512 Stützpunkte für die x-Positionen [0]0, [1]32.768, [2]65.536, …, [511]16.744.448 vorgegeben und der zugehörige y-Wert wird in der Tabelle _SyncCam abgelegt. Der x-Wert wird nicht abgelegt.
y-Richtung:
Der y-Wert bei der ersten x-Position ist _SyncCam[0]=0. Der Wert ist immer 0. Der letzte Wert der Kurve wäre der 513. Wert, also _SyncCam[512]=16.777.216. Da die Kurve jedoch nur bis _SyncCam[511] definiert wird, sind die Punkte so zu normieren, dass der 513. Wert 16.777.216 ist. Für eine einfache Gerade ist _SyncCam[511] folglich 16.744.448.
Beim Einsatz der Anwender-Synchronkurve ist zu beachten, dass der SEP frühestens am Ende der Anwender-Synchronkurve erfolgen darf, da sich sonst ein Ruck oder Stoß beim Eintritt in die Umkehr ergeben kann. Die Bewegung nach der Anwender-Synchronkurve bis zum SEP erfolgt mit einer Geraden.
Empfohlene Task: Cyclic, einmalige Ausführung bei Programmstart oder Änderung der Kurve.
Verwendete Bibliotheken: TECH_TYPES_xxbd05 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | TRUE: Die Anwender-Synchronkurve wird initialisiert und für die Verwendung mit TB_SyncRot und TB_SyncLin vorbereitet. |
| di_SX_Cam | DINT | Skalierung der normierten Kurve in x-Richtung in Anwenderleiteinheiten. |
| di_SY_Cam | DINT | Skalierung der normierten Kurve in y-Richtung in Anwendereinheiten. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Ok | BOOL | TRUE: Anwender-Synchronkurve verfügbar. |
| i_Result | INT | Meldungsnummer des Bausteins. Siehe Fehlertabelle. |
| s_ResTxt | STRING | Meldungstext des Bausteins. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| _SyncCam | CAM_POINTS | Stützpunkte der normierten Anwender-Synchronkurve. |
| _SyncDat | TB_SYNC_TYPE | Initialisierungsparameter für die Bausteine TB_SyncRot bzw. TB_SyncLin. |

TB_TimeToTravel
Um z.B. Totzeiten zu kompensieren oder vorzusteuern ist es erforderlich, den Weg, den eine Achse während einer bestimmten Zeit zurücklegen wird, vor zu berechnen. Die Funktion TB_TimeToTravel berechnet diesen Weg (Typ UDINT). In Kombination mit dem FB TB_MasterEngine kann der Weg auch während der Beschleunigungs- und Bremsphase exakt berechnet werden.
Die Funktion berechnet den Verfahrweg in Einheiten, den eine Achse während einer bestimmten Zeit zurücklegen wird.
Reale Leitachse:
Wird z.B. mit einer realen Leitachse gearbeitet, so hat man nur die aktuelle Geschwindigkeit zur Verfügung. Da keine Information über die Dauer der Beschleunigung vorhanden ist, ist die Berechnung nur für den konstanten Betrieb exakt, während der Beschleunigung entsteht ein Fehler. Nur der Eingang di_VelAct_s kann angeschlossen werden.
Virtuelle Leitachse:
Da bei Verwendung einer virtuellen Leitachse (FB TB_MasterEngine) die Geschwindigkeit, die erreicht werden soll und auch die Größe und Dauer der Beschleunigung bekannt sind, erfolgt die Berechnung des Verfahrweges fehlerfrei. Alle Eingänge müssen belegt werden, sie stehen am FB TB_MasterEngine zur Verfügung.
Empfohlene Task: Event
Verwendete Bibliotheken: -
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| u_Time_ms | UINT | Zeit in ms, für die der Weg in Einheiten berechnet wird. Es sind maximal Zeiten bis 5000 ms möglich, wird ein größerer Wert angeschlossen, wird dieser intern auf 5000 ms begrenzt. |
| ud_TimeAcc_ms | UDINT | Restliche Beschleunigungszeit des virtuellen Masters in ms (Ausgang FB TB_MasterEngine). |
| di_VelSet_s | DINT | Sollgeschwindigkeit des virtuellen Masters in Einheiten/s (Ausgang FB TB_MasterEngine). |
| di_VelAct_s | DINT | Istgeschwindigkeit des realen oder virtuellen Masters in Einheiten/s (Ausgang FB TB_MasterEngine). |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| TB_TimeToTravel | DINT | Berechneter Weg in Einheiten, den die Achse in der vorgegebenen Zeit u_Time_ms zurücklegen wird. |

XAND
Die Funktions XAND führt eine logische OR-AND-Verknüpfung der mit den beiden Eingangssignalen IN1 und IN2 verbundenen Operanten aus.
Das Ausgangssignal wird den Zustand "1" (hoch) haben, wenn entweder das erste und das zweite Eingangssignal beide den Zustand "1" haben oder beide Eingangssignale den Zustand "0" haben. Andernfalls wird der Ausgang den Zustand "0" (niedrig) haben.
Empfohlene Task: Cyclic/Event
Verwendete Bibliotheken: keine
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| IN1 | Bool | Erste Eingangswert. |
| IN1 | Bool | Zweiter Eingangswert. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| OUT | BOOL | Ausgangssignal |
