n
n
kVA
kVA
Compiler – Beispiele
18
f
f
Compiler Programmgerüst
i
i
P
Hz
Hz
P
// Betriebsart "Referenzieren"
case HOMING:
// Betriebsart "Positionieren"
case POSITIONING:if ((lDriveState> =0xA)&&(MY_REFERENCED))
//Programmierfehler - unzulässiger Zustand
default:
}//Ende switch (lGlobalStateMachine)
//Prozesseingangsdaten neu bilden und an SPS senden
fnBuildStatusWord();
_GetSys(lActVelocity,GS_ACTSPEED); //Istdrehzahl lesen
tPE.PI2 = lActVelocity;
lActPosition = ActPos_Mot; // Istposition
tPE.PI3 = (lScalingDenominator * lActPosition) / lScalingNumerator; //Istposition
_SetSys(SS_PIDATA, tPE.Len); //PD abschicken
}
/*=============================================
= Funktion: fnBuildStatusWord()
= Hier werden Bit 0-7 des Statuswortes gebildet
= und bei Fehler die anderen Ausgänge durch den
= Fehlercode ersetzt.
===============================================*/
fnBuildStatusWord()
{
_BitMove(lPE_StatusWord,1, StatusWord,2); //Umrichter betriebsbereit
_BitMove(lPE_StatusWord,2, StatusWord,20); //IPOS referenziert
_BitMove(lPE_StatusWord,3, StatusWord,19); //Zielposition erreicht
_BitMoveNeg(lPE_StatusWord,4, StatusWord,1); //Fehler
if ( !MY_NO_ERROR )
{ // im Fehlerfall die Statusbits der Betriebsarten mit Fehlercode
// überschreiben
lPE_StatusWord = lPE_StatusWord & (lErrorCode << 8);
}
tPE.PI1 = lPE_StatusWord ;
}//end fnBuildStatusWord()
274
if (lDriveState> =0xA)
{
if (lOpMode==JOGGING)
lGlobalStateMachine = JOGGING;
if (lOpMode==DISABLE)
lGlobalStateMachine = DISABLE;
if (lOpMode==POSITIONING)
lGlobalStateMachine = POSITIONING;
}
else
lGlobalStateMachine = DISABLE;
break;
{
if (lOpMode==JOGGING)
lGlobalStateMachine = JOGGING;
if (lOpMode==HOMING)
lGlobalStateMachine = HOMING;
if (lOpMode==DISABLE)
lGlobalStateMachine = DISABLE;
}
else
lGlobalStateMachine = DISABLE;
break;
_AxisStop( AS_PSTOP );
lGlobalStateMachine = lOpMode = -1;
break;
//Statuswort bilden
// Istdrehzahl ausgeben
Handbuch – IPOSplus®