FB_CTRL_MULTIPLE_PWM_OUT

FB_CTRL_MULTIPLE_PWM_OUT 1:

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

FB_CTRL_MULTIPLE_PWM_OUT 2:

Beschreibung des Ausgangsverhaltens 2

FB_CTRL_MULTIPLE_PWM_OUT 3:

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.

FB_CTRL_MULTIPLE_PWM_OUT 4: VAR_INPUT

VAR_INPUT
    eMode    : E_CTRL_MODE;
END_VAR

Name

Typ

Beschreibung

eMode

E_CTRL_MODE

Eingang, der die Betriebsart des Bausteins festlegt.

FB_CTRL_MULTIPLE_PWM_OUT 5: 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 bError-Ausgang die Fehlernummer.

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_
PARAMS

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_
MULTIPLE_PWM_OUT_TIMES

Adresse des PWM-Times-Arrays

nPwmTimesConfig_SIZEOF

UINT

Größe des PWM-Times-Arrays in Bytes

pPwmOutputArray_ADR

POINTER TO ST_CTRL_
MULTIPLE_PWM_OUT_OUTPUTS

Adresse des PWM-Output-Arrays

nPwmOutputArray_SIZEOF

UINT

Größe des PWM-Output-Arrays in Bytes

pPwmData_ADR

POINTER TO ST_CTRL_
MULTIPLE_PWM_OUT_DATA

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
Pos

BOOL

PWM-Signal, wenn fPwmInput > 0.0

bPwmOutBit
Neg

BOOL

PWM-Signal, wenn fPwmInput < 0.0

bWaitTime
Active

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