Ich verstehe bei der Programmiersprache nur Bahnhof.
Bei FUP, AWL würde ich es etwas verstehen.
Wenn ich nach
Backup_Outfeed_1_CTU suche, kommt folgendes:
// Supervise bottle conveyor
backup.
Backup_Outfeed_1_CTU.CU=TrackRoutePtr_Main->PeriodicPitchSignal;
Backup_Outfeed_1_CTU.RESET=(!BottleDetection.DI_Backup_Outfeed_1 || Safety.ResetMessages);
CTU(&Backup_Outfeed_1_CTU);
TransportSystem.Outfeed_1_Backup_Cnt=Backup_Outfeed_1_CTU.CV;
//
Backup_Outfeed_2_CTU.CU=TrackRoutePtr_Main->PeriodicPitchSignal;
Backup_Outfeed_2_CTU.RESET=(!BottleDetection.DI_Backup_Outfeed_2 || Safety.ResetMessages);
CTU(&Backup_Outfeed_2_CTU);
if (Backup_Outfeed_2_CTU.CV>4) {
SetMessage(20,1);
}
// Head height adjustment.
{
static int nState=0;
static REAL fDeltaRangeEnc;
static REAL fDeltaEnc;
static REAL fDeltaRangePhys;
static REAL fCurrentPosition;
if (GlobalState.MachineType==540) {
// Linear potentiometer.
TrackingParams.HeightAdj.CurrentPositionEnc=TrackingParams.HeightAdj.AI_HeightAdj/32767.0f;
} else {
// Absolute encoder.
TrackingParams.HeightAdj.CurrentPositionEnc=((((DINT)(TrackingParams.HeightAdj.AbsEncPos<<10))/(1<<10)))/((REAL)(1<<18));
}
fDeltaRangeEnc=(TrackingParams.HeightAdj.RangeEnc[1]-TrackingParams.HeightAdj.RangeEnc[0]);
if (fabsf(fDeltaRangeEnc)>0.0001f) {
static REAL faFilterArray[200];
static int nFilterIndex=0;
static REAL fFilterSum=0;
fDeltaEnc=TrackingParams.HeightAdj.CurrentPositionEnc-TrackingParams.HeightAdj.RangeEnc[0];
fDeltaRangePhys=TrackingParams.HeightAdj.RangePhys[1]-TrackingParams.HeightAdj.RangePhys[0];
fCurrentPosition=TrackingParams.HeightAdj.RangePhys[0]+(fDeltaEnc*fDeltaRangePhys)/fDeltaRangeEnc;
fFilterSum+=fCurrentPosition;
fFilterSum-=faFilterArray[nFilterIndex];
faFilterArray[nFilterIndex]=fCurrentPosition;
nFilterIndex=(nFilterIndex+1)%200;
TrackingParams.HeightAdj.CurrentPositionPhys=fFilterSum/200;
}
// Reset contactors.
TrackingParams.HeightAdj.DO_HeightAdj_Neg=0;
TrackingParams.HeightAdj.DO_HeightAdj_Pos=0;
// Drive to target position if requested.
if (TrackingParams.HeightAdj.MoveToTargetPositionReq) {
static REAL fHysteresis=2.0f;
static REAL fBrakeDistance=0.05f;
static TOF_typ tof;
tof.PT=1000;
tof.IN=(nState==10 || nState==20);
TOF(&tof);
if (nState==0) {
if (TrackRoutePtr_Main->PresentTrackItemCount>0) {
SetMessage(21,1);
} else if (TransportSystem.MachineActualVelocityBph>1) {
SetMessage(22,1);
} else {
static REAL f1;
f1=TrackingParams.HeightAdj.TargetPosition+fHysteresis+fBrakeDistance;
if (fCurrentPosition<f1) {
nState=10;
} else {
nState=20;
}
}
}
if (nState==10) {
// Move up to hysteresis.
if (fCurrentPosition<(TrackingParams.HeightAdj.TargetPosition+fHysteresis+fBrakeDistance)) {
TrackingParams.HeightAdj.DO_HeightAdj_Pos=1;
} else {
nState=12;
}
} else if (nState==12) {
if (tof.Q) {
nState=20;
}
} else if (nState==20) {
// Move down to target position.
if (fCurrentPosition>TrackingParams.HeightAdj.TargetPosition+fBrakeDistance) {
TrackingParams.HeightAdj.DO_HeightAdj_Neg=1;
} else {
nState=22;
}
} else if (nState==22) {
// Wait until standstill.
if (tof.Q) {
float fDelta=fCurrentPosition-TrackingParams.HeightAdj.TargetPosition;
if (fabsf(fDelta)<0.10f) {
TrackingParams.HeightAdj.MoveToTargetPositionDone=1;
nState=90;
} else {
fBrakeDistance-=fDelta;
nState=10;
}
}
} else if (nState==90) {
}
// Limit movement to positioning range.
if (TrackingParams.HeightAdj.DO_HeightAdj_Pos && TrackingParams.HeightAdj.CurrentPositionPhys>TrackingParams.HeightAdj.RangePhys[1]+fHysteresis+1.0f) {
SetMessage(23,1);
TrackingParams.HeightAdj.DO_HeightAdj_Pos=0;
} else if (TrackingParams.HeightAdj.DO_HeightAdj_Neg && TrackingParams.HeightAdj.CurrentPositionPhys<TrackingParams.HeightAdj.RangePhys[0]-1.0f) {
SetMessage(23,2);
TrackingParams.HeightAdj.DO_HeightAdj_Neg=0;
} else if (TrackingParams.HeightAdj.CurrentPositionPhys<TrackingParams.HeightAdj.RangePhys[0]-5.0f || TrackingParams.HeightAdj.CurrentPositionPhys>TrackingParams.HeightAdj.RangePhys[1]+fHysteresis+5.0f) {
SetMessage(23,3);
TrackingParams.HeightAdj.DO_HeightAdj_Pos=0;
TrackingParams.HeightAdj.DO_HeightAdj_Neg=0;
}
} else {
TrackingParams.HeightAdj.MoveToTargetPositionDone=0;
nState=0;
}
}