Nockensteuerung für FP0H
Dieser Befehl führt eine Nockensteuerung anhand der Parameter im angegebenen SDT und mit maximal 32 Sollwerten entsprechend dem Istwert des schnellen Zählers durch. Für jeden einzelnen Nockenausgang wird der Sollwert als Paar mit einem EIN- und einem AUS-Einstellwert festgelegt.
Immer, wenn ein Istwert einem Sollwert entspricht, kann ein Interrupt-Programm ausgeführt werden.
Eingang
Kanal des schnellen Zählers: 0–3
Anfangsadresse des Bereiches, der die Datentabelle enthält
Ausgang
Anfangsadresse (WR, WL oder WY) des Bereiches, der die Wortadresse für Ausgänge enthält, z.B.. BOOL32_OVERLAPPING_DUT. Wählen Sie die Größe (16 oder 32 Bits) entsprechend der mit diNumberOfTargetValuesAndOutputRelays festgelegten Anzahl aus.
Eingang
Erstellen Sie auf der Basis des folgenden Musters ihren eigenen SDT: F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT
Im SDT lassen sich folgende Parameter festlegen:
Steuercode
Wortadresse für Ausgänge
Anzahl der Sollwerte
(EIN/AUS-Einstellwerte von F165_HighSpeedCounter_Target_Values_OnOff_DUT)
Maximaler Sollwert
Einstellbereich: 1–2147483646 (16#1–16#7FFFFFFE)
Ausgang
Wenn die Anzahl der Sollwerte im Bereich zwischen 1–16 liegt, wird ein Wort verwendet. Wenn die Anzahl der Sollwerte im Bereich zwischen 17–32 liegt, werden zwei Worte verwendet.
Beispiel Wenn die Ausgangsadresse auf "Interner Merker", die Anfangswortadresse der Ausgangsadresse auf "0" und die Anzahl der Sollwerte auf "32" gesetzt ist, werden R0 bis R1F als Adresse für den Nockenausgang zugewiesen.
Wenn Sie den Ausgangsmerker (Y) festgelegt haben, werden Werte sowohl an den CPU-Ausgang als auch die Arbeitsspeicher ausgegeben.
Beispiel
1000–4999 R100: TRUE
7000–8999 R101: TRUE
Mit F165_HighSpeedCounter_Cam kann die Steuerung mit einem angegebenen maximalen Sollwert durchgeführt werden. Die Einstellungen zum Aktivieren/Deaktivieren der Maximalwertsteuerung und der maximale Sollwert werden in der Datentabelle festgelegt.
Abhängig von der Anzahl der Sollwerte und dem festgelegten maximalen Sollwert kann die Datentabelle zwischen 12 und 138 Worte enthalten.
Der maximale Sollwert am Ende der Datentabelle gilt nur, wenn die Sollwertsteuerung in dwCamControlCode auf 16#0010 (mit Maximalwert) festgelegt wird. Diese Einstellung kann undefiniert bleiben, wenn die Sollwertsteuerung auf 16#0000 (ohne Maximalwert) festgelegt ist.
Aktiviert |
Deaktiviert |
||
---|---|---|---|
Zählbereich |
0 bis Sollwert |
Negativer Minimalwert bis positiver Maximalwert |
|
Vorgang bei Überschreiten des Zählbereichs |
Vorwärtszählen: |
Wenn der Istwert den Sollwert überschreitet, wird der Zähler auf 0 gesetzt. |
Wenn der Istwert den positiven Maximalwert überschreitet, beginnt der Zähler wieder mit dem negativen Minimalwert. |
Rückwärtszählen: Der Zeiger der Datentabelle bewegt sich vom letzten Sollwert zu Sollwert 1. |
Wenn der Istwert unter 0 fällt, wird der Zähler auf den Sollwert gesetzt. |
Wenn der Istwert unter den negativen Minimalwert fällt, beginnt der Zähler wieder mit dem positiven Maximalwert. |
Der Ausgang ist abhängig vom EIN- und AUS-Einstellwert.
AUS-Einstellwert > EIN-Einstellwert
Wenn der Istwert größer oder gleich dem EIN-Einstellwert und kleiner als der AUS-Einstellwert ist, wird das entsprechende Ausgangsbit auf EIN gesetzt. Liegt der Istwert außerhalb des zulässigen Bereichs, wird das entsprechende Bit auf AUS gesetzt.
Vorwärtszählen: |
Rückwärtszählen: |
---|---|
AUS-Einstellwert (1) > EIN-Einstellwert (2) ![]() |
EIN-Einstellwert > AUS-Einstellwert
Wenn der Istwert kleiner als der EIN-Einstellwert und größer oder gleich dem AUS-Einstellwert ist, wird das entsprechende Ausgangsbit auf AUS gesetzt. Liegt der Istwert außerhalb des zulässigen Bereichs, wird das entsprechende Bit auf EIN gesetzt.
Vorwärtszählen: |
Rückwärtszählen: |
---|---|
EIN-Einstellwert (1) > AUS-Einstellwert (2) ![]() |
EIN-Einstellwert = AUS-Einstellwert
Liegt der Istwert außerhalb des zulässigen Bereichs, wird das entsprechende Bit auf AUS gesetzt.
Vorwärtszählen: |
Rückwärtszählen: |
---|---|
EIN-Einstellwert (1) = AUS-Einstellwert (2) ![]() |
Wählen Sie den Eingang des schnellen Zählers für den gewünschten Kanal in den Systemregistern aus.
Wenn ein schneller Zählerbefehl ausgeführt wird, wird der Kontrollmerker für den benutzten Kanal (z.B. sys_bIsHscChannel0ControlActive) auf TRUE. Andere Schnelle-Zählerbefehle, die denselben Kanal nutzen, können nicht ausgeführt werden, solange der Kontrollmerker auf TRUE steht.
Dieser Befehl kann auf maximal zwei Kanälen gleichzeitig ausgeführt werden.
Um die Ausführung eines Befehls abzubrechen, setzen Sie Bit 3 des Datenregisters, in dem der Steuercode für den schnellen Zähler (sys_wHscOrPulseControlCode) gespeichert wird, auf TRUE. Der Kontrollmerker "Schneller Zähler" wechselt dann zu FALSE. Um die Ausführung des schnellen Zählerbefehls wieder zu aktivieren, setzen Sie Bit 3 auf FALSE zurück. Wenn Sie Bit 3 von sys_wHscOrPulseControlCode auf TRUE setzen, wird dadurch auch die Maximalwertsteuerung deaktiviert. Wird die Maximalwertsteuerung gestoppt, wird die Nockenausgabe gehalten und der schnelle Zähler zählt weiter.
Den Istwert des schnellen Zählers zurücksetzen oder einstellen, bevor der Befehl aktiviert wird.
Wenn der Istwert des Kanals während der Befehlsausführung überschrieben wird, kann es zu unerwartetem Verhalten kommen.
Wenn der Befehl im Hauptprogramm ausgeführt wird, muss die minimale Zeitspanne zwischen benachbarten Sollwerten größer sein als die SPS-Zykluszeit.
Wenn der Befehl in einem Interrupt-Programm ausgeführt wird, muss die minimale Zeitspanne zwischen benachbarten Sollwerten größer sein als die maximale Ausführungszeit des Interrupt-Programms.
Wenn ein Rücksetzeingang oder Software-Reset verwendet wird, muss Sollwert 1 eine Ganzzahl und ³ 1 sein.
Wenn die Maximalwertsteuerung zusammen mit einem Rücksetzeingang oder Software-Reset verwendet wird, verwenden sie diese nicht gleichzeitig.
Wird der Hardware-Reset oder Software-Reset während der Steuerung mit schnellem Zähler ausgeführt, wird der Istwert des schnellen Zählers auf 0 zurückgesetzt. Der als Nockenausgang verwendete Ausgang ist der Ausgang, der dem Istwert 0 entspricht.
Das Interrupt-Programm INTn kann auch immer dann gestartet werden, wenn der Istwert den Sollwert erreicht. Für diesen Vorgang sollte die Aktivierung des Interrupt-Programms vom Interrupt-Steuerungsbefehl ICTL zugelassen werden.
wenn der Sollwert > maximaler Sollwert ist.
wenn der Sollwert = 0 ist.
wenn die Sollwerte nicht in aufsteigender Folge sortiert werden
wenn der Sollwert > maximaler Sollwert ist.
wenn der Sollwert = 0 ist.
wenn die Sollwerte nicht in aufsteigender Folge sortiert werden
Der SDT F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT ist in der FP Library enthalten und lässt sich als Beispiel nutzen.
In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
bEnable: BOOL:=FALSE;
dutF165FP0H_CH0: F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT;
END_VAR
VAR_EXTERNAL
g_dutCamControl_WY0: BOOL32_OVERLAPPING_DUT;
END_VAR
Wenn die Variable bEnable auf TRUE gesetzt wird, wird die Funktion ausgeführt.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,bEnable,5,1,7,3,);
B(B_F,F165_HighSpeedCounter_Cam!,,14,0,28,5,,?DEN?HiHscChannel?Ds_dutDataTable?AENO?CdutBitOutputs);
B(B_VARIN,,0,12,2,14,4,);
B(B_VAROUT,,g_dutCamControl_WY0,28,2,30,4,);
B(B_VARIN,,dutF165FP0H_CH0,12,3,14,5,);
L(1,0,1,6);
L(1,2,5,2);
L(7,2,14,2);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bEnable) then
F165_HighSpeedCounter_Cam(iHscChannel := 0, s_dutDataTable := dutF165FP0H_CH0,
dutBitOutputs => g_dutCamControl_WY0);
end_if;