FB_CTRL_MULTIPLE_PWM_OUT
Dieser Baustein erzeugt aus mehreren Eingangssignalen PWM modulierte Ausgangssignale, wobei die Ausgangssignale zeitlich zueinander so angeordnet werden, dass möglichst wenige Ausgänge zeitgleich eingeschaltet sind. Durch diese zeitliche Anordnung wird das für die Stellglieder benötigte Leistungsmaximum reduziert.
Bei diesem erweiterten Baustein können neben dem Puls-Pausen-Verhältnis auch die minimale Einschaltdauer und die minimale Ausschaltdauer parametriert werden.
Beschreibung des Ausgangsverhaltens 1
Beschreibung des Ausgangsverhaltens 2
Um diesen Funktionsbaustein nutzen zu können, müssen vom Programmierer in der SPS die folgenden Arrays angelegt werden:
aPwmInput : ARRAY[1..nNumPwmOut] OF FLOAT;
aStWaitTimesConfig : ARRAY[1..nNumPwmOut] OF ST_CTRL_MULTIPLE_PWM_OUT_TIMES;
aStPwmOutputs : ARRAY[1.. nNumPwmOut] OF ST_CTRL_MULTIPLE_PWM_OUT_OUTPUTS;
aStPwmDataVars : ARRAY[1.. nNumPwmOut] OF ST_CTRL_MULTIPLE_PWM_OUT_DATA;
In das Array ar_fPwmInput werden die Eingangsgrößen für die einzelnen Kanäle des PWM-Bausteins geschrieben. In dem Array ar_stWaitTimesConfig kann der Programmierer die parametrierbaren Zeiten für die einzelnen Kanäle ablegen. Die Ausgangsbits werden von dem Funktionsbaustein in das Array ar_stPwmOutputs geschrieben. Die internen Daten, die der Baustein benötigt, werden in dem Array ar_stPwmDataVars abgelegt. Die in dem Array ar_stPwmDataVars enthaltenen Strukturen dürfen innerhalb des SPS-Programms keinesfalls geändert werden. Diese Vorgehensweise wird auch in dem unten aufgeführten Beispielprogramm dargestellt.
VAR_INPUT
VAR_INPUT
eMode : E_CTRL_MODE;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
eMode | E_CTRL_MODE | Eingang, der die Betriebsart des Bausteins festlegt. |
VAR_OUTPUT
VAR_OUTPUT
eState : E_CTRL_STATE;
bError : BOOL;
eErrorId : E_CTRL_ERRORCODES;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
eState | E_CTRL_STATE | State des Funktionsbausteins |
bError | BOOL | Liefert bei einem gesetzten |
eErrorId | E_CTRL_ERRORCODES | Wird TRUE, sobald ein Fehler eintritt. |
VAR_IN_OUT
VAR_IN_OUT
stParams : ST_CTRL_PWM_OUT_EXT_PARAMS;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
stParams | ST_CTRL_PWM_OUT_EXT_ | Parameterstruktur des PWM-Glieds |
stParams
besteht aus den folgenden Elementen:
TYPE ST_CTRL_MULTIPLE_PWM_OUT_PARAMS :
STRUCT
tTaskCycleTime : TIME;
tPWMPeriod : TIME;
nNumberOfPwmOutputs : USINT;
pPwmInputArray_ADR : POINTER TO FLOAT := 0;
nPwmInputArray_SIZEOF : UINT;
pPwmTimesConfig_ADR : POINTER TO ST_CTRL_MULTIPLE_PWM_OUT_TIMES;
nPwmTimesConfig_SIZEOF : UINT;
pPwmOutputArray_ADR : POINTER TO ST_CTRL_MULTIPLE_PWM_OUT_OUTPUTS;
nPwmOutputArray_SIZEOF : UINT;
pPwmData_ADR : POINTER TO ST_CTRL_MULTIPLE_PWM_OUT_DATA;
nPwmData_SIZEOF : UINT;
END_STRUCT
END_TYPE
Name | Typ | Beschreibung |
---|---|---|
tTaskCycleTime | TIME | Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird. |
tPWMPeriod | TIME | Periodendauer des PWM-Signals |
nNumberOfPwmOutputs | USINT | Anzahl der PWM-Ausgänge. [1...n] |
pPwmInputArray_ADR | POINTER TO FLOAT | Adresse des PWM-Input-Arrays |
nPwmInputArray_SIZEOF | UINT | Größe des PWM-Input-Arrays in Bytes |
pPwmTimesConfig_ADR | POINTER TO ST_CTRL_ | Adresse des PWM-Times-Arrays |
nPwmTimesConfig_SIZEOF | UINT | Größe des PWM-Times-Arrays in Bytes |
pPwmOutputArray_ADR | POINTER TO ST_CTRL_ | Adresse des PWM-Output-Arrays |
nPwmOutputArray_SIZEOF | UINT | Größe des PWM-Output-Arrays in Bytes |
pPwmData_ADR | POINTER TO ST_CTRL_ | Adresse des internen PWM-Data-Arrays |
nPwmData_SIZEOF | UINT | Größe des internen PWM-Data-Arrays in Bytes |
TYPE ST_CTRL_MULTIPLE_PWM_OUT_TIMES :
STRUCT
tMinOnTime : TIME;
tMinOffTime : TIME;
tMinWaitTime : TIME;
END_STRUCT
END_TYPE
Name | Typ | Beschreibung |
---|---|---|
tMinOnTime | TIME | Minimale Einschaltdauer des PWM-Ausgangs |
tMinOffTime | TIME | Minimale Ausschaltdauer des PWM-Ausgangs |
tMinWaitTime | TIME | Wartezeit zwischen den Umschaltvorgängen zwischen einem positiven und negativen Ausgangsignal |
TYPE ST_CTRL_MULTIPLE_PWM_OUT_OUTPUTS :
STRUCT
bPwmOutBitPos : BOOL;
bPwmOutBitNeg : BOOL;
bWaitTimeActive : BOOL;
END_STRUCT
END_TYPE
Name | Typ | Beschreibung |
---|---|---|
bPwmOutBit | BOOL | PWM-Signal, wenn fPwmInput > 0.0 |
bPwmOutBit | BOOL | PWM-Signal, wenn fPwmInput < 0.0 |
bWaitTime | BOOL | Ein TRUE an diesem Ausgang signalisiert, dass die Wartezeit zwischen dem Umschalten der Ausgangssignale aktiv ist. Dieser Ausgang kann dazu verwendet werden, einen eventuell vorhandenen I-Anteil in dem vorgeschalteten Regler für diese Zeit konstant zu halten. |
TYPE ST_CTRL_MULTIPLE_PWM_OUT_DATA :
STRUCT
Internal structure. This must not be written to.
END_STRUCT
END_TYPE