Checked in final Project as an Backup

This commit is contained in:
Michael Rest
2013-04-27 12:07:38 +02:00
parent 43e87340bd
commit 7f9153798c
1805 changed files with 128449 additions and 0 deletions

6
LastUser.set Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.207?>
<ProjectSettings xmlns="http://br-automation.co.at/AS/ProjectSettings">
<Print Header="%lProject: %n%c%x" Footer="%cPage: %p" />
<ConfigurationManager ActiveConfigurationName="Conf-HW" />
</ProjectSettings>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.207?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="DataObject" Language="Apt" Description="Acp Parameter Shafts">axShafta</Object>
<Object Type="DataObject" Language="Apt" Description="Acp Parameter Shafts (Simulation)">axShaftSa</Object>
<Object Type="DataObject" Language="Apt" Description="Acp Parameter Table Extra Axis">axExtraa</Object>
<Object Type="DataObject" Language="Apt" Description="Acopos Parameter Table Master">vShafta</Object>
<Object Type="DataObject" Language="Apt" Description="Acopos Parameter Table Master (Simimlulation)">vShaftSa</Object>
<Object Type="DataObject" Language="Apt" Description="Acp Parameter for Office Motor (24V)">motor_office</Object>
<Object Type="DataObject" Language="Apt" Description="Acp Parameter for motor simulation">motor_sim</Object>
<Object Type="DataObject" Language="Apt" Description="Acp Parameter Shafts">axShaftPS</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>axExtraa.apt</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.144?>
<AcoposParameterTable>
<Root Name="Parameters">
<Group Name="EncoderSS2">
<Parameter Name="ENCOD_TYPE" ID="97" Value="ncINC" Description="Encoder1: Type" />
<Parameter Name="SCALE_ENCOD_INCR" ID="109" Value="16777216" Description="Encoder1: Encoder scaling: increments per SCALE_ENCOD_MOTOR_REV motor revolutions" />
<Parameter Name="ENCOD_LINE_CHK_IGNORE" ID="727" Value="0" Description="Encoder1: Ignore check" />
<Parameter Name="ENCOD_COUNT_DIR" ID="96" Value="ncSTANDARD" Description="Encoder1: Load scaling: Count direction" />
</Group>
<Group Name="DRE90L">
<Group Name="General parameters">
<Parameter Name="MOTOR_TYPE" ID="30" Value="1" Description="Motor: Type" />
<Parameter Name="MOTOR_COMPATIBILITY" ID="31" Value="513" Description="Motor: Software compatibility" />
<Parameter Name="MOTOR_WIND_CONNECT" ID="46" Value="1" Description="Motor: Winding connection" />
<Parameter Name="MOTOR_POLEPAIRS" ID="47" Value="2" Description="Motor: Number of pole-pairs" />
</Group>
<Group Name="Brake parameters">
<Parameter Name="MOTOR_BRAKE_CURR_RATED" ID="42" Value="0.69999999" Unit="A" Description="Motor holding brake: Rated current" />
<Parameter Name="MOTOR_BRAKE_TORQ_RATED" ID="43" Value="20" Unit="Nm" Description="Motor holding brake: Rated torque" />
<Parameter Name="MOTOR_BRAKE_ON_TIME" ID="44" Value="0.40000001" Unit="s" Description="Motor holding brake: Engaging delay" />
<Parameter Name="MOTOR_BRAKE_OFF_TIME" ID="45" Value="0.30000001" Unit="s" Description="Motor holding brake: Release delay" />
</Group>
<Group Name="Thermo sensor parameters">
<Parameter Name="MOTOR_TEMPSENS_PAR1" ID="64" Value="0" Description="Temperature sensor: Parameter 1" />
<Parameter Name="MOTOR_TEMPSENS_PAR2" ID="65" Value="0" Description="Temperature sensor: Parameter 2" />
<Parameter Name="MOTOR_TEMPSENS_PAR3" ID="66" Value="0" Description="Temperature sensor: Parameter 3" />
<Parameter Name="MOTOR_TEMPSENS_PAR4" ID="67" Value="0" Description="Temperature sensor: Parameter 4" />
<Parameter Name="MOTOR_TEMPSENS_PAR5" ID="68" Value="0" Description="Temperature sensor: Parameter 5" />
<Parameter Name="MOTOR_TEMPSENS_PAR6" ID="69" Value="0" Description="Temperature sensor: Parameter 6" />
<Parameter Name="MOTOR_TEMPSENS_PAR7" ID="70" Value="0" Description="Temperature sensor: Parameter 7" />
<Parameter Name="MOTOR_TEMPSENS_PAR8" ID="71" Value="0" Description="Temperature sensor: Parameter 8" />
<Parameter Name="MOTOR_TEMPSENS_PAR9" ID="72" Value="0" Description="Temperature sensor: Parameter 9" />
<Parameter Name="MOTOR_TEMPSENS_PAR10" ID="73" Value="0" Description="Temperature sensor: Parameter 10" />
<Parameter Name="MOTOR_THERMAL_CONST" ID="75" Value="0" Unit="s" Description="Motor: Thermal time constant (for MOTOR_COMPATIBILITY 0x0202)" />
</Group>
<Group Name="Motor parameters">
<Parameter Name="MOTOR_VOLTAGE_RATED" ID="48" Value="400" Unit="V" Description="Motor: Rated voltage" />
<Parameter Name="MOTOR_VOLTAGE_CONST" ID="49" Value="0" Unit="mV*min" Description="Motor: Voltage constant" />
<Parameter Name="MOTOR_SPEED_RATED" ID="50" Value="1430" Unit="1/min" Description="Motor: Rated speed" />
<Parameter Name="MOTOR_SPEED_MAX" ID="51" Value="2860" Unit="1/min" Description="Motor: Maximum speed" />
<Parameter Name="MOTOR_TORQ_STALL" ID="52" Value="12.102806" Unit="Nm" Description="Motor: Stall torque" />
<Parameter Name="MOTOR_TORQ_RATED" ID="53" Value="12.102806" Unit="Nm" Description="Motor: Rated torque" />
<Parameter Name="MOTOR_TORQ_MAX" ID="54" Value="69.756073" Unit="Nm" Description="Motor: Peak torque" />
<Parameter Name="MOTOR_TORQ_CONST" ID="55" Value="0" Unit="Nm/A" Description="Motor: Torque constant" />
<Parameter Name="MOTOR_CURR_STALL" ID="56" Value="3.3499999" Unit="A" Description="Motor: Stall current" />
<Parameter Name="MOTOR_CURR_RATED" ID="57" Value="3.3499999" Unit="A" Description="Motor: Rated current" />
<Parameter Name="MOTOR_CURR_MAX" ID="58" Value="17.746876" Unit="A" Description="Motor: Peak current" />
<Parameter Name="MOTOR_WIND_CROSS_SECT" ID="59" Value="0" Unit="mm²" Description="Motor: Line cross section" />
<Parameter Name="MOTOR_STATOR_RESISTANCE" ID="60" Value="3.9323912" Unit="Ohm" Description="Motor: Stator resistance" />
<Parameter Name="MOTOR_STATOR_INDUCTANCE" ID="61" Value="0.023945207" Unit="Henry" Description="Motor: Stator inductance" />
<Parameter Name="MOTOR_INERTIA" ID="62" Value="0.00095999998" Unit="kgm²" Description="Motor: Moment of inertia" />
<Parameter Name="MOTOR_COMMUT_OFFSET" ID="63" Value="0" Unit="rad" Description="Motor: Commutation offset" />
<Parameter Name="MOTOR_ROTOR_RESISTANCE" ID="76" Value="3.1152377" Unit="Ohm" Description="Motor: Rotor resistance" />
<Parameter Name="MOTOR_ROTOR_INDUCTANCE" ID="77" Value="0.023945207" Unit="Henry" Description="Motor: Rotor inductance" />
<Parameter Name="MOTOR_MUTUAL_INDUCTANCE" ID="78" Value="0.35375795" Unit="Henry" Description="Motor: Mutual inductance" />
<Parameter Name="MOTOR_MAGNETIZING_CURR" ID="79" Value="1.3399999" Unit="A" Description="Motor: Magnetizing current" />
<Parameter Name="MOTOR_TAU_THERM" ID="849" Value="0" Unit="s" Description="Motor: Thermal time constant" />
</Group>
<Group Name="Isolation parameters">
<Parameter Name="MOTOR_WIND_TEMP_MAX" ID="74" Value="130" Unit="°C" Description="Motor: Limit temperature" />
</Group>
</Group>
</Root>
</AcoposParameterTable>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.207?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>axShaftPS.apt</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.207?>
<AcoposParameterTable>
<Root Name="Parameters">
<Parameter Name="ENCOD_LINE_CHK_IGNORE" ID="727" Value="24" Description="Encoder1: Ignore check" />
<Parameter Name="OVERRIDE" ID="116" Value="1" Disabled="TRUE" Description="Basis movements: Override" />
</Root>
</AcoposParameterTable>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>axShaftSa.apt</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<AcoposParameterTable>
<Root Name="Parameters" />
</AcoposParameterTable>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>axShafta.apt</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=?>
<AcoposParameterTable>
<Root Name="Parameters">
<Parameter Name="OVERRIDE" ID="116" Value="1" Disabled="TRUE" Description="Basis movements: Override" />
</Root>
</AcoposParameterTable>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>motor_office.apt</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.80.15?>
<AcoposParameterTable>
<Root Name="Parameters">
<Parameter Name="PHASE_MON_IGNORE" ID="80" Value="1" Description="Power mains: Ignore phase failure" />
<Parameter Name="UDC_NOMINAL" ID="390" Value="24" Unit="V" Description="CTRL DC bus: Nominal voltage" />
</Root>
</AcoposParameterTable>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>motor_sim.apt</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.80.15?>
<AcoposParameterTable>
<Root Name="Parameters">
<Parameter Name="CMD_SIMULATION" ID="110" Value="ncSW_ON" Description="Simulation mode: Command" />
</Root>
</AcoposParameterTable>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>vShaftSa.apt</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<AcoposParameterTable>
<Root Name="Parameters" />
</AcoposParameterTable>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>vShafta.apt</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<AcoposParameterTable>
<Root Name="Parameters" />
</AcoposParameterTable>

View File

@@ -0,0 +1,36 @@
(*//-----------------------------------------------------------------------------------------------------*)
(*//MC FunctionBlocks*)
VAR
Axis_MC_BR_ReadDriveStatus : MC_BR_ReadDriveStatus := (0);
Axis_MC_BR_Powermeter : MC_BR_PowerMeter := (0);
Axis_MC_Power : MC_Power := (0);
Axis_MC_ReadStatus : MC_ReadStatus := (0);
Axis_MC_ReadAxisError : MC_ReadAxisError := (0);
Axis_MC_BR_ReadAxisError : MC_BR_ReadAxisError := (0);
Axis_MC_Reset : MC_Reset := (0);
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Dynamic Vars*)
VAR
lPS : REFERENCE TO typPS; (*Axis Datastruct *)
lbSimulation : REFERENCE TO BOOL;
enStep : enPSStep;
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Constants*)
(*//-----------------------------------------------------------------------------------------------------*)
(*//Retain*)
(*//-----------------------------------------------------------------------------------------------------*)
(*//Local Vars*)
VAR
bAxisInit : BOOL := FALSE; (*Devel - Init Axis*)
bHomeAbs : BOOL := FALSE; (*Devel - Home Absolue Encoder*)
bTest : BOOL := FALSE;
usCamTableID : USINT;
uiRestartDelay : UINT := 2500; (*Wait Cycles after Cold restart*)
uiAbsStatus : UINT;
uiAxisUserVar1 : UINT := 0;
uiMCReadError : UINT := 0; (*Error in MC_Read_Paramaeter*)
uiMCWriteError : UINT := 0; (*Error in MC_Write_Paramaeter*)
udAxisObj : UDINT;
END_VAR

View File

@@ -0,0 +1,201 @@
PROGRAM _CYCLIC
IF (uiRestartDelay > 0) THEN
uiRestartDelay := uiRestartDelay - 1;
END_IF
Axis_MC_ReadStatus ();
IF Axis_MC_ReadStatus.Valid THEN
lPS.AxisState.bDisabled := Axis_MC_ReadStatus.Disabled;
lPS.AxisState.bStandstill := Axis_MC_ReadStatus.StandStill;
lPS.AxisState.bStopping := Axis_MC_ReadStatus.Stopping;
lPS.AxisState.bHoming := Axis_MC_ReadStatus.Homing;
lPS.AxisState.bMotionDiscrete := Axis_MC_ReadStatus.DiscreteMotion;
lPS.AxisState.bMotionContinous := Axis_MC_ReadStatus.ContinuousMotion;
lPS.AxisState.bMotionSynchronized := Axis_MC_ReadStatus.SynchronizedMotion;
lPS.AxisState.bErrorstop := Axis_MC_ReadStatus.Errorstop;
END_IF
Axis_MC_BR_ReadDriveStatus ();
Axis_MC_BR_ReadAxisError ();
//enMachine Axis
//Check for general Axis errors
IF (Axis_MC_ReadAxisError.AxisErrorID <> 0) AND Axis_MC_ReadAxisError.Valid THEN
lPS.enStep := enPSSTATE_ERROR_AXIS;
//power should be off
ELSIF NOT lPS.Command.bPower AND Axis_MC_ReadStatus.Errorstop AND Axis_MC_ReadStatus.Valid THEN
lPS.enStep := enPSSTATE_ERROR_RESET;
ELSIF NOT lPS.Command.bPower AND NOT (lbSimulation XOR lPS.DriveStatus.bSimulation) THEN
lPS.enStep := enPSSTATE_WAIT;
END_IF
CASE lPS.enStep OF
//==============================================
//WAIT
enPSSTATE_WAIT:
//reset power
Axis_MC_Power.Enable := 0;
Axis_MC_BR_Powermeter.Enable := 0;
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_READY;
//==============================================
//Ready, wait for commands
enPSSTATE_READY:
IF lPS.Command.bPower AND NOT Axis_MC_Power.Status THEN
lPS.enStep := enPSSTATE_POWER_ON;
ELSIF Axis_MC_Power.Status AND NOT lPS.Command.bPower THEN
Axis_MC_Power.Enable := 1;
ELSIF lPS.Command.bStartPowerMeter THEN
lPS.enStep := enPSSTATE_POWERMETER_START;
ELSIF lPS.Command.bStopPowerMeter THEN
lPS.enStep := enPSSTATE_POWERMETER_STOP;
ELSIF lPS.Command.bRestartInterval THEN
Axis_MC_BR_Powermeter.RestartInterval := FALSE;
lPS.enStep := enPSSTATE_RESTART_INTERVAL;
END_IF
//==============================================
//Power On
enPSSTATE_POWER_ON:
Axis_MC_Power.Enable := 1;
IF Axis_MC_Power.Status THEN
lPS.enStep := enPSSTATE_READY;
ELSIF (Axis_MC_Power.ErrorID <> 0) THEN
lPS.Error.uiID := Axis_MC_Power.ErrorID;
lPS.enStep := enPSSTATE_ERROR;
END_IF
//==============================================
//Start Powermeter
enPSSTATE_POWERMETER_START:
Axis_MC_BR_Powermeter.Enable := TRUE;
Axis_MC_BR_Powermeter.Mode := mcONLY_PSM;
Axis_MC_BR_Powermeter.IntervalTime := lPS.Parameter.uiIntervalTime;
lPS.Command.bStartPowerMeter := FALSE;
IF Axis_MC_BR_Powermeter.Valid THEN
lPS.enStep := enPSSTATE_READY;
END_IF
IF Axis_MC_BR_Powermeter.Error THEN
Axis_MC_BR_Powermeter.Enable := FALSE;
lPS.Error.uiID := Axis_MC_BR_Powermeter.ErrorID;
lPS.enStep := enPSSTATE_ERROR;
END_IF
//==============================================
//Stop Powermeter
enPSSTATE_POWERMETER_STOP:
Axis_MC_BR_Powermeter.Enable := FALSE;
lPS.Command.bStopPowerMeter := FALSE;
IF NOT Axis_MC_BR_Powermeter.Valid THEN
lPS.enStep := enPSSTATE_READY;
END_IF
//==============================================
//Restart Powermeter Interval
enPSSTATE_RESTART_INTERVAL:
lPS.Command.bRestartInterval := FALSE;
Axis_MC_BR_Powermeter.RestartInterval := TRUE;
lPS.enStep := enPSSTATE_READY;
//==============================================
//Error
enPSSTATE_ERROR:
IF lPS.Error.bAcknowledge AND Axis_MC_ReadStatus.Errorstop AND Axis_MC_ReadStatus.Valid THEN
lPS.Error.bAcknowledge := 0;
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_ERROR_RESET;
ELSIF lPS.Error.bAcknowledge THEN
lPS.Error.bAcknowledge := 0;
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_WAIT;
END_IF
//==============================================
//Error Axis
enPSSTATE_ERROR_AXIS:
IF NOT Axis_MC_ReadAxisError.Valid THEN
lPS.enStep := enPSSTATE_ERROR_AXIS;
ELSIF (Axis_MC_ReadAxisError.AxisErrorID <> 0) AND (Axis_MC_ReadAxisError.AxisErrorID > 0) THEN
lPS.Error.uiID := Axis_MC_ReadAxisError.AxisErrorID;
END_IF
//IF (lPS.Error.uiID = 1004) AND (uiRestartDelay > 0) THEN
// lPS.Error.bAcknowledge := 1;
//END_IF
Axis_MC_ReadAxisError.Acknowledge := 0;
IF lPS.Error.bAcknowledge THEN
lPS.Error.bAcknowledge := 0;
IF (Axis_MC_ReadAxisError.AxisErrorID <> 0) THEN
Axis_MC_ReadAxisError.Acknowledge := 1;
END_IF
END_IF
IF (Axis_MC_ReadAxisError.AxisErrorCount = 0) AND
Axis_MC_ReadStatus.Errorstop AND
Axis_MC_ReadStatus.Valid THEN
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_ERROR_RESET;
ELSIF (Axis_MC_ReadAxisError.AxisErrorCount = 0) THEN
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_WAIT;
END_IF
//==============================================
//Reset DONE
enPSSTATE_ERROR_RESET:
Axis_MC_Reset.Execute := 1;
IF Axis_MC_Power.Error THEN
Axis_MC_Power.Enable := 0;
END_IF
IF Axis_MC_Reset.Done THEN
Axis_MC_Reset.Execute := 0;
lPS.enStep := enPSSTATE_WAIT;
ELSIF (Axis_MC_Reset.ErrorID <> 0) THEN
lPS.Error.uiID := Axis_MC_Reset.ErrorID;
Axis_MC_Reset.Execute := 0;
lPS.enStep := enPSSTATE_ERROR;
END_IF
END_CASE
//--------------------------------------------
//Call Function Blocks
Axis_MC_Power ();
Axis_MC_Reset ();
(**********************MC_BR_POWERMETER *****************************)
Axis_MC_BR_Powermeter ();
IF Axis_MC_BR_Powermeter.Valid THEN
lPS.Status.mcPowerData.IntervalDuration := Axis_MC_BR_Powermeter.PowerData.IntervalDuration;
lPS.Status.mcPowerData.AverageActivePower := Axis_MC_BR_Powermeter.PowerData.AverageActivePower;
lPS.Status.mcPowerData.AverageReactivePower := Axis_MC_BR_Powermeter.PowerData.AverageReactivePower;
lPS.Status.mcPowerData.MaximumActivePower := Axis_MC_BR_Powermeter.PowerData.MaximumActivePower;
lPS.Status.mcPowerData.MinimalActivePower := Axis_MC_BR_Powermeter.PowerData.MinimalActivePower;
lPS.Status.mcPowerData.ConsumedEnergy := Axis_MC_BR_Powermeter.PowerData.ConsumedEnergy;
lPS.Status.mcPowerData.RegeneratedEnergy := Axis_MC_BR_Powermeter.PowerData.RegeneratedEnergy;
lPS.Status.mcPowerData.EnergyBalance := Axis_MC_BR_Powermeter.PowerData.EnergyBalance;
IF (lPS.Status.mcPowerData.IntervalNumber <> Axis_MC_BR_Powermeter.PowerData.IntervalNumber) THEN
//New Interval
grConsumedEnergy := grConsumedEnergy + lPS.Status.mcPowerData.ConsumedEnergy;
grRegeneratedEnergy := grRegeneratedEnergy + lPS.Status.mcPowerData.ConsumedEnergy;
lPS.Energy.rConsumedEnergy := lPS.Energy.rConsumedEnergy + lPS.Status.mcPowerData.ConsumedEnergy;
lPS.Energy.rRegeneratedEnergy := lPS.Energy.rRegeneratedEnergy + lPS.Status.mcPowerData.RegeneratedEnergy;
END_IF
lPS.Status.mcPowerData.IntervalNumber := Axis_MC_BR_Powermeter.PowerData.IntervalNumber;
END_IF
END_PROGRAM

View File

@@ -0,0 +1,40 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lPS ACCESS ADR (gPS);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
//Access global ACP10 Axis Objects
udAxisObj := ADR (gAxPS);
//Initial Step
lPS.enStep := enPSSTATE_READY;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lPS.DriveStatus);
Axis_MC_BR_Powermeter.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lPS.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lPS.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lPS.Error.Text[0]);
Axis_MC_Reset.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisPSlInit.st</File>
<File Description="Cyclic code">AxisPSlCyclic.st</File>
<File Description="Local variables" Private="true">AxisPS.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,91 @@
(*//-----------------------------------------------------------------------------------------------------*)
(*//MC FunctionBlocks*)
VAR
Axis_MC_BR_AxisErrorCollector : MC_BR_AxisErrorCollector;
Axis_MC_ACP_ENCOD_REF : MC_ACP_ENCOD_REF := (0);
Axis_MC_ACP_ENCOD_PARAM_REF : MC_ACP_ENCOD_PARAM_REF := (0);
Axis_MC_GearIn : MC_GearIn := (0); (*Start electronic Gear coupling with master*)
Axis_MC_GearInPos : MC_GearInPos := (0); (*Start electronic Gear coupling (Position mode) with master*)
Axis_MC_GearOut : MC_GearOut := (0); (*Stop electronic Gear coupling*)
Axis_MC_BR_BrakeControl : MC_BR_BrakeControl := (0);
Axis_MC_BR_GetErrorText : MC_BR_GetErrorText := (0);
Axis_MC_BR_HomeAcpEncoder : MC_BR_HomeAcpEncoder := (0);
Axis_MC_BR_InitAxisPar : MC_BR_InitAxisPar := (0);
Axis_MC_BR_JogVelocity : MC_BR_JogVelocity := (0);
Axis_MC_BR_JogLimitPosition : MC_BR_JogLimitPosition := (0);
Axis_MC_BR_JogTargetPosition : MC_BR_JogTargetPosition := (0);
Axis_MC_BR_ReadDriveStatus : MC_BR_ReadDriveStatus := (0);
Axis_MC_BR_Simulation : MC_BR_Simulation := (0);
Axis_MC_BR_SetHardwareInputs : MC_BR_SetHardwareInputs := (0); (*Set HW-Inputs (Limits for Axises)*)
Axis_MC_BR_TorqueControl : MC_BR_TorqueControl := (0); (*Continuous Movement with Cyclic Torque*)
Axis_MC_BR_VelocityControl : MC_BR_VelocityControl := (0); (*Cyclic Velocity / Torque*)
Axis_MC_Halt : MC_Halt := (0); (*Halt*)
Axis_MC_Home : MC_Home := (0); (*Homing*)
Axis_MC_BR_InitModPos : MC_BR_InitModPos := (0); (*Modulo Position*)
Axis_MC_MoveAbsolute : MC_MoveAbsolute := (0); (*Absolute Movement*)
Axis_MC_BR_MoveAbsoluteTriggStop : MC_BR_MoveAbsoluteTriggStop := (0); (*Absolute Movement with Trigger Stop*)
Axis_MC_MoveAdditive : MC_MoveAdditive := (0); (*Additive Movement*)
Axis_MC_BR_MoveAdditiveTriggStop : MC_BR_MoveAdditiveTriggStop := (0); (*Additive Movement with Trigger Stop*)
Axis_MC_MoveVelocity : MC_MoveVelocity := (0); (*Continuous Movement with Cyclic Velocity*)
AXis_MC_BR_MoveVelocityTriggStop : MC_BR_MoveVelocityTriggStop := (0); (*Continuous Movement with Cyclic Velocity and Trigger Stop*)
Axis_MC_Power : MC_Power := (0);
Axis_MC_ReadActualPosition : MC_ReadActualPosition := (0);
Axis_MC_ReadActualTorque : MC_ReadActualTorque := (0);
Axis_MC_ReadActualVelocity : MC_ReadActualVelocity := (0);
Axis_MC_BR_ReadAxisError : MC_BR_ReadAxisError := (0);
Axis_MC_ReadStatus : MC_ReadStatus := (0);
Axis_MC_Reset : MC_Reset := (0);
Axis_MC_SetOverride : MC_SetOverride := (0);
Axis_MC_Stop : MC_Stop := (0);
END_VAR
(*//Further Parameter - Cyclic*)
VAR
Axis_MC_BR_CyclicRead : MC_BR_CyclicRead := (0); (*Read Further Axis Parameter*)
Axis_MC_BR_CyclicWrite : MC_BR_CyclicWrite := (0);
END_VAR
(*//Further Parameter*)
VAR
Axis_MC_BR_ReadParID : MC_BR_ReadParID := (0); (*Read Furhter Axis Parameter*)
END_VAR
(*//ParemeterTrace*)
VAR
Axis_MC_BR_WriteParID : MC_BR_WriteParID := (0); (*USER_R4_VAR1 used for Trace*)
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Dynamic Vars*)
VAR
lAxis : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisActPos : REFERENCE TO REAL;
lAxisMaster : REFERENCE TO typAxis;
lbSimulation : REFERENCE TO BOOL;
rUser_Var1 : REFERENCE TO REAL; (*Value for Cyclic transmission to Acopos*)
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Constants*)
VAR CONSTANT
uiTORQUE_NOT_REACHED : UINT := 0;
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Retain*)
(*//-----------------------------------------------------------------------------------------------------*)
(*//Local Vars*)
VAR
bAxisInit : BOOL := FALSE; (*Devel - Init Axis*)
bDisableCommands : BOOL := FALSE;
bHomeAbs : BOOL := FALSE; (*Devel - Home Absolue Encoder*)
bTest : BOOL := FALSE;
usCamTableID : USINT;
uiRestartDelay : UINT := 2500; (*Wait Cycles after Cold restart*)
uiAbsStatus : UINT;
uiAxisUserVar1 : UINT := 0;
uiMCReadError : UINT := 0; (*Error in MC_Read_Paramaeter*)
uiMCWriteError : UINT := 0; (*Error in MC_Write_Paramaeter*)
udAxisMasterObj : UDINT;
udAxisSlaveObj : UDINT;
udAxisObj : UDINT;
udEnableTorqueLimit : UDINT := 0;
rOldVelocity : REAL := 0.0;
rOldTorquelimit : REAL := 0.0; (*//Used to Trigger Sending Value to Axis*)
rUser_VarTemp : REAL := 0.0;
TON_HomingOk : TON;
END_VAR

View File

@@ -0,0 +1,712 @@
PROGRAM _CYCLIC
IF (uiRestartDelay > 0) THEN
uiRestartDelay := uiRestartDelay - 1;
END_IF
//Devel Axis Initialisation
Axis_MC_BR_InitAxisPar.Axis := udAxisObj;
Axis_MC_BR_InitAxisPar.Execute := bAxisInit;
Axis_MC_BR_InitAxisPar ();
IF Axis_MC_BR_InitAxisPar.Done THEN
bAxisInit := FALSE;
END_IF
//Devel Absolute Encoder Homing
Axis_MC_ACP_ENCOD_REF.Slot := 3;
Axis_MC_ACP_ENCOD_PARAM_REF.HomingMode := mcHOME_ABSOLUTE;
Axis_MC_ACP_ENCOD_PARAM_REF.Offset := 0;
Axis_MC_ACP_ENCOD_PARAM_REF.ReadOffset := FALSE;
Axis_MC_BR_HomeAcpEncoder.Execute := bHomeAbs;
Axis_MC_BR_HomeAcpEncoder.AcpEncoder := Axis_MC_ACP_ENCOD_REF;
Axis_MC_BR_HomeAcpEncoder.HomingParameters := Axis_MC_ACP_ENCOD_PARAM_REF;
Axis_MC_BR_HomeAcpEncoder ();
IF Axis_MC_BR_HomeAcpEncoder.Done THEN
bHomeAbs := FALSE;
END_IF
//Set Hardware inputs
//Direct map IO
Axis_MC_BR_SetHardwareInputs.Enable := lAxis.Para.bSetHWInputs;
Axis_MC_BR_SetHardwareInputs ();
//get axis information
Axis_MC_BR_AxisErrorCollector ();
(***********************CHECK FOR ERRORS**************************)
IF (lAxis.enStep < enAxSTATE_STOP_AFTER_ERROR) THEN
IF (Axis_MC_BR_AxisErrorCollector.Errorstop) THEN
lAxis.enStep := enAxSTATE_ERROR;
ELSIF (Axis_MC_BR_AxisErrorCollector.FunctionBlockError) OR
(Axis_MC_BR_AxisErrorCollector.AxisError) OR
(Axis_MC_BR_AxisErrorCollector.AxisWarning) THEN
lAxis.enStep := enAxSTATE_STOP_AFTER_ERROR;
END_IF
END_IF
Axis_MC_BR_ReadAxisError ();
Axis_MC_ReadStatus ();
IF Axis_MC_ReadStatus.Valid THEN
lAxis.Status.bDisabled := Axis_MC_ReadStatus.Disabled;
lAxis.Status.bStandstill := Axis_MC_ReadStatus.StandStill;
lAxis.Status.bStopping := Axis_MC_ReadStatus.Stopping;
lAxis.Status.bHoming := Axis_MC_ReadStatus.Homing;
lAxis.Status.bMotionDiscrete := Axis_MC_ReadStatus.DiscreteMotion;
lAxis.Status.bMotionContinous := Axis_MC_ReadStatus.ContinuousMotion;
lAxis.Status.bMotionSynchronized := Axis_MC_ReadStatus.SynchronizedMotion;
lAxis.Status.bErrorstop := Axis_MC_ReadStatus.Errorstop;
END_IF
Axis_MC_BR_ReadDriveStatus ();
TON_HomingOk.IN := lAxis.DriveStatus.bHomingOk AND NOT lAxis.Status.bHoming;
IF EDGEPOS (lAxis.bHome) THEN
TON_HomingOk.IN := FALSE;
END_IF
TON_HomingOk.PT := t#50ms;
TON_HomingOk ();
lAxis.Status.bHomingOkDelayed := TON_HomingOk.Q;
//Position
Axis_MC_ReadActualPosition ();
IF Axis_MC_ReadActualPosition.Valid THEN
lAxis.rActPosition := Axis_MC_ReadActualPosition.Position;
lAxisActPos := lAxis.rActPosition;
END_IF
//Velocity
Axis_MC_ReadActualVelocity ();
IF Axis_MC_ReadActualVelocity.Valid THEN
lAxis.rActVelocity := Axis_MC_ReadActualVelocity.Velocity;
END_IF
//Torque
IF lbSimulation OR lAxis.DriveStatus.bSimulation OR lAxis.bVAxis THEN
Axis_MC_ReadActualTorque.Enable := FALSE; //Disable for Simulation (not Possible)
END_IF
Axis_MC_ReadActualTorque ();
IF Axis_MC_ReadActualTorque.Valid THEN
lAxis.rActTorque := Axis_MC_ReadActualTorque.Torque;
END_IF
//Power OFF
IF NOT lAxis.bPower AND lAxis.DriveStatus.bControllerStatus THEN
lAxis.enStep := enAxSTATE_POWER_OFF;
END_IF
CASE lAxis.enStep OF
//==============================================
//WAIT
enAxSTATE_WAIT:
//IF lAxis.Status.bDisabled AND lbSimulation AND NOT lAxis.DriveStatus.bSimulation THEN
// lAxis.enStep := enAxSTATE_SIMULATION_ON;
//ELSIF lAxis.Status.bDisabled AND NOT lbSimulation AND lAxis.DriveStatus.bSimulation THEN
// lAxis.enStep := enAxSTATE_SIMULATION_OFF;
IF lAxis.bPower THEN
lAxis.enStep := enAxSTATE_POWER_ON;
ELSE
bDisableCommands := TRUE;
END_IF
//==============================================
//Simulation On
enAxSTATE_SIMULATION_ON:
Axis_MC_BR_Simulation.Execute := 1;
Axis_MC_BR_Simulation.SimulationCommand := mcMOTOR;
IF Axis_MC_BR_Simulation.Done THEN
Axis_MC_BR_Simulation.Execute := 0;
lAxis.enStep := enAxSTATE_WAIT;
ELSIF (Axis_MC_BR_Simulation.ErrorID <> 0) THEN
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Simulation Off
enAxSTATE_SIMULATION_OFF;
Axis_MC_BR_Simulation.Execute := 1;
Axis_MC_BR_Simulation.SimulationCommand := mcSIMULATION_OFF;
IF Axis_MC_BR_Simulation.Done THEN
Axis_MC_BR_Simulation.Execute := 0;
lAxis.enStep := enAxSTATE_WAIT;
ELSIF (Axis_MC_BR_Simulation.ErrorID <> 0) THEN
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Power On
enAxSTATE_POWER_ON:
Axis_MC_Power.Enable := TRUE;
IF Axis_MC_Power.Status THEN
lAxis.enStep := enAxSTATE_READY;
ELSIF (Axis_MC_Power.ErrorID <> 0) THEN
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Power Off
enAxSTATE_POWER_OFF:
Axis_MC_Power.Enable := FALSE;
IF Axis_MC_Power.Status THEN
lAxis.enStep := enAxSTATE_WAIT;
ELSIF (Axis_MC_Power.ErrorID <> 0) THEN
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Ready, wait for commands
enAxSTATE_READY:
IF lAxis.bStop THEN
lAxis.bStop := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF lAxis.bHome THEN
lAxis.enStep := enAxSTATE_HOME;
ELSIF lAxis.Move.bBraketest THEN
lAxis.Move.bBraketest := 0;
lAxis.enStep := enAxSTATE_BRAKE_TEST;
ELSIF lAxis.Move.bJogPos OR lAxis.Move.bJogNeg THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_JOG;
ELSIF lAxis.Move.bAbsolute AND NOT lAxis.Para.bTriggStop THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_MOVE_ABSOLUTE;
ELSIF lAxis.Move.bAbsolute AND lAxis.Para.bTriggStop THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_MOVE_ABSOLUTE_TRIGSTP;
ELSIF lAxis.Move.bAdditive AND NOT lAxis.Para.bTriggStop THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_MOVE_ADDITIVE;
ELSIF lAxis.Move.bAdditive AND lAxis.Para.bTriggStop THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_MOVE_ADDITIVE_TRIGSTP;
ELSIF lAxis.Move.bVelocity THEN
lAxis.Move.bVelocity := 0;
lAxis.Status.bTorqueLimitReached := 0;
lAxis.enStep := enAxSTATE_MOVE_VELOCITY;
ELSIF lAxis.Move.bVelocityControl THEN
lAxis.Move.bVelocityControl := 0;
lAxis.Status.bTorqueLimitReached := 0;
lAxis.enStep := enAxSTATE_MOVE_VELOCITY_CTRL;
ELSIF lAxis.Move.bTorqueControl THEN
lAxis.Move.bTorqueControl := 0;
lAxis.Status.bTorqueLimitReached := 0;
lAxis.enStep := enAxSTATE_MOVE_TORQUE_CTRL;
ELSIF lAxis.Move.bStartGearSlave THEN
lAxis.Move.bStartGearSlave := 0;
lAxis.enStep := enAxSTATE_MOVE_GEAR_START;
ELSIF lAxis.Move.bStartGearPosSlave THEN
lAxis.Move.bStartGearSlave := 0;
lAxis.enStep := enAxSTATE_MOVE_GEARPOS_START;
ELSIF lAxis.Move.bStopGearSlave THEN
lAxis.Move.bStopGearSlave := 0;
lAxis.enStep := enAxSTATE_MOVE_GEAR_STOP;
END_IF
//==============================================
//Drive Home
enAxSTATE_HOME:
Axis_MC_Home.Position := lAxis.Para.rHomePosition;
Axis_MC_Home.HomingMode := lAxis.Para.usHomeingMode;
Axis_MC_Home.Execute := 1;
IF lAxis.bStop THEN
Axis_MC_Home.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
lAxis.bHome := 0;
ELSIF Axis_MC_Home.Done AND (lAxis.Para.udAxisModPosFactor > 0) AND (lAxis.Para.udAxisModPosPeriod > 0) THEN
Axis_MC_Home.Execute := 0;
lAxis.enStep := enAxSTATE_INIT_MOD_POS;
lAxis.bHome := 0;
ELSIF Axis_MC_Home.Done THEN
Axis_MC_Home.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
lAxis.bHome := 0;
END_IF
//==============================================
//Test Brake
enAxSTATE_BRAKE_TEST:
Axis_MC_BR_BrakeControl.Command := mcBRAKE_TEST_START;
Axis_MC_BR_BrakeControl.Configuration.BrakeTest.PositionLimit := lAxis.Para.rBraketestPosLimit;
Axis_MC_BR_BrakeControl.Configuration.BrakeTest.TestTorque := lAxis.Para.rBraketestTorque;
Axis_MC_BR_BrakeControl.Execute := 1;
IF lAxis.bStop THEN
Axis_MC_BR_BrakeControl.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_Home.Done THEN
Axis_MC_BR_BrakeControl.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Initialize Modulo Position
enAxSTATE_INIT_MOD_POS:
Axis_MC_BR_InitModPos.Factor := lAxis.Para.udAxisModPosFactor;
Axis_MC_BR_InitModPos.Period := lAxis.Para.udAxisModPosPeriod;
Axis_MC_BR_InitModPos.Execute := 1;
IF Axis_MC_BR_InitModPos.Done THEN
Axis_MC_BR_InitModPos.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Stop Movement (as long as Stop Command is set)
enAxSTATE_STOP:
Axis_MC_Stop.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_Stop.Execute := 1;
IF Axis_MC_Stop.Done AND NOT lAxis.bStop THEN
Axis_MC_Stop.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
IF (Axis_MC_Stop.Error OR Axis_MC_Stop.CommandAborted) AND NOT lAxis.bStop THEN
Axis_MC_Stop.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Jog Positive
enAxSTATE_JOG:
Axis_MC_BR_JogVelocity.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_JogVelocity.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_BR_JogVelocity.Velocity := lAxis.Para.rJogVelocity;
Axis_MC_BR_JogVelocity.JogPositive := lAxis.Move.bJogPos;
Axis_MC_BR_JogVelocity.JogNegative := lAxis.Move.bJogNeg;
Axis_MC_BR_JogVelocity.Enable := (lAxis.Para.JogMode = enAxJOG);
Axis_MC_BR_JogLimitPosition.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_JogLimitPosition.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_BR_JogLimitPosition.Velocity := lAxis.Para.rJogVelocity;
Axis_MC_BR_JogLimitPosition.JogPositive := lAxis.Move.bJogPos;
Axis_MC_BR_JogLimitPosition.JogNegative := lAxis.Move.bJogNeg;
Axis_MC_BR_JogLimitPosition.FirstPosition := lAxis.Para.rJogLimitLow;
Axis_MC_BR_JogLimitPosition.LastPosition := lAxis.Para.rJogLimitHigh;
Axis_MC_BR_JogLimitPosition.Enable := (lAxis.Para.JogMode = enAxJOG_Limits);
Axis_MC_BR_JogTargetPosition.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_JogTargetPosition.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_BR_JogTargetPosition.Velocity := lAxis.Para.rJogVelocity;
Axis_MC_BR_JogTargetPosition.TargetPosition:= lAxis.Para.rPosition;
Axis_MC_BR_JogTargetPosition.JogToTarget := lAxis.Move.bJogPos OR lAxis.Move.bJogNeg;
Axis_MC_BR_JogTargetPosition.JogPositive := FALSE;
Axis_MC_BR_JogTargetPosition.JogNegative := FALSE;
Axis_MC_BR_JogTargetPosition.Enable := (lAxis.Para.JogMode = enAxJOG_Target);
IF (NOT lAxis.Move.bJogPos AND NOT lAxis.Move.bJogNeg) OR lAxis.bStop THEN
Axis_MC_BR_JogVelocity.Enable := 0;
Axis_MC_BR_JogLimitPosition.Enable := 0;
Axis_MC_BR_JogTargetPosition.Enable := 0;
lAxis.enStep := enAxSTATE_STOP;
END_IF
//==============================================
//Move Absolute
enAxSTATE_MOVE_ABSOLUTE:
Axis_MC_MoveAbsolute.Position := lAxis.Para.rPosition;
Axis_MC_MoveAbsolute.Velocity := lAxis.Para.rVelocity;
Axis_MC_MoveAbsolute.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_MoveAbsolute.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_MoveAbsolute.Direction := lAxis.Para.usDirection; //Interesting on Periodic Axises
Axis_MC_MoveAbsolute.Execute := 1;
IF lAxis.bStop OR NOT lAxis.Move.bAbsolute THEN
;lAxis.bStop := 0;
Axis_MC_MoveAbsolute.Execute := 0;
lAxis.Move.bAbsolute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_MoveAbsolute.Done THEN
Axis_MC_MoveAbsolute.Execute := 0;
lAxis.Move.bAbsolute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Move Absolute (Stopp with Trigger
enAxSTATE_MOVE_ABSOLUTE_TRIGSTP:
Axis_MC_BR_MoveAbsoluteTriggStop.Position := lAxis.Para.rPosition;
Axis_MC_BR_MoveAbsoluteTriggStop.Velocity := lAxis.Para.rVelocity;
Axis_MC_BR_MoveAbsoluteTriggStop.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_MoveAbsoluteTriggStop.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_BR_MoveAbsoluteTriggStop.Direction := lAxis.Para.usDirection; //Interesting on Periodic Axises
//Triggerinput is configured in Init Up
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerDistance := lAxis.Para.rTriggDistance;
Axis_MC_BR_MoveAbsoluteTriggStop.ForceTriggerDistance := mcOFF; // --> force Trigger Dist even if Dest Pos is Exeeded
Axis_MC_BR_MoveAbsoluteTriggStop.Execute := 1;
IF lAxis.bStop OR NOT lAxis.Move.bAbsolute THEN
Axis_MC_BR_MoveAbsoluteTriggStop.Execute := 0;
lAxis.Move.bAbsolute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_BR_MoveAbsoluteTriggStop.Done THEN
Axis_MC_BR_MoveAbsoluteTriggStop.Execute := 0;
lAxis.Move.bAbsolute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Move Additive
enAxSTATE_MOVE_ADDITIVE:
Axis_MC_MoveAdditive.Distance := lAxis.Para.rDistance;
Axis_MC_MoveAdditive.Velocity := lAxis.Para.rVelocity;
Axis_MC_MoveAdditive.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_MoveAdditive.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_MoveAdditive.Execute := 1;
IF lAxis.bStop OR NOT lAxis.Move.bAdditive THEN
lAxis.Move.bAdditive := 0;
Axis_MC_MoveAdditive.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_MoveAdditive.Done THEN
lAxis.Move.bAdditive := 0;
Axis_MC_MoveAdditive.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Move Additive
enAxSTATE_MOVE_ADDITIVE_TRIGSTP:
Axis_MC_BR_MoveAdditiveTriggStop.Distance := lAxis.Para.rDistance;
Axis_MC_BR_MoveAdditiveTriggStop.Velocity := lAxis.Para.rVelocity;
Axis_MC_BR_MoveAdditiveTriggStop.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_MoveAdditiveTriggStop.Deceleration := lAxis.Para.rDeceleration;
//Triggerinput is configured in Init Up
Axis_MC_BR_MoveAdditiveTriggStop.TriggerDistance := lAxis.Para.rTriggDistance;
Axis_MC_BR_MoveAdditiveTriggStop.ForceTriggerDistance := mcOFF; // --> force Trigger Dist even if Dest Pos is Exeeded
Axis_MC_BR_MoveAdditiveTriggStop.Execute := 1;
IF lAxis.bStop OR NOT lAxis.Move.bAdditive THEN
lAxis.Move.bAdditive := 0;
Axis_MC_MoveAdditive.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_BR_MoveAdditiveTriggStop.Done THEN
lAxis.Move.bAdditive := 0;
Axis_MC_BR_MoveAdditiveTriggStop.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Move Velocity
enAxSTATE_MOVE_VELOCITY:
Axis_MC_MoveVelocity.Velocity := lAxis.Para.rVelocity;
Axis_MC_MoveVelocity.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_MoveVelocity.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_MoveVelocity.Direction := lAxis.Para.usDirection;
Axis_MC_MoveVelocity.Execute := 1;
IF lAxis.bStop THEN
Axis_MC_MoveVelocity.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
END_IF
//==============================================
//Move Velocity Control (Only POWERLINK)
//FixMe just prepared
enAxSTATE_MOVE_VELOCITY_CTRL:
Axis_MC_BR_VelocityControl.CyclicVelocityCorrection := 0;
Axis_MC_BR_VelocityControl.CyclicVelocity := lAxis.Para.rVelocity;
Axis_MC_BR_VelocityControl.CyclicTorque := lAxis.Para.rTorqueLimit;
Axis_MC_BR_VelocityControl.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_VelocityControl.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_BR_VelocityControl.TorqueMode := mcLIMIT;
Axis_MC_BR_VelocityControl.Enable := 1;
//==============================================
//Move Torque Control
enAxSTATE_MOVE_TORQUE_CTRL:
Axis_MC_BR_TorqueControl.StartSignal := NOT lAxis.bStop;
Axis_MC_BR_TorqueControl.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_TorqueControl.PosMaxVelocity := lAxis.Para.rVelocity;
Axis_MC_BR_TorqueControl.NegMaxVelocity := -lAxis.Para.rVelocity;
Axis_MC_BR_TorqueControl.Mode := mcCHECK_HOMING_OFF;
//mcV_LIMIT_OFF; //(No Speed Limit)
//mcV_LIMIT_CALC; //(No Speed Overrrun)
//mcTIME_LIMIT; //(Enable Timelimit)
Axis_MC_BR_TorqueControl.TimeLimit := 0;
Axis_MC_BR_TorqueControl.StartParID := 0; //Not Used by now
Axis_MC_BR_TorqueControl.TorqueRamp := 0; //Ramp Disabled
Axis_MC_BR_TorqueControl.Torque := lAxis.Para.rTorqueLimit;
//Axis_MC_BR_TorqueControl.TorqueParID := 0; //Alternative Torque Source
Axis_MC_BR_TorqueControl.Enable := 1;
//Trigger Parameter rewrite
Axis_MC_BR_TorqueControl.InitData := (lAxis.Para.rVelocity <> rOldVelocity) OR
(lAxis.Para.rTorqueLimit <> rOldTorquelimit);
rOldVelocity := lAxis.Para.rVelocity;
rOldTorquelimit := lAxis.Para.rTorqueLimit;
lAxis.Status.bTorqueLimitReached := Axis_MC_BR_TorqueControl.InTorque AND
NOT Axis_MC_BR_TorqueControl.AxisLimitActive;
IF lAxis.bStop THEN
Axis_MC_BR_TorqueControl.Enable := 0;
lAxis.Status.bTorqueLimitReached := 0;
lAxis.enStep := enAxSTATE_STOP;
END_IF
//==============================================
//Move GEAR START
enAxSTATE_MOVE_GEAR_START:
Axis_MC_GearIn.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_GearIn.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_GearIn.RatioNumerator := lAxis.Para.iGearRatioNumerator;
Axis_MC_GearIn.RatioDenominator := lAxis.Para.uiGearRatioDenominator;
Axis_MC_GearIn.Execute := 1;
IF Axis_MC_GearIn.InGear THEN
Axis_MC_GearIn.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
ELSIF lAxis.bStop THEN
Axis_MC_GearIn.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF lAxis.Move.bStopGearSlave THEN
lAxis.Move.bStopGearSlave := 0;
Axis_MC_GearIn.Execute := 0;
lAxis.enStep := enAxSTATE_MOVE_GEAR_STOP;
END_IF
//==============================================
//Move GEAR POS START
enAxSTATE_MOVE_GEARPOS_START:
Axis_MC_GearInPos.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_GearInPos.RatioNumerator := lAxis.Para.iGearRatioNumerator;
Axis_MC_GearInPos.RatioDenominator := lAxis.Para.uiGearRatioDenominator;
Axis_MC_GearInPos.MasterSyncPosition := lAxis.Para.rGearMasterSyncPos;
Axis_MC_GearInPos.SlaveSyncPosition := lAxis.Para.rGearSlaveSyncPos;
Axis_MC_GearInPos.Velocity := lAxis.Para.rGearSyncVelocity;
Axis_MC_GearInPos.Acceleration := lAxis.Para.rGearSyncAcceleration;
Axis_MC_GearInPos.SyncMode := mcSHORTEST_WAY;
Axis_MC_GearInPos.Execute := 1;
IF Axis_MC_GearInPos.InSync THEN
Axis_MC_GearIn.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
ELSIF lAxis.bStop THEN
Axis_MC_GearInPos.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF lAxis.Move.bStopGearSlave THEN
lAxis.Move.bStopGearSlave := 0;
Axis_MC_GearInPos.Execute := 0;
lAxis.enStep := enAxSTATE_MOVE_GEAR_STOP;
END_IF
//==============================================
//Move GEAR STOP
enAxSTATE_MOVE_GEAR_STOP:
Axis_MC_GearOut.Execute := 1;
IF Axis_MC_GearOut.Done THEN
Axis_MC_GearOut.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Stop after an Error
enAxSTATE_STOP_AFTER_ERROR:
IF (lAxis.Status.bMotionContinous) OR
(lAxis.Status.bMotionDiscrete) OR
(lAxis.Status.bMotionSynchronized) OR
(lAxis.Status.bHoming) THEN
Axis_MC_Stop.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_Stop.Execute := TRUE;
IF Axis_MC_Stop.Done OR Axis_MC_Stop.Error THEN
Axis_MC_Stop.Execute := FALSE;
lAxis.enStep := enAxSTATE_ERROR;
END_IF
ELSE
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Error
enAxSTATE_ERROR:
bDisableCommands := TRUE;
IF Axis_MC_BR_ReadAxisError.Valid THEN
IF (Axis_MC_BR_ReadAxisError.ErrorRecord.Number <> 0) THEN
lAxis.Error.uiID := Axis_MC_BR_ReadAxisError.ErrorRecord.Number;
END_IF
IF lAxis.Error.bAcknowledge THEN
lAxis.Error.bAcknowledge := FALSE;
IF (Axis_MC_BR_ReadAxisError.ErrorRecord.Number <> 0) THEN
Axis_MC_BR_ReadAxisError.Acknowledge:=TRUE;
END_IF
lAxis.enStep := enAxSTATE_ERROR_CHECK;
END_IF
END_IF
//==============================================
//Error Axis
enAxSTATE_ERROR_CHECK:
IF (Axis_MC_BR_ReadAxisError.Valid) THEN
IF (Axis_MC_BR_ReadAxisError.ErrorRecord.Number = 0) THEN
lAxis.Error.uiID := 0;
(* reset axis state IF the axis is in state ErrorStop *)
IF lAxis.Status.bErrorstop AND Axis_MC_ReadStatus.Valid THEN
lAxis.enStep := enAxSTATE_ERROR_RESET;
ELSE
lAxis.enStep := enAxSTATE_WAIT;
END_IF
ELSE
lAxis.enStep := enAxSTATE_ERROR;
END_IF
Axis_MC_BR_ReadAxisError.Acknowledge := FALSE;
END_IF
//==============================================
//Reset DONE
enAxSTATE_ERROR_RESET:
Axis_MC_Reset.Execute := 1;
IF Axis_MC_Power.Error THEN
Axis_MC_Power.Enable := 0;
END_IF
IF Axis_MC_Reset.Done THEN
Axis_MC_Reset.Execute := 0;
lAxis.enStep := enAxSTATE_WAIT;
ELSIF (Axis_MC_Reset.ErrorID <> 0) THEN
lAxis.Error.uiID := Axis_MC_Reset.ErrorID;
Axis_MC_Reset.Execute := 0;
lAxis.enStep := enAxSTATE_ERROR;
END_IF
END_CASE
IF bDisableCommands THEN
//reset power
Axis_MC_Power.Enable := 0;
//reset all fb execute inputs we use
Axis_MC_Home.Execute := 0;
Axis_MC_BR_BrakeControl.Execute := 0;
Axis_MC_BR_Simulation.Execute := 0;
Axis_MC_Stop.Execute := 0;
Axis_MC_MoveAbsolute.Execute := 0;
Axis_MC_BR_MoveAbsoluteTriggStop.Execute := 0;
Axis_MC_MoveAdditive.Execute := 0;
Axis_MC_BR_MoveAdditiveTriggStop.Execute := 0;
Axis_MC_MoveVelocity.Execute := 0;
Axis_MC_MoveVelocity.Execute := 0;
Axis_MC_BR_VelocityControl.Enable := 0;
Axis_MC_BR_TorqueControl.Enable := 0;
Axis_MC_GearIn.Execute := 0;
Axis_MC_GearInPos.Execute := 0;
Axis_MC_GearOut.Execute := 0;
Axis_MC_Reset.Execute := 0;
//reset user commands
lAxis.bStop := 0;
lAxis.bHome := 0;
lAxis.Move.bBraketest := 0;
lAxis.Move.bJogPos := 0;
lAxis.Move.bJogNeg := 0;
lAxis.Move.bVelocity := 0;
lAxis.Move.bVelocityControl := 0;
lAxis.Move.bAbsolute := 0;
lAxis.Move.bAdditive := 0;
lAxis.Move.bTorqueControl := 0;
lAxis.Move.bStartGearSlave := 0;
lAxis.Move.bStartGearPosSlave := 0;
lAxis.Move.bStopGearSlave := 0;
bDisableCommands := FALSE;
END_IF
//--------------------------------------------
//Override Velocity and Acceleration
Axis_MC_SetOverride.Enable := (lAxis.Para.rOverrideVelocity <> 1.0) OR (lAxis.Para.rOverrideAcceleration <> 1.0);
Axis_MC_SetOverride.VelFactor := lAxis.Para.rOverrideVelocity;
Axis_MC_SetOverride.AccFactor := lAxis.Para.rOverrideAcceleration;
Axis_MC_SetOverride ();
//--------------------------------------------
//Call Function Blocks
Axis_MC_Power ();
Axis_MC_BR_Simulation ();
Axis_MC_Home ();
Axis_MC_BR_BrakeControl ();
Axis_MC_BR_InitModPos();
Axis_MC_BR_JogVelocity ();
Axis_MC_BR_JogLimitPosition ();
Axis_MC_BR_JogTargetPosition ();
Axis_MC_MoveAbsolute ();
Axis_MC_BR_MoveAbsoluteTriggStop();
Axis_MC_MoveAdditive ();
Axis_MC_BR_MoveAdditiveTriggStop ();
Axis_MC_MoveVelocity ();
AXis_MC_BR_MoveVelocityTriggStop ();
Axis_MC_GearIn ();
Axis_MC_GearInPos ();
Axis_MC_GearOut ();
Axis_MC_Stop ();
Axis_MC_Reset ();
Axis_MC_BR_TorqueControl ();
//--------------------------------------------
//Cyclic Parameter Read
Axis_MC_BR_CyclicRead.Enable := 0;
//Axis_MC_BR_CyclicRead.ParID ;= 4160 ; 4160 User Variable0 I2
//Axis_MC_BR_CyclicRead.DataAddress = adr ()
//Axis_MC_BR_CyclicRead.DataType = ncPAR_TYP_INT
Axis_MC_BR_CyclicRead ();
//---------------------------------------------
//Read individual Parameter
IF Axis_MC_BR_ReadParID.Done THEN
END_IF
IF Axis_MC_BR_ReadParID.Error THEN
uiMCReadError := Axis_MC_BR_ReadParID.ErrorID;
END_IF
Axis_MC_BR_ReadParID.Execute := 0;
Axis_MC_BR_ReadParID.ParID := 4128;
Axis_MC_BR_ReadParID.DataAddress := ADR (lAxis);
Axis_MC_BR_ReadParID.DataType := ncPAR_TYP_REAL;
Axis_MC_BR_ReadParID ();
//--------------------------------------------
//Write individual Parameter
//Write UserParam1 on change
(*
rUser_Var1 access lAxis.Para.udAdrParamUserVar1
if (rUser_VarTemp <> rUser_Var1) and\
not Axis_MC_BR_WriteParID.Busy then
Axis_MC_BR_WriteParID.Execute = 1
rUser_VarTemp = rUser_Var1
END_IF
if Axis_MC_BR_WriteParID.Done or Axis_MC_BR_WriteParID.Error then
if Axis_MC_BR_WriteParID.Error then
uiMCWriteError = Axis_MC_BR_WriteParID.ErrorID
END_IF
Axis_MC_BR_WriteParID.Execute := 0;
END_IF
Axis_MC_BR_WriteParID.ParID = 586 ;USER_R4_VAR1
Axis_MC_BR_WriteParID.DataAddress = adr (rUser_VarTemp)
Axis_MC_BR_WriteParID.DataType = ncPAR_TYP_REAL
Axis_MC_BR_WriteParID fub MC_BR_WriteParID ()
*)
//-----------------------------------------------
//Cyclick write of Parameter
Axis_MC_BR_CyclicWrite.Enable := 0;
Axis_MC_BR_CyclicWrite.DataAddress := ADR (rUser_VarTemp);
Axis_MC_BR_CyclicWrite.DataType := ncPAR_TYP_REAL;
Axis_MC_BR_CyclicWrite.ParID := 586; //USER_R4_VAR1
Axis_MC_BR_CyclicWrite ();
END_PROGRAM

View File

@@ -0,0 +1,90 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[0]);
lAxisActPos ACCESS ADR (gAxisActPos[0]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := TRUE;
//Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
//Access global ACP10 Axis Objects
udAxisObj := ADR (gvAxShaftMaster);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gvAxShaftMaster);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
Axis_MC_GearIn.Master := udAxisMasterObj;
Axis_MC_GearIn.Slave := udAxisSlaveObj;
Axis_MC_GearInPos.Master := udAxisMasterObj;
Axis_MC_GearInPos.Slave := udAxisSlaveObj;
Axis_MC_GearOut.Slave := udAxisSlaveObj;
Axis_MC_Home.Axis := udAxisObj;
Axis_MC_BR_InitModPos.Axis := udAxisMasterObj;
Axis_MC_MoveAbsolute.Axis := udAxisObj;
Axis_MC_BR_MoveAbsoluteTriggStop.Axis := udAxisObj;
Axis_MC_MoveAdditive.Axis := udAxisObj;
Axis_MC_BR_MoveAdditiveTriggStop.Axis := udAxisObj;
Axis_MC_MoveVelocity.Axis := udAxisObj;
AXis_MC_BR_MoveVelocityTriggStop.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadActualPosition.Axis := udAxisObj;
Axis_MC_ReadActualVelocity.Axis := udAxisObj;
Axis_MC_ReadActualTorque.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_Reset.Axis := udAxisObj;
Axis_MC_SetOverride.Axis := udAxisObj;
Axis_MC_Stop.Axis := udAxisObj;
//Parameter
Axis_MC_BR_CyclicRead.Axis := udAxisObj;
Axis_MC_BR_CyclicWrite.Axis := udAxisObj;
Axis_MC_BR_ReadParID.Axis := udAxisObj;
Axis_MC_BR_WriteParID.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInit.st</File>
<File Description="Cyclic code">AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true">Axisctrl.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,92 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[1]);
lAxisActPos ACCESS ADR (gAxisActPos[1]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
//Access global ACP10 Axis Objects
udAxisObj := ADR (gAxShaft1);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gvAxShaftMaster);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
Axis_MC_GearIn.Master := udAxisMasterObj;
Axis_MC_GearIn.Slave := udAxisSlaveObj;
Axis_MC_GearInPos.Master := udAxisMasterObj;
Axis_MC_GearInPos.Slave := udAxisSlaveObj;
Axis_MC_GearOut.Slave := udAxisSlaveObj;
Axis_MC_Halt.Axis := udAxisObj;
Axis_MC_Home.Axis := udAxisObj;
Axis_MC_BR_InitModPos.Axis := udAxisMasterObj;
Axis_MC_MoveAbsolute.Axis := udAxisObj;
Axis_MC_BR_MoveAbsoluteTriggStop.Axis := udAxisObj;
Axis_MC_MoveAdditive.Axis := udAxisObj;
Axis_MC_BR_MoveAdditiveTriggStop.Axis := udAxisObj;
Axis_MC_MoveVelocity.Axis := udAxisObj;
AXis_MC_BR_MoveVelocityTriggStop.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadActualPosition.Axis := udAxisObj;
Axis_MC_ReadActualVelocity.Axis := udAxisObj;
Axis_MC_ReadActualTorque.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_Reset.Axis := udAxisObj;
Axis_MC_SetOverride.Axis := udAxisObj;
Axis_MC_Stop.Axis := udAxisObj;
//Parameter
Axis_MC_BR_CyclicRead.Axis := udAxisObj;
Axis_MC_BR_CyclicWrite.Axis := udAxisObj;
Axis_MC_BR_ReadParID.Axis := udAxisObj;
Axis_MC_BR_WriteParID.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInit1.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,92 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[2]);
lAxisActPos ACCESS ADR (gAxisActPos[2]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
//Access global ACP10 Axis Objects
udAxisObj := ADR (gAxShaft2);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gvAxShaftMaster);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
Axis_MC_GearIn.Master := udAxisMasterObj;
Axis_MC_GearIn.Slave := udAxisSlaveObj;
Axis_MC_GearInPos.Master := udAxisMasterObj;
Axis_MC_GearInPos.Slave := udAxisSlaveObj;
Axis_MC_GearOut.Slave := udAxisSlaveObj;
Axis_MC_Halt.Axis := udAxisObj;
Axis_MC_Home.Axis := udAxisObj;
Axis_MC_BR_InitModPos.Axis := udAxisMasterObj;
Axis_MC_MoveAbsolute.Axis := udAxisObj;
Axis_MC_BR_MoveAbsoluteTriggStop.Axis := udAxisObj;
Axis_MC_MoveAdditive.Axis := udAxisObj;
Axis_MC_BR_MoveAdditiveTriggStop.Axis := udAxisObj;
Axis_MC_MoveVelocity.Axis := udAxisObj;
AXis_MC_BR_MoveVelocityTriggStop.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadActualPosition.Axis := udAxisObj;
Axis_MC_ReadActualVelocity.Axis := udAxisObj;
Axis_MC_ReadActualTorque.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_Reset.Axis := udAxisObj;
Axis_MC_SetOverride.Axis := udAxisObj;
Axis_MC_Stop.Axis := udAxisObj;
//Parameter
Axis_MC_BR_CyclicRead.Axis := udAxisObj;
Axis_MC_BR_CyclicWrite.Axis := udAxisObj;
Axis_MC_BR_ReadParID.Axis := udAxisObj;
Axis_MC_BR_WriteParID.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInit2.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,92 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[3]);
lAxisActPos ACCESS ADR (gAxisActPos[3]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
//Access global ACP10 Axis Objects
udAxisObj := ADR (gAxShaft3);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gvAxShaftMaster);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
Axis_MC_GearIn.Master := udAxisMasterObj;
Axis_MC_GearIn.Slave := udAxisSlaveObj;
Axis_MC_GearInPos.Master := udAxisMasterObj;
Axis_MC_GearInPos.Slave := udAxisSlaveObj;
Axis_MC_GearOut.Slave := udAxisSlaveObj;
Axis_MC_Halt.Axis := udAxisObj;
Axis_MC_Home.Axis := udAxisObj;
Axis_MC_BR_InitModPos.Axis := udAxisMasterObj;
Axis_MC_MoveAbsolute.Axis := udAxisObj;
Axis_MC_BR_MoveAbsoluteTriggStop.Axis := udAxisObj;
Axis_MC_MoveAdditive.Axis := udAxisObj;
Axis_MC_BR_MoveAdditiveTriggStop.Axis := udAxisObj;
Axis_MC_MoveVelocity.Axis := udAxisObj;
AXis_MC_BR_MoveVelocityTriggStop.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadActualPosition.Axis := udAxisObj;
Axis_MC_ReadActualVelocity.Axis := udAxisObj;
Axis_MC_ReadActualTorque.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_Reset.Axis := udAxisObj;
Axis_MC_SetOverride.Axis := udAxisObj;
Axis_MC_Stop.Axis := udAxisObj;
//Parameter
Axis_MC_BR_CyclicRead.Axis := udAxisObj;
Axis_MC_BR_CyclicWrite.Axis := udAxisObj;
Axis_MC_BR_ReadParID.Axis := udAxisObj;
Axis_MC_BR_WriteParID.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInit3.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,92 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[4]);
lAxisActPos ACCESS ADR (gAxisActPos[4]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
//Access global ACP10 Axis Objects
udAxisObj := ADR (gAxShaft4);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gvAxShaftMaster);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
Axis_MC_GearIn.Master := udAxisMasterObj;
Axis_MC_GearIn.Slave := udAxisSlaveObj;
Axis_MC_GearInPos.Master := udAxisMasterObj;
Axis_MC_GearInPos.Slave := udAxisSlaveObj;
Axis_MC_GearOut.Slave := udAxisSlaveObj;
Axis_MC_Halt.Axis := udAxisObj;
Axis_MC_Home.Axis := udAxisObj;
Axis_MC_BR_InitModPos.Axis := udAxisMasterObj;
Axis_MC_MoveAbsolute.Axis := udAxisObj;
Axis_MC_BR_MoveAbsoluteTriggStop.Axis := udAxisObj;
Axis_MC_MoveAdditive.Axis := udAxisObj;
Axis_MC_BR_MoveAdditiveTriggStop.Axis := udAxisObj;
Axis_MC_MoveVelocity.Axis := udAxisObj;
AXis_MC_BR_MoveVelocityTriggStop.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadActualPosition.Axis := udAxisObj;
Axis_MC_ReadActualVelocity.Axis := udAxisObj;
Axis_MC_ReadActualTorque.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_Reset.Axis := udAxisObj;
Axis_MC_SetOverride.Axis := udAxisObj;
Axis_MC_Stop.Axis := udAxisObj;
//Parameter
Axis_MC_BR_CyclicRead.Axis := udAxisObj;
Axis_MC_BR_CyclicWrite.Axis := udAxisObj;
Axis_MC_BR_ReadParID.Axis := udAxisObj;
Axis_MC_BR_WriteParID.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInit4.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,92 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[5]);
lAxisActPos ACCESS ADR (gAxisActPos[5]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
//Access global ACP10 Axis Objects
udAxisObj := ADR (gAxExtra1);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gAxExtra1);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
Axis_MC_GearIn.Master := udAxisMasterObj;
Axis_MC_GearIn.Slave := udAxisSlaveObj;
Axis_MC_GearInPos.Master := udAxisMasterObj;
Axis_MC_GearInPos.Slave := udAxisSlaveObj;
Axis_MC_GearOut.Slave := udAxisSlaveObj;
Axis_MC_Halt.Axis := udAxisObj;
Axis_MC_Home.Axis := udAxisObj;
Axis_MC_BR_InitModPos.Axis := udAxisMasterObj;
Axis_MC_MoveAbsolute.Axis := udAxisObj;
Axis_MC_BR_MoveAbsoluteTriggStop.Axis := udAxisObj;
Axis_MC_MoveAdditive.Axis := udAxisObj;
Axis_MC_BR_MoveAdditiveTriggStop.Axis := udAxisObj;
Axis_MC_MoveVelocity.Axis := udAxisObj;
AXis_MC_BR_MoveVelocityTriggStop.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadActualPosition.Axis := udAxisObj;
Axis_MC_ReadActualVelocity.Axis := udAxisObj;
Axis_MC_ReadActualTorque.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_Reset.Axis := udAxisObj;
Axis_MC_SetOverride.Axis := udAxisObj;
Axis_MC_Stop.Axis := udAxisObj;
//Parameter
Axis_MC_BR_CyclicRead.Axis := udAxisObj;
Axis_MC_BR_CyclicWrite.Axis := udAxisObj;
Axis_MC_BR_ReadParID.Axis := udAxisObj;
Axis_MC_BR_WriteParID.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInitExtra1.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,92 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[6]);
lAxisActPos ACCESS ADR (gAxisActPos[6]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource := ncTRIGGER1; //ncTrigger2
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge := ncP_EDGE; //ncN_Edge
//Access global ACP10 Axis Objects
udAxisObj := ADR (gAxExtra2);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gAxExtra2);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
Axis_MC_GearIn.Master := udAxisMasterObj;
Axis_MC_GearIn.Slave := udAxisSlaveObj;
Axis_MC_GearInPos.Master := udAxisMasterObj;
Axis_MC_GearInPos.Slave := udAxisSlaveObj;
Axis_MC_GearOut.Slave := udAxisSlaveObj;
Axis_MC_Halt.Axis := udAxisObj;
Axis_MC_Home.Axis := udAxisObj;
Axis_MC_BR_InitModPos.Axis := udAxisMasterObj;
Axis_MC_MoveAbsolute.Axis := udAxisObj;
Axis_MC_BR_MoveAbsoluteTriggStop.Axis := udAxisObj;
Axis_MC_MoveAdditive.Axis := udAxisObj;
Axis_MC_BR_MoveAdditiveTriggStop.Axis := udAxisObj;
Axis_MC_MoveVelocity.Axis := udAxisObj;
AXis_MC_BR_MoveVelocityTriggStop.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadActualPosition.Axis := udAxisObj;
Axis_MC_ReadActualVelocity.Axis := udAxisObj;
Axis_MC_ReadActualTorque.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_Reset.Axis := udAxisObj;
Axis_MC_SetOverride.Axis := udAxisObj;
Axis_MC_Stop.Axis := udAxisObj;
//Parameter
Axis_MC_BR_CyclicRead.Axis := udAxisObj;
Axis_MC_BR_CyclicWrite.Axis := udAxisObj;
Axis_MC_BR_ReadParID.Axis := udAxisObj;
Axis_MC_BR_WriteParID.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.170?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInitExtra2.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,191 @@
TYPE
typAxis_Move : STRUCT (*Achsbewegungen*)
bAbsolute : BOOL; (*Absolute Bewegung*)
bAdditive : BOOL; (*Inkrementelle Bewegung*)
bVelocity : BOOL; (*Bewegung mit konstanter Geschwindigkeit*)
bVelocityControl : BOOL; (*Bewegung mit konstanter Geschwindigkeit / Drehmomentbegrenzt (Nur EPL)*)
bTorqueControl : BOOL; (*Bewegung mit konstanter Geschwindigkeit / Drehmomentregelung*)
bJogPos : BOOL; (*Tipp Vorw<72>rts*)
bJogNeg : BOOL; (*Tipp R<>ckw<6B>rts*)
bBraketest : BOOL; (*Bremstest*)
bStartGearSlave : BOOL; (*Elektronisches Getriebe Slave (Geschwindigkeit)*)
bStartGearPosSlave : BOOL; (*Elektronisches Getriebe Slave (Positon)*)
bStopGearSlave : BOOL; (*Eektronisches Getriebe Slave Stoppen*)
END_STRUCT;
typAxis_Error : STRUCT (*Achsfehler*)
bAcknowledge : BOOL;
uiID : UINT;
Text : ARRAY[0..3]OF STRING[79];
END_STRUCT;
error_typ : STRUCT (*error structure *)
AxisErrorCount : UINT; (*number of active axis errors*)
AxisWarningCount : UINT; (*number of active axis warinings*)
FunctionBlockErrorCount : UINT; (*number of active function block errors*)
ErrorRecord : MC_ERRORRECORD_REF; (*error record information*)
ErrorText : ARRAY[0..3]OF STRING[79]; (*description of first active error or warning*)
END_STRUCT;
typAxis_Status : STRUCT (*Acopos Status*)
bDisabled : BOOL; (*Disabled*)
bStandstill : BOOL; (*Standstill*)
bStopping : BOOL; (*Stopping*)
bHoming : BOOL; (*Homing*)
bMotionDiscrete : BOOL; (*Motion Discrete*)
bMotionContinous : BOOL; (*Motion Continous*)
bMotionSynchronized : BOOL; (*Motion Synchronized*)
bErrorstop : BOOL; (*Error Stop*)
bTorqueLimitReached : BOOL; (*Torquelimit from Move.bTorqueControl *)
bHomingOkDelayed : BOOL;
END_STRUCT;
typAxis_DriveStatus : STRUCT (*Acopos Drive Statos*)
bSimulation : BOOL; (*Axis Simulation*)
bNetworkInit : BOOL;
bHomeSwitch : BOOL;
bPosHWSwitch : BOOL;
bNegHWSwitch : BOOL;
bTrigger1 : BOOL;
bTrigger2 : BOOL;
bDriveEnable : BOOL;
bControllerReady : BOOL;
bControllerStatus : BOOL;
bHomingOk : BOOL;
bAxisError : BOOL;
bLagWarning : BOOL;
END_STRUCT;
typAxis_Para : STRUCT (*Achsparameter*)
bTriggStop : BOOL; (*Use Trigger Stop for Move Absolute/Additive/Velocity*)
bSetHWInputs : BOOL := 0; (*Set HW Inputs (e.g. for ACPMulti when need Limit/Ref)*)
usDirection : USINT; (*Direction for Move Velocity*)
usHomeingMode : USINT := mcHOME_DEFAULT;
udAxisModPosPeriod : UDINT := 0; (*For Modulo Position - Axis period*)
udAxisModPosFactor : UDINT := 0; (*For Modulo Position - Axis Factor*)
udAdrParamUserVar1 : UDINT; (*Address: Cyclic to Acopos transmitted Value*)
rPosition : REAL; (*Position for Absolute Movement (And Jog Target)*)
rDistance : REAL; (*Distance for Additive Movement*)
rTriggDistance : REAL; (*Distance for Trigger Movements (Absolue/Additive/Velocity)*)
rVelocity : REAL; (*Velocity for Movements*)
rOverrideVelocity : REAL := 1.0; (*Overridevalue for Velicity*)
rAcceleration : REAL; (*Acceleration for Movements*)
rOverrideAcceleration : REAL := 1.0; (*Overridevalue for Acceleration*)
rDeceleration : REAL; (*Deceleration for Movements*)
rHomePosition : REAL; (*Homeposition for Homing*)
JogMode : enAxisJogMode := (0); (*Tippbetriebsart*)
rJogLimitLow : REAL; (*Unteres Limit f<>r Jog Limits*)
rJogLimitHigh : REAL; (*Oberes Limit f<>r Jog Limits*)
rJogVelocity : REAL; (*Velocity for Jog*)
rTorqueLimit : REAL; (*Torquelimit for TorqueControl*)
rBraketestTorque : REAL; (*Tourque for Braketest*)
rBraketestPosLimit : REAL; (*Tourque for Braketest*)
iGearRatioNumerator : INT := 1; (*CAM/Gear*)
uiGearRatioDenominator : UINT := 1; (*CAM/Gear*)
rGearMasterSyncPos : REAL; (*Pos Gear *)
rGearSlaveSyncPos : REAL; (*Pos Gear *)
rGearMasterStartDistance : REAL; (*Pos Gear*)
rGearSyncVelocity : REAL; (*Pos Gear*)
rGearSyncAcceleration : REAL; (*Pos Gear*)
END_STRUCT;
typAxis : STRUCT (*Acopos Achse*)
enStep : enAxisStep; (*Achs Schritt*)
bVAxis : BOOL; (*Achse ist Virtuell*)
bPower : BOOL; (*Achse Einschalten*)
bHome : BOOL; (*Achse referenzieren*)
bHalt : BOOL; (*Achse anhalten (kann durch andres Kommando abgebr. werden)*)
bStop : BOOL; (*Achse stoppen (solange Kommando gesetzt ist)*)
rActPosition : REAL; (*Aktuelle Position*)
rActVelocity : REAL; (*Aktuelle Geschwindigkeit*)
rActTorque : REAL; (*Aktuelles Drehmoment*)
rReachedTorque : REAL; (*Erreichtes Drehmoment bei Stop mit M-Limit*)
diPositionReachedTorque : DINT; (*Position bei Erreichen des Drehmoments*)
Move : typAxis_Move; (*Achsbewegungen*)
Error : typAxis_Error;
Status : typAxis_Status;
DriveStatus : typAxis_DriveStatus;
Para : typAxis_Para;
END_STRUCT;
typMultAx_Trace : STRUCT (*MultiaxTrace*)
sStep : STRING[25];
bStartSave : BOOL; (*Activate Trace*)
bLoadConfig : BOOL; (*Load Trace Config*)
bStop : USINT; (*Stop Trace*)
uiTraceStep : USINT; (*Step of Trace*)
uiTraceState : UINT; (*Status of Trace*)
uiTraceError : UINT; (*Error of Trace*)
Trace_Config : MC_PARTRACECONFIG_REF; (*Configuration of Trase*)
Trace_DatObj_Refercence : MC_DATOBJ_REF; (*Parameter for Save the Trace-Config*)
Trace_Error_Record : MC_ERRORRECORD_REF; (*Fehlerspeicher*)
END_STRUCT;
enAxisJogMode :
(
enAxJOG, (*Tippbetrieb un<75>berwacht*)
enAxJOG_Limits, (*Tippbetrieb innerhalb Limits*)
enAxJOG_Target (*Tippbetrieb auf Ziel*)
);
enAxisStep :
( (*Acopos Schritt*)
enAxSTATE_WAIT, (*Waruten*)
enAxSTATE_SIMULATION_ON, (*Simulation einschalten*)
enAxSTATE_SIMULATION_OFF, (*Simulation ausschalten*)
enAxSTATE_POWER_ON, (*Achse einschalten*)
enAxSTATE_POWER_OFF, (*Achse einschalten*)
enAxSTATE_READY, (*Achse Bereit*)
enAxSTATE_HOME, (*Achse referenzieren*)
enAxSTATE_BRAKE_TEST, (*Bremstest durchf<68>hren*)
enAxSTATE_INIT_MOD_POS, (*Modulo Posiotion initialisieren*)
enAxSTATE_STOP, (*Achse stopppen*)
enAxSTATE_JOG, (*Axhse tippen*)
enAxSTATE_MOVE_ABSOLUTE, (*Achse absolut positionieren*)
enAxSTATE_MOVE_ABSOLUTE_TRIGSTP, (*Achse absolut positionieren Stop mit Trigger*)
enAxSTATE_MOVE_ADDITIVE, (*Achse inkrementell positionieren*)
enAxSTATE_MOVE_ADDITIVE_TRIGSTP, (*Achse inkrementell positionieren Stop mit Trigger*)
enAxSTATE_MOVE_VELOCITY, (*Achse mit konstanter Geschwindigkeit bewegen*)
enAxSTATE_MOVE_VELOCITY_CTRL, (*Achse Geschwindigkeitsregeln (M-Regelung)*)
enAxSTATE_MOVE_TORQUE_CTRL, (*Achse Drehmomentregeln*)
enAxSTATE_MOVE_GEAR_START, (*Elektronisches Getriebe Starten*)
enAxSTATE_MOVE_GEARPOS_START, (*Elektronisches Getriebe (Positionsmodus) Starten*)
enAxSTATE_MOVE_GEAR_STOP, (*Elektronisches Getriebe Stoppen*)
enAxSTATE_STOP_AFTER_ERROR, (*Stoppen nach Fehler*)
enAxSTATE_ERROR, (*Fehler*)
enAxSTATE_ERROR_CHECK, (*Fehler pr<70>fen*)
enAxSTATE_ERROR_RESET (*Achsfehler quittieren*)
);
typPS_Command : STRUCT (*command structure for power supply modules*)
bPower : BOOL; (*switch on the controller of the psm*)
bStartPowerMeter : BOOL; (*start the power evaluation of psm*)
bStopPowerMeter : BOOL; (*stop the power evaluation of psm*)
bRestartInterval : BOOL; (*restart the interval of power evaluation*)
END_STRUCT;
typPS_Parameter : STRUCT (*parameter structure for psm*)
uiIntervalTime : UINT; (*interval time for the power evaluation*)
END_STRUCT;
typPS_Status : STRUCT (*status structure for psm*)
mcPowerData : MC_POWERDATA_REF; (*evaluated power data*)
uiMissedInterval : UINT; (*MissedIntervals with power evaluation*)
END_STRUCT;
typPS_Energy : STRUCT
rConsumedEnergy : REAL; (*Verbrauchte Energie [Ws]*)
rRegeneratedEnergy : REAL; (*R<>ckgespeiste Energie [Ws]*)
END_STRUCT;
typPS : STRUCT (*substructure for psm*)
enStep : enPSStep; (*Achs Schritt*)
Command : typPS_Command; (*command structure for psm*)
Parameter : typPS_Parameter; (*parameter structure for psm*)
Status : typPS_Status; (*status structure for psm*)
Energy : typPS_Energy;
AxisState : typAxis_Status; (*axis state structure*)
DriveStatus : typAxis_DriveStatus;
Error : typAxis_Error; (*error structure*)
END_STRUCT;
enPSStep :
(
enPSSTATE_WAIT, (*Waruten*)
enPSSTATE_READY,
enPSSTATE_POWER_OFF,
enPSSTATE_POWER_ON,
enPSSTATE_POWERMETER_START,
enPSSTATE_POWERMETER_STOP,
enPSSTATE_RESTART_INTERVAL,
enPSSTATE_ERROR, (*Fehler bei FUB ausf<73>hrung*)
enPSSTATE_ERROR_AXIS, (*Achsfehler*)
enPSSTATE_ERROR_RESET (*Achsfehler quittieren*)
);
END_TYPE

View File

@@ -0,0 +1,29 @@
VAR
gPS : typPS;
gAxis : ARRAY[0..6] OF typAxis; (*Axis Datasructure / Controlinterface*)
gMAxTrace : typMultAx_Trace; (*Multiaxtrace*)
gAxisActPos : ARRAY[0..6] OF REAL;
grDummy : REAL; (*Dummy Real to be accessed from Axistasks*)
gToolalarms : typAlarm; (*Werkzeugalarme*)
END_VAR
(*//ACP/SDC Axobjects*)
VAR
gAxPS : ACP10AXIS_typ;
gvAxShaftMaster : ACP10VAXIS_typ;
gAxShaft1 : ACP10AXIS_typ;
gAxShaft2 : ACP10AXIS_typ;
gAxShaft3 : ACP10AXIS_typ;
gAxShaft4 : ACP10AXIS_typ;
gAxExtra1 : ACP10AXIS_typ;
gAxExtra2 : ACP10AXIS_typ;
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Retain*)
(*//-----------------------------------------------------------------------------------------------------*)
VAR RETAIN
grConsumedEnergy : REAL;
grRegeneratedEnergy : REAL;
grAxisABSOffShaft : ARRAY[1..4] OF REAL; (*Absolute Offsets*)
grPressPosHome : REAL := 200.0; (*Presse Grundstellung Ein/Ausfahren allg*)
END_VAR
(*Constants*)

View File

@@ -0,0 +1,44 @@
TYPE
typ_PressParam : STRUCT (*Positionen f<>r Presse (Werkzeugabh<62>ngig)*)
rPosPremount : REAL := 1000.0; (*VormontagePos [0.1 mm]*)
rPosPremountMin : REAL := 1000.0; (*Min VormontagePos [0.1 mm] (Level 4)*)
rPosPremountMax : REAL := 1050.0; (*Max VormontagePos [0.1 mm] (Level 4)*)
rPosPress : REAL := 1500.0; (*Pressposition [0.1 mm]*)
rPosPressMin : REAL := 1500.0; (*Min Pressposition [0.1 mm] (Level 4)*)
rPosPressMax : REAL := 1500.0; (*Max Pressposition [0.1 mm] (Level 4)*)
rPosPressToolslay : REAL := 1250.0; (*Pressposition Werkzeugschlitten [mm]*)
rPosPressToolslayMin : REAL := 1250.0; (*Min Pressposition Werkzeugschlitten [mm] (Level 4)*)
rPosPressToolslayMax : REAL := 1250.0; (*Max Pressposition Werkzeugschlitten [mm] (Level 4)*)
rSpeedPress : REAL := 80.0; (*Pressgeschwindigkeit [0.1 mm/s]*)
rSpeedPressMax : REAL := 150.0; (*max Pressgeschwindigkeit [0.1 mm/s] (Level 5)*)
udPresstime : UDINT := 500; (*Presszeit [ms]*)
udIDIOBlock : UDINT := 0; (*ID des IO Blocks*)
END_STRUCT;
typ_ToolInterface : STRUCT
bToolIsHome : BOOL; (*Werkzeug ist in Grundstellung*)
bToolIsMounted : BOOL; (*Werkzeug ist Vormontiert*)
bToolIsErrorous : BOOL; (*Werkzeug hat Fehler*)
bToolStop : BOOL; (*Werkzeug wird gestopt*)
END_STRUCT;
typ_enStepTool2 :
( (*Werkzeug 1 Schritte*)
enTool2Step_INIT, (*Grundstellung pr<70>fen*)
enTool2Step_WAIT_START_MOUNT, (*Auf Startbefehl warten (mit Teil)*)
enTool2Step_START_MOUNT, (*Montage Start*)
enTool2Step_CYL1_FW, (*Zylinder 1 Ausfahren*)
enTool2Step_CYL2_FW, (*Zylinder 2 Ausfahren*)
enTool2Step_WAIT_START_HOME, (*Auf Startbefehl warten f<>r Grundstellung*)
enTool2Step_HOMEPOS (*Grundstellung*)
);
typ_enStepTool1Home :
( (*Werkzeug 1 Schritte Grundstellung*)
enTool1StepHome_WAIT_START_HOME, (*Auf Startbefehl warten f<>r Grundstellung*)
enTool1StepHome_HOMEPOS (*Grundstellung*)
);
typ_enStepTool2Home :
( (*Werkzeug 2 Schritte Grundstellung*)
enTool2StepHome_WAIT_START_HOME, (*Auf Startbefehl warten f<>r Grundstellung*)
enTool2StepHome_HOMEPOS (*Grundstellung*)
);
END_TYPE

View File

@@ -0,0 +1,19 @@
VAR
gbTool1CountUp : BOOL; (*St<53>ckz<6B>hler erh<72>hen*)
gbTool2CountUp : BOOL; (*St<53>ckz<6B>hler erh<72>hen*)
genStepTool1Home : typ_enStepTool1Home; (*Schritte Werkzeug 1*)
genStepTool2Home : typ_enStepTool2Home; (*Schritte Werkzeug 2*)
gTool1Interface : typ_ToolInterface; (*Interface zu Werkzeug 1*)
gTool2Interface : typ_ToolInterface; (*Interface zu werkzeug 2*)
gusCurrentTool : USINT; (*Eingebautes Werkzeug*)
gusVCCStatusTool : ARRAY[0..5] OF USINT;
END_VAR
(*Permanent*)
VAR RETAIN
gusSelectedTool : USINT; (*Angew<65>hltes Werkzeug*)
gudPartCountShift : UDINT; (*Schichtz<74>hler*)
gudPartCountOverall : UDINT; (*Gesamtz<74>hler*)
gPressParamTools : ARRAY[0..5] OF typ_PressParam; (*Werkzeug abh<62>ngige Positionen*)
grPressSpeedEmpty : REAL := 2000.0; (*Presse Leergeschwindigkeit [0.1mm/s] max 200mm/s limited to 100mm/s*)
gudGreaseCycle : UDINT; (*Takte nach denen Geschmiert werden soll*)
END_VAR

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.170?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="DataObject" Language="Ax" Description="Initmodule Powersupply Axis">axPSi</Object>
<Object Type="DataObject" Language="Ax" Description="Initmodule Axis Shafts">axShafti</Object>
<Object Type="DataObject" Language="Ax" Description="Initmodule Axis Shafts (Simulation)">axShaftSi</Object>
<Object Type="DataObject" Language="Vax" Description="Initmodule VAxis (Master)">vShafti</Object>
<Object Type="DataObject" Language="Vax" Description="Initmodule VAxis (Simulation)">vShaftSi</Object>
<Object Type="DataObject" Language="Ax" Description="Initmodule ToolSlay1">axExtrai</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>axExtrai.ax</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.207?>
<InitParameter Version="2.34.1" NcSwId="ACP10">
<Group ID="ACP10AXIS_typ">
<Group ID="dig_in">
<Group ID="level">
<Parameter ID="reference" Value="ncACTIV_HI" />
<Parameter ID="pos_hw_end" Value="ncACTIV_LO" />
<Parameter ID="neg_hw_end" Value="ncACTIV_LO" />
<Parameter ID="trigger1" Value="ncACTIV_HI" />
<Parameter ID="trigger2" Value="ncACTIV_HI" />
</Group>
</Group>
<Group ID="encoder_if">
<Group ID="parameter">
<Parameter ID="count_dir" Value="ncSTANDARD" />
<Group ID="scaling">
<Group ID="load">
<Parameter ID="units" Value="45000" />
<Parameter ID="rev_motor" Value="1435" />
</Group>
</Group>
</Group>
</Group>
<Group ID="limit">
<Group ID="parameter">
<Parameter ID="v_pos" Value="2000.0" />
<Parameter ID="v_neg" Value="2000.0" />
<Parameter ID="a1_pos" Value="1000.0" />
<Parameter ID="a2_pos" Value="1000.0" />
<Parameter ID="a1_neg" Value="1000.0" />
<Parameter ID="a2_neg" Value="1000.0" />
<Parameter ID="t_jolt" Value="0.02" />
<Parameter ID="t_in_pos" Value="0.001" />
<Parameter ID="pos_sw_end" Value="2000000000" />
<Parameter ID="neg_sw_end" Value="-2000000000" />
<Parameter ID="ds_warning" Value="500.0" />
<Parameter ID="ds_stop" Value="1.0e+006" />
<Parameter ID="a_stop" Value="1000.0" />
<Parameter ID="dv_stop" Value="0" />
<Parameter ID="dv_stop_mode" Value="ncOFF" />
</Group>
</Group>
<Group ID="controller">
<Parameter ID="mode" Value="ncPOSITION" />
<Group ID="position">
<Parameter ID="kv" Value="75.0" Description="Proportional amplification (420 working but too hard)" />
<Parameter ID="tn" Value="0.0" />
<Parameter ID="t_predict" Value="0.0036" />
<Parameter ID="t_total" Value="0.004" />
<Parameter ID="p_max" Value="1.0e+30" />
<Parameter ID="i_max" Value="0.0" />
</Group>
<Group ID="speed">
<Parameter ID="kv" Value="9.55" />
<Parameter ID="tn" Value="0.0" />
<Parameter ID="t_filter" Value="0.0" />
<Group ID="isq_filter1">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
<Group ID="isq_filter2">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
<Group ID="isq_filter3">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
</Group>
<Group ID="uf">
<Parameter ID="type" Value="ncLINEAR" />
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
<Parameter ID="u0" Value="400.0" />
<Parameter ID="un" Value="400.0" />
<Parameter ID="fn" Value="50.0" />
<Parameter ID="k_f_slip" Value="0.0" />
</Group>
<Group ID="ff">
<Parameter ID="torque_load" Value="10.0" />
<Parameter ID="torque_pos" Value="10.0" />
<Parameter ID="torque_neg" Value="10.0" />
<Parameter ID="kv_torque" Value="1.0" />
<Parameter ID="inertia" Value="0.00683" />
<Parameter ID="t_filter_a" Value="0.0" />
</Group>
</Group>
<Group ID="move">
<Group ID="stop">
<Group ID="parameter[0]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[1]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[2]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[3]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="quickstop">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
</Group>
<Group ID="drive_error">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
</Group>
</Group>
<Group ID="homing">
<Group ID="parameter">
<Parameter ID="s" Value="100" />
<Parameter ID="v_switch" Value="50.0" />
<Parameter ID="v_trigger" Value="10.0" />
<Parameter ID="a" Value="150.0" />
<Parameter ID="mode" Value="ncABS_SWITCH" />
<Parameter ID="edge_sw" Value="ncNEGATIVE" />
<Parameter ID="start_dir" Value="ncNEGATIVE" />
<Parameter ID="trigg_dir" Value="ncPOSITIVE" />
<Parameter ID="ref_pulse" Value="ncOFF" />
<Parameter ID="fix_dir" Value="ncOFF" />
<Parameter ID="tr_s_block" Value="0.0" />
<Parameter ID="torque_lim" Value="0" />
<Parameter ID="ds_block" Value="0" />
<Parameter ID="ds_stop" Value="0" />
</Group>
</Group>
<Group ID="basis">
<Group ID="parameter">
<Parameter ID="v_pos" Value="700.0" />
<Parameter ID="v_neg" Value="700.0" />
<Parameter ID="a1_pos" Value="1000.0" />
<Parameter ID="a2_pos" Value="1000.0" />
<Parameter ID="a1_neg" Value="1000.0" />
<Parameter ID="a2_neg" Value="1000.0" />
</Group>
</Group>
</Group>
<Group ID="message">
<Group ID="text">
<Group ID="parameter">
<Parameter ID="format" Value="ncBREAK" />
<Parameter ID="columns" Value="80" />
<Parameter ID="data_modul" Value="german" />
</Group>
</Group>
</Group>
</Group>
</InitParameter>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>axPSi.ax</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<InitParameter Version="2.34.1" NcSwId="acp10">
<Group ID="ACP10AXIS_typ" Description="">
<Group ID="dig_in">
<Group ID="level">
<Parameter ID="reference" Value="ncACTIV_HI" />
<Parameter ID="pos_hw_end" Value="ncACTIV_HI" />
<Parameter ID="neg_hw_end" Value="ncACTIV_HI" />
<Parameter ID="trigger1" Value="ncACTIV_HI" />
<Parameter ID="trigger2" Value="ncACTIV_HI" />
</Group>
</Group>
<Group ID="encoder_if">
<Group ID="parameter">
<Parameter ID="count_dir" Value="ncSTANDARD" />
<Group ID="scaling">
<Group ID="load">
<Parameter ID="units" Value="100" />
<Parameter ID="rev_motor" Value="5" />
</Group>
</Group>
</Group>
</Group>
<Group ID="limit">
<Group ID="parameter">
<Parameter ID="v_pos" Value="10000" />
<Parameter ID="v_neg" Value="10000" />
<Parameter ID="a1_pos" Value="50000" />
<Parameter ID="a2_pos" Value="50000" />
<Parameter ID="a1_neg" Value="50000" />
<Parameter ID="a2_neg" Value="50000" />
<Parameter ID="t_jolt" Value="0" />
<Parameter ID="t_in_pos" Value="0" />
<Parameter ID="pos_sw_end" Value="2000000000" />
<Parameter ID="neg_sw_end" Value="-2000000000" />
<Parameter ID="ds_warning" Value="500" />
<Parameter ID="ds_stop" Value="1000" />
<Parameter ID="a_stop" Value="1.0e30" />
<Parameter ID="dv_stop" Value="0" />
<Parameter ID="dv_stop_mode" Value="ncOFF" />
</Group>
</Group>
<Group ID="controller">
<Parameter ID="mode" Value="ncPOSITION" />
<Group ID="position">
<Parameter ID="kv" Value="50" />
<Parameter ID="tn" Value="0" />
<Parameter ID="t_predict" Value="0.0008" />
<Parameter ID="t_total" Value="0.0008" />
<Parameter ID="p_max" Value="10000" />
<Parameter ID="i_max" Value="0" />
</Group>
<Group ID="speed">
<Parameter ID="kv" Value="2.0" />
<Parameter ID="tn" Value="0" />
<Parameter ID="t_filter" Value="0.0" />
<Group ID="isq_filter1">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
<Group ID="isq_filter2">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
<Group ID="isq_filter3">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
</Group>
<Group ID="uf">
<Parameter ID="type" Value="ncLINEAR" />
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
<Parameter ID="u0" Value="0" />
<Parameter ID="un" Value="0" />
<Parameter ID="fn" Value="50.0" />
<Parameter ID="k_f_slip" Value="0" />
</Group>
<Group ID="ff">
<Parameter ID="torque_load" Value="0.0" />
<Parameter ID="torque_pos" Value="0.0" />
<Parameter ID="torque_neg" Value="0.0" />
<Parameter ID="kv_torque" Value="0.0" />
<Parameter ID="inertia" Value="0.0" />
<Parameter ID="t_filter_a" Value="0.0" />
</Group>
</Group>
<Group ID="move">
<Group ID="stop">
<Group ID="parameter[0]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[1]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[2]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[3]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="quickstop">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
</Group>
<Group ID="drive_error">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
</Group>
</Group>
<Group ID="homing">
<Group ID="parameter">
<Parameter ID="s" Value="0" />
<Parameter ID="v_switch" Value="5000" />
<Parameter ID="v_trigger" Value="500" />
<Parameter ID="a" Value="50000" />
<Parameter ID="mode" Value="ncDIRECT" />
<Parameter ID="edge_sw" Value="ncPOSITIVE" />
<Parameter ID="start_dir" Value="ncPOSITIVE" />
<Parameter ID="trigg_dir" Value="ncPOSITIVE" />
<Parameter ID="ref_pulse" Value="ncOFF" />
<Parameter ID="tr_s_block" Value="0" />
</Group>
</Group>
<Group ID="basis">
<Group ID="parameter">
<Parameter ID="v_pos" Value="5000" />
<Parameter ID="v_neg" Value="5000" />
<Parameter ID="a1_pos" Value="50000" />
<Parameter ID="a2_pos" Value="50000" />
<Parameter ID="a1_neg" Value="50000" />
<Parameter ID="a2_neg" Value="50000" />
</Group>
</Group>
</Group>
<Group ID="message">
<Group ID="text">
<Group ID="parameter">
<Parameter ID="format" Value="ncBREAK" />
<Parameter ID="columns" Value="80" />
<Parameter ID="data_modul" Value="acp10etxen" />
</Group>
</Group>
</Group>
</Group>
</InitParameter>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>axShaftSi.ax</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<InitParameter Version="2.34.1" NcSwId="acp10">
<Group ID="ACP10AXIS_typ" Description="">
<Group ID="dig_in">
<Group ID="level">
<Parameter ID="reference" Value="ncACTIV_HI" />
<Parameter ID="pos_hw_end" Value="ncACTIV_HI" />
<Parameter ID="neg_hw_end" Value="ncACTIV_HI" />
<Parameter ID="trigger1" Value="ncACTIV_HI" />
<Parameter ID="trigger2" Value="ncACTIV_HI" />
</Group>
</Group>
<Group ID="encoder_if">
<Group ID="parameter">
<Parameter ID="count_dir" Value="ncSTANDARD" />
<Group ID="scaling">
<Group ID="load">
<Parameter ID="units" Value="100" Description="Units at the load [0.1mm]" />
<Parameter ID="rev_motor" Value="5" />
</Group>
</Group>
</Group>
</Group>
<Group ID="limit">
<Group ID="parameter">
<Parameter ID="v_pos" Value="5000.0" Description="Speed in positive direction [0.1mm/s]" />
<Parameter ID="v_neg" Value="5000.0" Description="Speed in negative direction [0.1mm/s]" />
<Parameter ID="a1_pos" Value="10000.0" Description="Acceleration in positive direction [0.1mm/s^2]" />
<Parameter ID="a2_pos" Value="10000.0" Description="Deceleration in positive direction [0.1mm/s^2]" />
<Parameter ID="a1_neg" Value="10000.0" Description="Acceleration in negative direction [0.1mm/s^2]" />
<Parameter ID="a2_neg" Value="10000.0" Description="Deceleration in negative direction [0.1mm/s^2]" />
<Parameter ID="t_jolt" Value="0" />
<Parameter ID="t_in_pos" Value="0" />
<Parameter ID="pos_sw_end" Value="2000000000" />
<Parameter ID="neg_sw_end" Value="-2000000000" />
<Parameter ID="ds_warning" Value="500" />
<Parameter ID="ds_stop" Value="1000" />
<Parameter ID="a_stop" Value="1.0e30" />
<Parameter ID="dv_stop" Value="0" />
<Parameter ID="dv_stop_mode" Value="ncOFF" />
</Group>
</Group>
<Group ID="controller">
<Parameter ID="mode" Value="ncPOSITION" />
<Group ID="position">
<Parameter ID="kv" Value="50" />
<Parameter ID="tn" Value="0" />
<Parameter ID="t_predict" Value="0.0008" />
<Parameter ID="t_total" Value="0.0008" />
<Parameter ID="p_max" Value="10000" />
<Parameter ID="i_max" Value="0" />
</Group>
<Group ID="speed">
<Parameter ID="kv" Value="2.0" />
<Parameter ID="tn" Value="0" />
<Parameter ID="t_filter" Value="0.0" />
<Group ID="isq_filter1">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
<Group ID="isq_filter2">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
<Group ID="isq_filter3">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
</Group>
<Group ID="uf">
<Parameter ID="type" Value="ncLINEAR" />
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
<Parameter ID="u0" Value="0" />
<Parameter ID="un" Value="0" />
<Parameter ID="fn" Value="50.0" />
<Parameter ID="k_f_slip" Value="0" />
</Group>
<Group ID="ff">
<Parameter ID="torque_load" Value="0.0" />
<Parameter ID="torque_pos" Value="0.0" />
<Parameter ID="torque_neg" Value="0.0" />
<Parameter ID="kv_torque" Value="0.0" />
<Parameter ID="inertia" Value="0.0" />
<Parameter ID="t_filter_a" Value="0.0" />
</Group>
</Group>
<Group ID="move">
<Group ID="stop">
<Group ID="parameter[0]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[1]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[2]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[3]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="quickstop">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
</Group>
<Group ID="drive_error">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
</Group>
</Group>
<Group ID="homing">
<Group ID="parameter">
<Parameter ID="s" Value="0" />
<Parameter ID="v_switch" Value="5000" />
<Parameter ID="v_trigger" Value="500" />
<Parameter ID="a" Value="50000" />
<Parameter ID="mode" Value="ncDIRECT" />
<Parameter ID="edge_sw" Value="ncPOSITIVE" />
<Parameter ID="start_dir" Value="ncPOSITIVE" />
<Parameter ID="trigg_dir" Value="ncPOSITIVE" />
<Parameter ID="ref_pulse" Value="ncOFF" />
<Parameter ID="tr_s_block" Value="0" />
</Group>
</Group>
<Group ID="basis">
<Group ID="parameter">
<Parameter ID="v_pos" Value="5000" />
<Parameter ID="v_neg" Value="5000" />
<Parameter ID="a1_pos" Value="50000" />
<Parameter ID="a2_pos" Value="50000" />
<Parameter ID="a1_neg" Value="50000" />
<Parameter ID="a2_neg" Value="50000" />
</Group>
</Group>
</Group>
<Group ID="message">
<Group ID="text">
<Group ID="parameter">
<Parameter ID="format" Value="ncBREAK" />
<Parameter ID="columns" Value="80" />
<Parameter ID="data_modul" Value="acp10etxen" />
</Group>
</Group>
</Group>
</Group>
</InitParameter>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>axShafti.ax</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<InitParameter Version="2.34.1" NcSwId="acp10">
<Group ID="ACP10AXIS_typ" Description="">
<Group ID="dig_in">
<Group ID="level">
<Parameter ID="reference" Value="ncACTIV_HI" />
<Parameter ID="pos_hw_end" Value="ncACTIV_HI" />
<Parameter ID="neg_hw_end" Value="ncACTIV_HI" />
<Parameter ID="trigger1" Value="ncACTIV_HI" />
<Parameter ID="trigger2" Value="ncACTIV_HI" />
</Group>
</Group>
<Group ID="encoder_if">
<Group ID="parameter">
<Parameter ID="count_dir" Value="ncSTANDARD" />
<Group ID="scaling">
<Group ID="load">
<Parameter ID="units" Value="100" Description="Units at the load [0.1mm]" />
<Parameter ID="rev_motor" Value="5" />
</Group>
</Group>
</Group>
</Group>
<Group ID="limit">
<Group ID="parameter">
<Parameter ID="v_pos" Value="500.0" Description="Speed in positive direction [0.1mm/s]" />
<Parameter ID="v_neg" Value="500.0" Description="Speed in negative direction [0.1mm/s]" />
<Parameter ID="a1_pos" Value="10000.0" Description="Acceleration in positive direction [0.1mm/s^2]" />
<Parameter ID="a2_pos" Value="10000.0" Description="Deceleration in positive direction [0.1mm/s^2]" />
<Parameter ID="a1_neg" Value="10000.0" Description="Acceleration in negative direction [0.1mm/s^2]" />
<Parameter ID="a2_neg" Value="10000.0" Description="Deceleration in negative direction [0.1mm/s^2]" />
<Parameter ID="t_jolt" Value="0" />
<Parameter ID="t_in_pos" Value="0" />
<Parameter ID="pos_sw_end" Value="2000000000" />
<Parameter ID="neg_sw_end" Value="-2000000000" />
<Parameter ID="ds_warning" Value="10.0" Description="Lag error limit for display of a warning [0.1mm]" />
<Parameter ID="ds_stop" Value="25.0" Description="Lag error limit for stop of a movement [0.1mm]" />
<Parameter ID="a_stop" Value="1.0e30" />
<Parameter ID="dv_stop" Value="0" />
<Parameter ID="dv_stop_mode" Value="ncOFF" />
</Group>
</Group>
<Group ID="controller">
<Parameter ID="mode" Value="ncPOSITION" />
<Group ID="position">
<Parameter ID="kv" Value="50" />
<Parameter ID="tn" Value="0" />
<Parameter ID="t_predict" Value="0.0008" />
<Parameter ID="t_total" Value="0.0008" />
<Parameter ID="p_max" Value="10000" />
<Parameter ID="i_max" Value="0" />
</Group>
<Group ID="speed">
<Parameter ID="kv" Value="2.0" />
<Parameter ID="tn" Value="0" />
<Parameter ID="t_filter" Value="0.0" />
<Group ID="isq_filter1">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
<Group ID="isq_filter2">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
<Group ID="isq_filter3">
<Parameter ID="type" Value="ncOFF" />
<Parameter ID="a0" Value="0.0" />
<Parameter ID="a1" Value="0.0" />
<Parameter ID="b0" Value="0.0" />
<Parameter ID="b1" Value="0.0" />
<Parameter ID="b2" Value="0.0" />
<Parameter ID="c0_par_id" Value="0" />
<Parameter ID="c1_par_id" Value="0" />
</Group>
</Group>
<Group ID="uf">
<Parameter ID="type" Value="ncLINEAR" />
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
<Parameter ID="u0" Value="0" />
<Parameter ID="un" Value="0" />
<Parameter ID="fn" Value="50.0" />
<Parameter ID="k_f_slip" Value="0" />
</Group>
<Group ID="ff">
<Parameter ID="torque_load" Value="0.0" />
<Parameter ID="torque_pos" Value="0.0" />
<Parameter ID="torque_neg" Value="0.0" />
<Parameter ID="kv_torque" Value="0.0" />
<Parameter ID="inertia" Value="0.0" />
<Parameter ID="t_filter_a" Value="0.0" />
</Group>
</Group>
<Group ID="move">
<Group ID="stop">
<Group ID="parameter[0]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[1]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[2]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="parameter[3]">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
<Parameter ID="controller" Value="ncON" />
</Group>
<Group ID="quickstop">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
</Group>
<Group ID="drive_error">
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
</Group>
</Group>
<Group ID="homing">
<Group ID="parameter">
<Parameter ID="s" Value="0" />
<Parameter ID="v_switch" Value="100.0" />
<Parameter ID="v_trigger" Value="50.0" />
<Parameter ID="a" Value="1000.0" />
<Parameter ID="mode" Value="ncHOME_OFFSET" />
<Parameter ID="edge_sw" Value="ncPOSITIVE" />
<Parameter ID="start_dir" Value="ncPOSITIVE" />
<Parameter ID="trigg_dir" Value="ncPOSITIVE" />
<Parameter ID="ref_pulse" Value="ncOFF" />
<Parameter ID="tr_s_block" Value="0" />
</Group>
</Group>
<Group ID="basis">
<Group ID="parameter">
<Parameter ID="v_pos" Value="500.0" />
<Parameter ID="v_neg" Value="500.0" />
<Parameter ID="a1_pos" Value="1000.0" />
<Parameter ID="a2_pos" Value="1000.0" />
<Parameter ID="a1_neg" Value="1000.0" />
<Parameter ID="a2_neg" Value="1000.0" />
</Group>
</Group>
</Group>
<Group ID="message">
<Group ID="text">
<Group ID="parameter">
<Parameter ID="format" Value="ncBREAK" />
<Parameter ID="columns" Value="80" />
<Parameter ID="data_modul" Value="acp10etxen" />
</Group>
</Group>
</Group>
</Group>
</InitParameter>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>vShaftSi.vax</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<InitParameter Version="2.34.1" NcSwId="acp10">
<Group ID="ACP10VAXIS_typ" Description="">
<Group ID="limit">
<Group ID="parameter">
<Parameter ID="t_jolt" Value="0" />
</Group>
</Group>
<Group ID="move">
<Group ID="stop">
<Group ID="parameter[0]">
<Parameter ID="decel_ramp" Value="ncA_MOVE" />
</Group>
<Group ID="parameter[1]">
<Parameter ID="decel_ramp" Value="ncA_MOVE" />
</Group>
<Group ID="parameter[2]">
<Parameter ID="decel_ramp" Value="ncA_MOVE" />
</Group>
<Group ID="parameter[3]">
<Parameter ID="decel_ramp" Value="ncA_MOVE" />
</Group>
</Group>
<Group ID="homing">
<Group ID="parameter">
<Parameter ID="s" Value="0" />
</Group>
</Group>
<Group ID="basis">
<Group ID="parameter">
<Parameter ID="v_pos" Value="5000" />
<Parameter ID="v_neg" Value="5000" />
<Parameter ID="a1_pos" Value="50000" />
<Parameter ID="a2_pos" Value="50000" />
<Parameter ID="a1_neg" Value="50000" />
<Parameter ID="a2_neg" Value="50000" />
</Group>
</Group>
</Group>
<Group ID="message">
<Group ID="text">
<Group ID="parameter">
<Parameter ID="format" Value="ncBREAK" />
<Parameter ID="columns" Value="80" />
<Parameter ID="data_modul" Value="acp10etxde" />
</Group>
</Group>
</Group>
</Group>
</InitParameter>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>vShafti.vax</File>
</Files>
</DataObject>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<InitParameter Version="2.34.1" NcSwId="acp10">
<Group ID="ACP10VAXIS_typ" Description="">
<Group ID="limit">
<Group ID="parameter">
<Parameter ID="t_jolt" Value="0" />
</Group>
</Group>
<Group ID="move">
<Group ID="stop">
<Group ID="parameter[0]">
<Parameter ID="decel_ramp" Value="ncA_MOVE" />
</Group>
<Group ID="parameter[1]">
<Parameter ID="decel_ramp" Value="ncA_MOVE" />
</Group>
<Group ID="parameter[2]">
<Parameter ID="decel_ramp" Value="ncA_MOVE" />
</Group>
<Group ID="parameter[3]">
<Parameter ID="decel_ramp" Value="ncA_MOVE" />
</Group>
</Group>
<Group ID="homing">
<Group ID="parameter">
<Parameter ID="s" Value="0" />
</Group>
</Group>
<Group ID="basis">
<Group ID="parameter">
<Parameter ID="v_pos" Value="5000" />
<Parameter ID="v_neg" Value="5000" />
<Parameter ID="a1_pos" Value="50000" />
<Parameter ID="a2_pos" Value="50000" />
<Parameter ID="a1_neg" Value="50000" />
<Parameter ID="a2_neg" Value="50000" />
</Group>
</Group>
</Group>
<Group ID="message">
<Group ID="text">
<Group ID="parameter">
<Parameter ID="format" Value="ncBREAK" />
<Parameter ID="columns" Value="80" />
<Parameter ID="data_modul" Value="acp10etxde" />
</Group>
</Group>
</Group>
</Group>
</InitParameter>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Cyclic code">MAxTraceCyclic.ab</File>
<File Description="Initialization code">MAxTraceInit.ab</File>
<File Description="Local variables" Private="true">MAxTrace.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,11 @@
(*//-----------------------------------------------------------------------------------------------------*)
(*//MC FunctionBlocks*)
VAR
Axis_MC_BR_ParTrace : MC_BR_ParTrace := (0); (*Parameter Trace*)
Axis_MC_BR_ReadParTraceStatus : MC_BR_ReadParTraceStatus := (0); (*Parameter Trace Status*)
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Dynamic Vars*)
VAR
lMAxTrace : REFERENCE TO typMultAx_Trace; (*Axis Datastruct *)
END_VAR

View File

@@ -0,0 +1,107 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: MAxTrace
* File: MAxTraceCyclic.ab
* Author: michi
* Created: July 18, 2012
********************************************************************
* Implementation of program MAxTrace
********************************************************************)
PROGRAM _CYCLIC
;STATE Machine Trace
SELECT lMAxTrace.uiTraceStep
;==============================================
;READY
STATE AxTraceSTATE_READY
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_READY")
WHEN (lMAxTrace.bLoadConfig = 1)
lMAxTrace.bLoadConfig = 0
NEXT AxTraceSTATE_LOAD_CONFIG
WHEN (lMAxTrace.bStartSave = 1)
lMAxTrace.bStartSave = 0
NEXT AxTraceSTATE_START_SAVE
Axis_MC_BR_ParTrace.Execute = 0
//Axis_MC_BR_ParTraceConfig.Execute = 0
Axis_MC_BR_ReadParTraceStatus.Enable = 0
;==============================================
;Load Trace Config
STATE AxTraceSTATE_LOAD_CONFIG
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_LOAD_CONFIG")
//Axis_MC_BR_ParTraceConfig.Command = mcLoad
//Axis_MC_BR_ParTraceConfig.AdrTraceConfig = adr (lMAxTrace.Trace_DatObj_Refercence)
//Axis_MC_BR_ParTraceConfig.Execute = 1
;check if loading is finished
//when (Axis_MC_BR_ParTrace.Done)
// Axis_MC_BR_ParTraceConfig.Execute = 0
//next AxTraceSTATE_READY
;check for error occured
//when (Axis_MC_BR_ParTraceConfig.Error)
// Axis_MC_BR_ParTraceConfig.Execute = 0
// Axis_MC_BR_ParTraceConfig.ErrorRecord
//next AxTraceSTATE_ERROR
;==============================================
;Start and Save Trace
STATE AxTraceSTATE_START_SAVE
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_START_SAVE")
Axis_MC_BR_ParTrace.Configuration = lMAxTrace.Trace_Config
Axis_MC_BR_ParTrace.Command = mcSTART + mcSAVE
Axis_MC_BR_ParTrace.Execute = 1
;check if Trace is finished
WHEN (Axis_MC_BR_ParTrace.Done)
Axis_MC_BR_ParTrace.Execute = 0
NEXT AxTraceSTATE_READY
;check for error occured
WHEN (Axis_MC_BR_ParTrace.Error)
Axis_MC_BR_ParTrace.Execute = 0
lMAxTrace.uiTraceError = Axis_MC_BR_ParTrace.ErrorID
lMAxTrace.Trace_Error_Record = Axis_MC_BR_ParTrace.ErrorRecord
NEXT AxTraceSTATE_ERROR
WHEN (lMAxTrace.bStop = 1)
Axis_MC_BR_ParTrace.Execute = 0
lMAxTrace.bStop = 0
NEXT AxTraceSTATE_STOP
;==============================================
;Stop Trace
STATE AxTraceSTATE_STOP
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_STOP")
Axis_MC_BR_ParTrace.Command = mcSTOP
Axis_MC_BR_ParTrace.Execute = 1
;check if Trace is finished
WHEN (Axis_MC_BR_ParTrace.Done)
Axis_MC_BR_ParTrace.Execute = 0
NEXT AxTraceSTATE_READY
;check for error occured
WHEN (Axis_MC_BR_ParTrace.Error)
Axis_MC_BR_ParTrace.Execute = 0
;Axis_MC_BR_ParTrace.ErrorRecord
NEXT AxTraceSTATE_ERROR
;==============================================
;Error
STATE AxTraceSTATE_ERROR
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_ERROR")
WHEN (1 = 1)
NEXT AxTraceSTATE_READY
ENDSELECT
Axis_MC_BR_ParTrace FUB MC_BR_ParTrace ()
//Axis_MC_BR_ParTraceConfig fub MC_BR_ParTraceConfig ()
Axis_MC_BR_ReadParTraceStatus FUB MC_BR_ReadParTraceStatus ()
END_PROGRAM

View File

@@ -0,0 +1,17 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: MAxTrace
* File: MAxTraceInit.ab
* Author: michi
* Created: July 18, 2012
********************************************************************
* Implementation of program MAxTrace
********************************************************************)
PROGRAM _INIT
lMAxTrace ACCESS ADR (gMAxTrace);
END_PROGRAM

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.207?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="File" Description="Achsdatentypen">GlobalAxis.typ</Object>
<Object Type="File" Description="Werkzeugdatentypen">GlobalTool.typ</Object>
<Object Type="File" Description="Package variables">GlobalAxis.var</Object>
<Object Type="File" Description="Package variables">GlobalTool.var</Object>
<Object Type="Program" Language="IEC" Description="Controller">PressCtrl</Object>
<Object Type="Program" Language="IEC" Description="Werkzeugselektor">ToolCtrl</Object>
<Object Type="Program" Language="IEC" Description="Toolparameter">ToolParam</Object>
<Object Type="Program" Language="IEC" Description="Shift/Overallcounter">PartCount</Object>
<Object Type="Program" Language="IEC" Description="Multi Axis Trace">MAxTrace</Object>
<Object Type="Program" Language="IEC" Description="Ctrl PowerSupply">AxisPS</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl (Master)">Axisctrl</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Shaft 1">Axisctrl1</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Shaft 2">Axisctrl2</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Shaft 3">Axisctrl3</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Shaft 4">Axisctrl4</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Tool 1">AxisctrlExtra1</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Tool 2">AxisctrlExtra2</Object>
<Object Type="Package">Init</Object>
<Object Type="Package">ACPPar</Object>
<Object Type="DataObject" Language="Ett">acp10etxde</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.24 SP06?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Implementation code">PartCount.st</File>
<File Description="Local data types" Private="true">PartCount.typ</File>
<File Description="Local variables" Private="true">PartCount.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,56 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: PartCount
* File: PartCount.st
* Author: michi
* Created: January 27, 2013
********************************************************************
* Implementation of program PartCount
********************************************************************)
PROGRAM _INIT
(* TODO : Add your code here *)
END_PROGRAM
PROGRAM _CYCLIC
IF gbTool1CountUp THEN
gudPartCountOverall := gudPartCountOverall + 1;
gudPartCountShift := gudPartCountShift + 1;
gbTool1CountUp := FALSE;
udActualCyclewithoutGrease := udActualCyclewithoutGrease + 1;
IF udActualCyclewithoutGrease >= gudGreaseCycle THEN
udActualCyclewithoutGrease := 0;
bGrease := TRUE;
END_IF
END_IF
IF gbTool2CountUp THEN
gudPartCountOverall := gudPartCountOverall + 1;
gudPartCountShift := gudPartCountShift + 1;
gbTool2CountUp := FALSE;
udActualCyclewithoutGrease := udActualCyclewithoutGrease + 1;
IF udActualCyclewithoutGrease >= gudGreaseCycle THEN
udActualCyclewithoutGrease := 0;
bGrease := TRUE;
END_IF
END_IF
IF bResetShiftcounter THEN
bResetShiftcounter := FALSE;
gudPartCountShift := 0;
END_IF
TON_Grease.IN := bGrease;
TON_Grease.PT := t#60s;
TON_Grease ();
IF TON_Grease.Q THEN
bGrease := FALSE;
END_IF
gbOuCentralGrease := bGrease;
END_PROGRAM

View File

@@ -0,0 +1,14 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: PartCount
* File: PartCount.typ
* Author: michi
* Created: January 27, 2013
********************************************************************
* Local data types of program PartCount
********************************************************************)
TYPE
END_TYPE

View File

@@ -0,0 +1,8 @@
VAR RETAIN
udActualCyclewithoutGrease : UDINT;
END_VAR
VAR
bResetShiftcounter : BOOL;
TON_Grease : TON;
bGrease : BOOL;
END_VAR

View File

@@ -0,0 +1,15 @@
FUNCTION_BLOCK FUB_CylinderCheck
TON_CylinderFw.IN := bInOutputCylinderFw AND (bInSensorCylinderBw OR NOT bInSensorCylinderFw);
TON_CylinderFw.PT := tInCylinderFw;
TON_CylinderFw ();
bOuErrorCylinderFw := TON_CylinderFw.Q;
TON_CylinderBw.IN := bInOutputCylinderBw AND (bInSensorCylinderFw OR NOT bInSensorCylinderBw);
TON_CylinderBw.PT := tInCylinderBw;
TON_CylinderBw ();
bOuErrorCylinderBw := TON_CylinderBw.Q;
bOuErrorBothSensorsHigh := bInSensorCylinderFw AND bInSensorCylinderBw;
END_FUNCTION_BLOCK

View File

@@ -0,0 +1,46 @@
FUNCTION HomeAxis
IF (enInStep = enHomeOffsetPerm) THEN
//Home with permanent Stored Offset
//---------------------------
InAxis.Para.rHomePosition := rInPermanentOffset;
InAxis.bHome := TRUE;
enInStep := enHomeOffsetPermDone;
ELSIF (enInStep = enHomeOffsetPermDone) THEN
//Home with permanent Stored Offset
//---------------------------
IF InAxis.Status.bHomingOkDelayed AND NOT InAxis.bHome THEN
enInStep := enHomeIdle;
END_IF
ELSIF (enInStep = enHomeOffset0) THEN
//Home with Stored 0
//---------------------------
InAxis.Para.rHomePosition := 0.0;
InAxis.bHome := TRUE;
enInStep := enHomeOffset0Done;
ELSIF (enInStep = enHomeOffset0Done) THEN
//Home with Stored 0
//---------------------------
IF InAxis.Status.bHomingOkDelayed AND NOT InAxis.bHome THEN
enInStep := enHomeStorePos;
END_IF
ELSIF (enInStep = enHomeOffset0NoStore) THEN
//Home with Stored 0
//---------------------------
InAxis.Para.rHomePosition := 0.0;
InAxis.bHome := TRUE;
enInStep := enHomeOffset0DoneNoStore;
ELSIF (enInStep = enHomeOffset0DoneNoStore) THEN
//Home with Stored 0
//---------------------------
IF InAxis.Status.bHomingOkDelayed AND NOT InAxis.bHome THEN
enInStep := enHomeIdle;
END_IF
ELSIF (enInStep = enHomeStorePos) THEN
//Store Axis Position
//---------------------------
rInPermanentOffset := - InAxis.rActPosition + rInOffset;
ERRxwarning (50001, 0 , ADR ('Permanenter Geberoffset einer Spindel wurde ver<65>ndert'));
enInStep := enHomeOffsetPerm;
END_IF
END_FUNCTION

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Implementation code">PressCtrl.st</File>
<File Description="InitCode">PressCtrlInit.st</File>
<File Description="Local data types" Private="true">PressCtrl.typ</File>
<File Description="Local variables" Private="true">PressCtrl.var</File>
<File Description="Home an Absoulte Encoder Axis">HomeAxis.st</File>
<File Private="true">PressCtrl.fun</File>
<File Description="Zylinderüberwachung">FUB_CylinderCheck.st</File>
</Files>
</Program>

View File

@@ -0,0 +1,29 @@
FUNCTION HomeAxis : BOOL (*Home an Absoulte Encoder Axis*)
VAR_INPUT
InAxis : REFERENCE TO typAxis; (*Achsreferenz*)
rInPermanentOffset : REFERENCE TO REAL; (*Referenz auf permanenten Offset*)
rInOffset : REAL;
enInStep : REFERENCE TO typ_enHome; (*Step*)
END_VAR
END_FUNCTION
FUNCTION_BLOCK FUB_CylinderCheck (*Zylinder<EFBFBD>berwachung*)
VAR_INPUT
bInOutputCylinderFw : BOOL; (*Ausgang Zylinder Ausfahren*)
bInOutputCylinderBw : BOOL; (*Ausgang Zylinder Einfahren*)
bInSensorCylinderFw : BOOL; (*Sensor Zylinder Ausfahren*)
bInSensorCylinderBw : BOOL; (*Sensor Zylinder Einfahren*)
END_VAR
VAR_OUTPUT
bOuErrorCylinderFw : BOOL; (*Fehler Zylinder Ausfahren*)
bOuErrorCylinderBw : BOOL; (*Fehler Zylinder Einfahren*)
bOuErrorBothSensorsHigh : BOOL; (*Fehler beide Zynlinderschalter bet<EFBFBD>tigt*)
END_VAR
VAR
tInCylinderFw : TIME := T#2s; (*<EFBFBD>berwachungszeit Zylinder Ausfahren*)
tInCylinderBw : TIME := T#2s; (*<EFBFBD>berwachungszeit Zylinder Ausfahren*)
TON_CylinderFw : TON;
TON_CylinderBw : TON;
END_VAR
END_FUNCTION_BLOCK

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,165 @@
(**)
TYPE
typ_enStepPress :
( (*Absolutoffset einstellen*)
enPressStep_INIT := 0, (*Grundstellung pr<70>fen*)
enPressStep_WAIT_START, (*Auf Startbefehl warten (mit Teil)*)
enPressStep_WAIT_AX_SINGLE, (*Warten bis Achsen Unsync und Bereit*)
enPressStep_REF_PRESS, (*Referenzwerte Laden*)
enPressStep_LEVEL_PRESS, (*Presse ggf. Ausniviellieren*)
enPressStep_LEVEL_WAIT, (*Presse ggf. Ausniviellieren*)
enPressStep_START_GEAR, (*Getriebe Starten*)
enPressStep_MOVE_HOME_LVL, (*Presse auffahren*)
enPressStep_MOVE_HOME_LVL_WAIT, (*Presse aufgefahren*)
enPressStep_SELECT_TOOL, (*Werkzeug ausw<73>hlen*)
enPressStep_TOOL1_OPENDOOR := 10, (*Werkzeug 1 Schutzt<7A>r <20>ffnen*)
enPressStep_TOOL1_IN, (*Werkzeug 1 einfahren*)
enPressStep_TOOL1_IN_WAIT, (*Werkzeug 1 einfahren warten bis eingefahren*)
enPressStep_PRESS_MOUNTPOS1, (*Presse auf Montageposition Wzg 1 fahren*)
enPressStep_PRESS_MOUNTPOS1_WAIT, (*Presse auf Montageposition Wzg 1 fahren*)
enPressStep_PRESS_PRESSPOS1, (*Presse auf Pressposition Wzg 1 fahren*)
enPressStep_PRESS_PRESSPOS1_WAIT, (*Presse auf Pressposition Wzg 1 fahren*)
enPressStep_WAIT_PRESSED1, (*Ruhezeit Wzg 1*)
enPressStep_PRESS_HOMEPOS1, (*Presse auf Ruheposition fahren*)
enPressStep_PRESS_HOMEPOS1_WAIT, (*Presse auf Ruheposition fahren*)
enPressStep_TOOL1_OUT, (*Werkzeug 1 ausfahren*)
enPressStep_TOOL1_OUT_WAIT, (*Werkzeug 2 ausgefahren*)
enPressStep_TOOL1_CLOSEDOOR, (*Werkzeug 1 Schutzt<7A>r schlie<69>en*)
enPressStep_TOOL2_OPENDOOR := 30, (*Werkzeug 1 Schutzt<7A>r <20>ffnen*)
enPressStep_TOOL2_IN, (*Werkzeug 2 einfahren*)
enPressStep_TOOL2_IN_WAIT, (*Werkzeug 2 einfahren warten bis eingefahren*)
enPressStep_PRESS_MOUNTPOS2, (*Presse auf Montageposition Wzg 2 fahren*)
enPressStep_PRESS_MOUNTPOS2_WAIT, (*Presse auf Montageposition Wzg 2 fahren*)
enPressStep_PRESS_PRESSPOS2, (*Presse auf Pressposition Wzg 2 fahren*)
enPressStep_PRESS_PRESSPOS2_WAIT, (*Presse auf Pressposition Wzg 2 fahren*)
enPressStep_WAIT_PRESSED2, (*Ruhezeit Wzg 2*)
enPressStep_PRESS_HOMEPOS2, (*Presse auf Ruheposition fahren*)
enPressStep_PRESS_HOMEPOS2_WAIT, (*Presse auf Ruheposition fahren*)
enPressStep_TOOL2_OUT, (*Werkzeug einfahren*)
enPressStep_TOOL2_OUT_WAIT, (*Werkzeug einfahren*)
enPressStep_TOOL2_CLOSEDOOR (*Werkzeug 2 Schutzt<7A>r schlie<69>en*)
);
typ_enStepHoming :
( (*Grundstellungsfahrt*)
enPressStepHoming_INIT, (*Auf Start warten*)
enPressStepHoming_WAIT_START, (*Auf Startbefehl warten*)
enPressStepHoming_WAIT_AX_SINGLE, (*Warten bis Achsen Unsync und Bereit*)
enPressStepHoming_REF_PRESS, (*Referenzwerte Laden*)
enPressStepHoming_LEVEL_PRESS, (*Presse ggf. Ausniviellieren*)
enPressStepHoming_LEVEL_WAIT, (*Presse ggf. Ausniviellieren*)
enPressStepHoming_START_GEAR, (*Getriebe Starten*)
enPressStepHoming_MOVE_HOME, (*Presse auffahren*)
enPressStepHoming_MOVE_HOME_WAIT, (*Presse aufgefahren*)
enPressStepHoming_TOOL1_REF, (*Werkzeugschlitten 1 referenzieren*)
enPressStepHoming_TOOL1_REF_WAIT, (*Werkzeugschlitten 1 referenziert*)
enPressStepHoming_TOOL1_OUT, (*Werkzeugschlitten 1 ausfahren*)
enPressStepHoming_TOOL1_OUT_WAIT, (*Werkzeugschlitten 1 ausgefahren*)
enPressStepHoming_TOOL2_REF, (*Werkzeugschlitten 2 referenzieren*)
enPressStepHoming_TOOL2_REF_WAIT, (*Werkzeugschlitten 2 referenziert*)
enPressStepHoming_TOOL2_OUT, (*Werkzeugschlitten 2 ausfahren*)
enPressStepHoming_TOOL2_OUT_WAIT, (*Werkzeugschlitten 2 ausgefahren*)
enPressStepHoming_CLOSE_DOORS, (*Schutztore schlie<69>en*)
enPressStepHoming_DONE (*GST-Fahrt abgeschlossen*)
);
typ_enHome :
(
enHomeIdle,
enHomeOffsetPerm, (*Mit permanet gesp. Offset*)
enHomeOffsetPermDone, (*Mit permanet gesp. Offset*)
enHomeOffset0, (*Mit Offset 0 referenzieren*)
enHomeOffset0Done, (*Mit Offset 0 referenzieren*)
enHomeOffset0NoStore, (*Mit Offset 0 referenzieren*)
enHomeOffset0DoneNoStore, (*Mit Offset 0 referenzieren*)
enHomeStorePos (*Aktuelle Pos als Offset (zum Allg Offset) speichern*)
);
typ_enToolState :
( (*Werkzeugstatus*)
enTool_Empty,
enTool_Loaded,
enTool_TobeUnload
);
typStatusPressVCControls : STRUCT (*Controlbytes f<>r Visu*)
usToggleAutoRepCycle : USINT; (*Reperaturzyklus antriggern*)
usJogNegShaft1 : USINT;
usJogPosShaft1 : USINT;
usJogNegShaft2 : USINT;
usJogPosShaft2 : USINT;
usJogNegShaft3 : USINT;
usJogPosShaft3 : USINT;
usJogNegShaft4 : USINT;
usJogPosShaft4 : USINT;
usJogNegShaftMaster : USINT;
usJogHomeShaftMaster : USINT;
usJogPosShaftMaster : USINT;
usReferencePress : USINT; (*Presse Referenzieren*)
usReferencePressABS : USINT; (*Presse Referenzieren mit gespeicherten Absolutwerten*)
usJogNegSlay1 : USINT;
usJogPosSlay1 : USINT;
usReferenceSlay1 : USINT; (*Werkzeugschlitten 1 referenzieren*)
usJogNegSlay2 : USINT;
usJogPosSlay2 : USINT;
usReferenceSlay2 : USINT; (*Werkzeugschlitten 2 referenzieren*)
usBtnActivateGear : USINT;
usBtnDisableGear : USINT;
usCloseDoorSlay1 : USINT; (*Schutztor bei Werkzeugschlitten 1 Schlie<69>en*)
usOpenDoorSlay1 : USINT; (*Schutztor bei Werkzeugschlitten 1 <20>ffnen*)
usCloseDoorSlay2 : USINT; (*Schutztor bei Werkzeugschlitten 2 Schlie<69>en*)
usOpenDoorSlay2 : USINT; (*Schutztor bei Werkzeugschlitten 2 <20>ffnen*)
END_STRUCT;
typManualCommnands : STRUCT (*Kommandos f<>r Hand / Automatikbetrieb*)
bNextManStep : BOOL; (*N<>chster Schritt (Semi) Automatic*)
bJogNegShaft1 : BOOL;
bJogPosShaft1 : BOOL;
bJogNegShaft2 : BOOL;
bJogPosShaft2 : BOOL;
bJogNegShaft3 : BOOL;
bJogPosShaft3 : BOOL;
bJogNegShaft4 : BOOL;
bJogPosShaft4 : BOOL;
bJogNegShaftMaster : BOOL;
bJogHomeShaftMaster : BOOL;
bJogPosShaftMaster : BOOL;
bReferencePress : BOOL; (*Presse Referenzieren*)
bReferencePressABS : BOOL; (*Presse Referenzieren mit gespeicherten Absolutwerten*)
bActivateGear : BOOL;
bDisableGear : BOOL;
bToolslay1Up : BOOL; (*Werkzeugschlitten 1 anheben*)
bToolslay1Down : BOOL; (*Werkzeugschlitten 1 absenken*)
bJogNegSlay1 : BOOL;
bJogPosSlay1 : BOOL;
bReferenceSlay1 : BOOL; (*Werkzeugschlitten 1 referenzieren*)
bJogNegSlay2 : BOOL;
bJogPosSlay2 : BOOL;
bReferenceSlay2 : BOOL; (*Werkzeugschlitten 2 referenzieren*)
bCloseDoorSlay1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 Schlie<69>en*)
bOpenDoorSlay1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 <20>ffnen*)
bCloseDoorSlay2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 Schlie<69>en*)
bOpenDoorSlay2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 <20>ffnen*)
END_STRUCT;
typMoveConditions : STRUCT (*Bewegungsfreigaben*)
bEnableNegShaft1 : BOOL;
bEnablePosShaft1 : BOOL;
bEnableNegShaft2 : BOOL;
bEnablePosShaft2 : BOOL;
bEnableNegShaft3 : BOOL;
bEnablePosShaft3 : BOOL;
bEnableNegShaft4 : BOOL;
bEnablePosShaft4 : BOOL;
bEnableNegShaftMaster : BOOL;
bEnableJogHomeShaftMaster : BOOL;
bEnablePosShaftMaster : BOOL;
bEnableReferencePress : BOOL; (*Presse Referenzieren*)
bEnableReferencePressABS : BOOL; (*Presse Referenzieren*)
bEnableNegSlay1 : BOOL;
bEnablePosSlay1 : BOOL;
bEnableReferenceSlay1 : BOOL; (*Werkzeugschlitten 1 referenzieren*)
bEnablePosSlay2 : BOOL;
bEnableNegSlay2 : BOOL;
bEnableReferenceSlay2 : BOOL; (*Werkzeugschlitten 2 referenzieren*)
bEnableCloseDoorSlay1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 Schlie<69>en*)
bEnableOpenDoorSlay1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 <20>ffnen*)
bEnableCloseDoorSlay2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 Schlie<69>en*)
bEnableOpenDoorSlay2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 <20>ffnen*)
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,123 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: AxCtrl
* File: AxCtrl.var
* Author: michi
* Created: July 17, 2012
********************************************************************
* Local variables of program AxCtrl
********************************************************************)
(*//-----------------------------------------------------------------------------------------------------*)
(*//Dynamic Vars*)
VAR
lPS : REFERENCE TO typPS; (*Axis PS Datastruct *)
lAxisShaftMaster : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisShaft1 : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisShaft2 : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisShaft3 : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisShaft4 : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisSlay1 : REFERENCE TO typAxis;
lAxisSlay2 : REFERENCE TO typAxis;
END_VAR
(*//Local Vars*)
VAR RETAIN
bDevelEnalbeGear : BOOL := TRUE;
END_VAR
VAR
bTransitionCondition : BOOL;
bSafetyOk : BOOL;
bSafetyOkToolSlay1 : BOOL;
bSafetyOkToolSlay2 : BOOL;
bSafetyOkFP : BOOL;
bNotLevel : BOOL;
bNotLevelLimit : BOOL;
bStopShaftAfterGear1 : BOOL;
bStopShaftAfterGear2 : BOOL;
bStopShaftAfterGear3 : BOOL;
bStopShaftAfterGear4 : BOOL;
bTool1Cycle : BOOL;
bTool2Cycle : BOOL;
bReferenedShaft1 : BOOL;
bReferenedShaft2 : BOOL;
bReferenedShaft3 : BOOL;
bReferenedShaft4 : BOOL;
bMachineIsInHomepos : BOOL;
bPressIsInHomepos : BOOL;
bPressIsInMountpos : BOOL;
bPressIsInMountpos2 : BOOL;
bPressIsInPresspos : BOOL;
bPressIsInPresspos2 : BOOL;
bStopReference : BOOL;
bToolslay1IsUp : BOOL; (*Werkzeugschlitten 1 Luftfedern vollst. ausgefahren*)
bToolslay1IsOut : BOOL; (*Werkzeugschlitten 1 ist in GST*)
bToolslay1IsIn : BOOL; (*Werkzeugschlitten 1 ist in AST (in Presse)*)
bToolslay2IsUp : BOOL; (*Werkzeugschlitten 2 Luftfedern vollst. ausgefahren*)
bToolslay2IsOut : BOOL; (*Werkzeugschlitten 2 ist in GST*)
bToolslay2IsIn : BOOL; (*Werkzeugschlitten 2 ist in AST (in Presse)*)
bDoor1IsOpen : BOOL;
bDoor1IsClosed : BOOL;
bDoor2IsOpen : BOOL;
bDoor2IsClosed : BOOL;
bHome : BOOL := FALSE;
bHomeMaster : BOOL := FALSE;
bStop : BOOL;
bHalt : BOOL;
bAllAxisesInSync : BOOL;
bAllAxisesSingle : BOOL;
bAllAxisesControllerRdy : BOOL;
bEnableNextStep : BOOL; (*N<>chsten Schritt (Semiautomatik) Freigeben*)
usi : USINT;
usErrorReset : USINT;
udSteptime : UDINT; (*0.1s*)
udCycletime : UDINT := 0; (*ms*)
udCycletimeLast : UDINT := 0; (*ms*)
StatusVCControls : typStatusPressVCControls;
ManualCommands : typManualCommnands; (*Kommandos Betriebsart Hand*)
MoveConditions : typMoveConditions;
enStepHomeShaft1 : typ_enHome;
enStepHomeShaft2 : typ_enHome;
enStepHomeShaft3 : typ_enHome;
enStepHomeShaft4 : typ_enHome;
enTool1State : typ_enToolState := 0;
enTool2State : typ_enToolState := 0;
enStepPress : typ_enStepPress;
enStepPressHoming : typ_enStepHoming;
rOverrideVelocity : REAL := 100.0; (*[0.1mm]*)
rAveragePos : REAL;
lPressParamActTool1 : REFERENCE TO typ_PressParam; (*Positionen aktuelles Werkzeug*)
lPressParamActTool2 : REFERENCE TO typ_PressParam; (*Positionen aktuelles Werkzeug*)
END_VAR
VAR CONSTANT
rPressPosMin : REAL := 100.0; (*Presse Oben Pos Min [0.1mm]*)
rPressPosMax : REAL := 4250.0; (*Press Unten Pos Max [0.1mm]*)
rSpeedSlay : REAL := 1000.0; (*Speed Slay max 2000*)
rToolSlay1PosOut : REAL := 18.0;
rToolSlay2PosOut : REAL := 18.0;
END_VAR
VAR
rPosDiffShaft1 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft2 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft3 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft4 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft1_2 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft1_3 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft3_4 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft2_4 : REAL := 0.0; (*Pos Abweichung zum Master*)
END_VAR
VAR RETAIN
rHOMEPOS : REAL := 100.0; (*[0.1mm] Homepos f<>r Referenzierung !!!!*)
END_VAR
VAR CONSTANT
rSlayAccDecManRef : REAL := 250.0;
rSlayAccAuto : REAL := 900.0;
rSlayDecAuto : REAL := 750.0;
END_VAR
(*//FUBS*)
VAR
FUB_AsArLogWrite : AsArLogWrite;
TOF_ResetAxisErrors : TOF;
TON_Slay1Up : TON;
TON_PressBrakeRdBck : TON;
TON_Slay2Up : TON;
END_VAR

View File

@@ -0,0 +1,115 @@
PROGRAM _INIT
lPS ACCESS ADR (gPS);
lAxisShaftMaster ACCESS ADR (gAxis[0]);
lAxisShaft1 ACCESS ADR (gAxis[1]);
lAxisShaft2 ACCESS ADR (gAxis[2]);
lAxisShaft3 ACCESS ADR (gAxis[3]);
lAxisShaft4 ACCESS ADR (gAxis[4]);
lAxisSlay1 ACCESS ADR (gAxis[5]);
lAxisSlay2 ACCESS ADR (gAxis[6]);
//Enable Powermeter
lPS.Parameter.uiIntervalTime := 100;
lPS.Command.bStartPowerMeter := 1;
//Prepare Trace (later from Dataobject)
strcpy (ADR (gMAxTrace.Trace_Config.DatObj.Device), ADR ('logfiles'));
strcpy (ADR (gMAxTrace.Trace_Config.DatObj.Name), ADR ('ParTrace'));
gMAxTrace.Trace_Config.DatObj.Type := mcDATOBJ; // mcFILE + mcADD_DATE_TIME;
gMAxTrace.Trace_Config.DatObj.Format := 0;
//Setup Trace
gMAxTrace.Trace_Config.ParTrace.Parameter[0].Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Parameter[0].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[1].Axis := ADR (gAxShaft2);
gMAxTrace.Trace_Config.ParTrace.Parameter[1].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[2].Axis := ADR (gAxShaft3);
gMAxTrace.Trace_Config.ParTrace.Parameter[2].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[3].Axis := ADR (gAxShaft4);
gMAxTrace.Trace_Config.ParTrace.Parameter[3].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[4].Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Parameter[4].ParID := ACP10PAR_PCTRL_LAG_ERROR;
gMAxTrace.Trace_Config.ParTrace.Parameter[5].Axis := ADR (gAxShaft2);
gMAxTrace.Trace_Config.ParTrace.Parameter[5].ParID := ACP10PAR_PCTRL_LAG_ERROR;
gMAxTrace.Trace_Config.ParTrace.Parameter[6].Axis := ADR (gAxShaft3);
gMAxTrace.Trace_Config.ParTrace.Parameter[6].ParID := ACP10PAR_PCTRL_LAG_ERROR;
gMAxTrace.Trace_Config.ParTrace.Parameter[7].Axis := ADR (gAxShaft4);
gMAxTrace.Trace_Config.ParTrace.Parameter[7].ParID := ACP10PAR_PCTRL_LAG_ERROR;
gMAxTrace.Trace_Config.ParTrace.Parameter[8].Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Parameter[8].ParID := ACP10PAR_TORQUE_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[9].Axis := ADR (gAxShaft2);
gMAxTrace.Trace_Config.ParTrace.Parameter[9].ParID := ACP10PAR_TORQUE_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[10].Axis := ADR (gAxShaft3);
gMAxTrace.Trace_Config.ParTrace.Parameter[10].ParID := ACP10PAR_TORQUE_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[11].Axis := ADR (gAxShaft4);
gMAxTrace.Trace_Config.ParTrace.Parameter[11].ParID := ACP10PAR_TORQUE_ACT;
gMAxTrace.Trace_Config.ParTrace.Trigger.Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Trigger.ParID := ACP10PAR_PCTRL_V_ACT;
gMAxTrace.Trace_Config.ParTrace.Trigger.Event:= mcOUT_WINDOW;
gMAxTrace.Trace_Config.ParTrace.Trigger.Threshold := 1;
gMAxTrace.Trace_Config.ParTrace.Trigger.Window := 1;
gMAxTrace.Trace_Config.ParTrace.Type := mcMULTI_AXIS_TRACE;
gMAxTrace.Trace_Config.ParTrace.TracingTime := 20;
gMAxTrace.Trace_Config.ParTrace.SamplingTime := 0.01;
gMAxTrace.Trace_Config.ParTrace.Delay := 0.0;
gMAxTrace.Trace_Config.ParTrace.NetTriggerDelay := 0;
FUB_AsArLogWrite.ident := arlogBASE_USER_LOG_IDENT;
//Parameter
lAxisShaftMaster.Para.rVelocity := 100; // [0.1mm/s]
lAxisShaftMaster.Para.rAcceleration := 1000; // [0.1mm/s^2]
lAxisShaftMaster.Para.rDeceleration := 1000; // [0.1mm/s^2]
//Dummy Tool
gPressParamTools[0].rPosPremount := 1100;
gPressParamTools[0].rPosPremountMin := 1050;
gPressParamTools[0].rPosPremountMax := 1150;
gPressParamTools[0].rPosPress := 2000;
gPressParamTools[0].rPosPressMin := 200;
gPressParamTools[0].rPosPressMax := rPressPosMax;
// gPressParamTools[0].rPosPressToolslay := 1310;
lAxisShaftMaster.Para.rJogVelocity := 100; // [0.1mm/s]
lAxisShaft1.Para.rJogVelocity := lAxisShaftMaster.Para.rJogVelocity;
lAxisShaft2.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft3.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft4.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft1.Para.rVelocity := lAxisShaftMaster.Para.rVelocity; // [0.1mm/s]
lAxisShaft2.Para.rVelocity := lAxisShaft1.Para.rVelocity;
lAxisShaft3.Para.rVelocity := lAxisShaft1.Para.rVelocity;
lAxisShaft4.Para.rVelocity := lAxisShaft1.Para.rVelocity;
lAxisShaft1.Para.usHomeingMode := mcHOME_ABSOLUTE;
lAxisShaft2.Para.usHomeingMode := mcHOME_ABSOLUTE;
lAxisShaft3.Para.usHomeingMode := mcHOME_ABSOLUTE;
lAxisShaft4.Para.usHomeingMode := mcHOME_ABSOLUTE;
//Gear Coupling Axis2 is Slave from Axis 1
lAxisShaft1.Para.iGearRatioNumerator := 1;
lAxisShaft1.Para.uiGearRatioDenominator := 1;
lAxisShaft2.Para.iGearRatioNumerator := 1;
lAxisShaft2.Para.uiGearRatioDenominator := 1;
lAxisShaft3.Para.iGearRatioNumerator := 1;
lAxisShaft3.Para.uiGearRatioDenominator := 1;
lAxisShaft4.Para.iGearRatioNumerator := 1;
lAxisShaft4.Para.uiGearRatioDenominator := 1;
lAxisShaft1.Para.rGearMasterSyncPos := 100;
lAxisShaft1.Para.rGearSlaveSyncPos := 200;
lAxisShaft1.Para.rGearMasterStartDistance := 100;
lAxisShaft1.Para.rGearSyncVelocity := lAxisShaftMaster.Para.rVelocity * 1.1;
lAxisShaft1.Para.rGearSyncAcceleration := lAxisShaftMaster.Para.rAcceleration * 0.5;
//Reference Offset
lAxisSlay1.Para.rHomePosition := 20.0; //mm
lAxisSlay2.Para.rHomePosition := 20.0; //mm
lAxisSlay1.Para.rVelocity := 175; // [mm/s]
lAxisSlay2.Para.rVelocity := 175; // [mm/s]
lAxisSlay1.Para.rJogVelocity := 75; // [mm/s]
lAxisSlay2.Para.rJogVelocity := 75; // [mm/s]
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.24 SP06?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Implementation code">ToolCtrl.st</File>
<File Description="Local data types" Private="true">ToolCtrl.typ</File>
<File Description="Local variables" Private="true">ToolCtrl.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,11 @@
PROGRAM _INIT
END_PROGRAM
PROGRAM _CYCLIC
gusCurrentTool := 1;
gusCurrentTool := 0;
END_PROGRAM

View File

@@ -0,0 +1 @@
(**)

View File

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.24 SP06?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Implementation code">ToolParam.st</File>
<File Description="Local variables" Private="true">ToolParam.var</File>
<File Description="Local data types" Private="true">ToolParam.typ</File>
</Files>
</Program>

View File

@@ -0,0 +1,201 @@
PROGRAM _INIT
usLastSelectedTool := gusSelectedTool;
FUB_AsArLogWrite.asciiString := ADR (strLogMsg);
FUB_AsArLogWrite.ident := arlogBASE_USER_LOG_IDENT;
rLastSpeed := grPressSpeedEmpty;
END_PROGRAM
PROGRAM _CYCLIC
IF (gusSelectedTool = 0) THEN
gusSelectedTool := 1;
END_IF
IF (usLastSelectedTool <> gusSelectedTool) THEN
PressParamActToolLast := gPressParamTools[gusSelectedTool];
usLastSelectedTool := gusSelectedTool;
(* FUB_AsArLogWrite.errornr := 50100;
FUB_AsArLogWrite.logLevel := arlogLEVEL_INFO;
strcpy (ADR (strLogMsg), ADR ('Neues Werkzeug angewaehlt : Nummer '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;*)
END_IF
lPressParamActTool ACCESS ADR (gPressParamTools[gusSelectedTool]);
//Lock Controls
StatusVCControls.usLevel3Parameter := SHL (BOOL_TO_USINT (genAccessLevel < enACCESSLEVEL_3), VC_LOCK_BITPOS);
StatusVCControls.usLevel4Parameter := SHL (BOOL_TO_USINT (genAccessLevel < enACCESSLEVEL_4), VC_LOCK_BITPOS);
StatusVCControls.usLevel4ChangeSerial := SHL (BOOL_TO_USINT (genAccessLevel < enACCESSLEVEL_4), VC_HIDE_BITPOS) +
SHL (BOOL_TO_USINT ((genAccessLevel < enACCESSLEVEL_4) OR NOT gbST13ModuleOk), VC_LOCK_BITPOS);
//Detect and Log changes
IF (rLastSpeed <> grPressSpeedEmpty) THEN
FUB_AsArLogWrite.errornr := 50099;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
itoa (REAL_TO_DINT (grPressSpeedEmpty), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
rLastSpeed := grPressSpeedEmpty;
END_IF
//Change Serial
IF EDGEPOS (bChangeSerialNr) AND gbST13ModuleOk THEN
lPressParamActTool.udIDIOBlock := 0;
END_IF
IF TRUE THEN
IF PressParamActToolLast.rPosPremount <> lPressParamActTool.rPosPremount THEN
FUB_AsArLogWrite.errornr := 50103;
FUB_AsArLogWrite.logLevel := arlogLEVEL_WARNING;
strcpy (ADR (strLogMsg), ADR ('Werkzeug '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Vormontagepos veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPremount), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPremount := lPressParamActTool.rPosPremount;
ELSIF PressParamActToolLast.rPosPremountMin <> lPressParamActTool.rPosPremountMin THEN
FUB_AsArLogWrite.errornr := 50104;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Vormontagepos Min veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPremountMin), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPremountMin := lPressParamActTool.rPosPremountMin;
ELSIF PressParamActToolLast.rPosPremountMax <> lPressParamActTool.rPosPremountMax THEN
FUB_AsArLogWrite.errornr := 50105;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Vormontagepos Max veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPremountMax), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPremountMax := lPressParamActTool.rPosPremountMax;
ELSIF PressParamActToolLast.rPosPress <> lPressParamActTool.rPosPress THEN
FUB_AsArLogWrite.errornr := 50106;
FUB_AsArLogWrite.logLevel := arlogLEVEL_WARNING;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Presspos. veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPress), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPress := lPressParamActTool.rPosPress;
ELSIF PressParamActToolLast.rPosPressMin <> lPressParamActTool.rPosPressMin THEN
FUB_AsArLogWrite.errornr := 50107;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Presspos. Min veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPressMin), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPressMin := lPressParamActTool.rPosPressMin;
ELSIF PressParamActToolLast.rPosPressMax <> lPressParamActTool.rPosPressMax THEN
FUB_AsArLogWrite.errornr := 50108;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Presspos. Max veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPressMax), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPressMax := lPressParamActTool.rPosPressMax;
ELSIF PressParamActToolLast.rPosPressToolslay <> lPressParamActTool.rPosPressToolslay THEN
FUB_AsArLogWrite.errornr := 50109;
FUB_AsArLogWrite.logLevel := arlogLEVEL_WARNING;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Presspos. Werkzeugschlitten veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPressToolslay), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPressToolslay := lPressParamActTool.rPosPressToolslay;
ELSIF PressParamActToolLast.rPosPressToolslayMin <> lPressParamActTool.rPosPressToolslayMin THEN
FUB_AsArLogWrite.errornr := 50110;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Presspos. Werkzeugschlitten Min veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPressToolslayMin), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPressToolslayMin := lPressParamActTool.rPosPressToolslayMin;
ELSIF PressParamActToolLast.rPosPressToolslayMax <> lPressParamActTool.rPosPressToolslayMax THEN
FUB_AsArLogWrite.errornr := 50111;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Presspos. Werkzeugschlitten Max veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rPosPressToolslayMax), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rPosPressToolslayMax := lPressParamActTool.rPosPressToolslayMax;
ELSIF PressParamActToolLast.rSpeedPress <> lPressParamActTool.rSpeedPress THEN
FUB_AsArLogWrite.errornr := 50112;
FUB_AsArLogWrite.logLevel := arlogLEVEL_WARNING;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Pressgeschwindigkeit veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rSpeedPress), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rSpeedPress := lPressParamActTool.rSpeedPress;
ELSIF PressParamActToolLast.rSpeedPressMax <> lPressParamActTool.rSpeedPressMax THEN
FUB_AsArLogWrite.errornr := 50113;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Pressgeschwindigkeit Max veraendert Neu: '));
itoa (REAL_TO_DINT (lPressParamActTool.rSpeedPressMax), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.rSpeedPressMax := lPressParamActTool.rSpeedPressMax;
ELSIF PressParamActToolLast.udPresstime <> lPressParamActTool.udPresstime THEN
FUB_AsArLogWrite.errornr := 50114;
FUB_AsArLogWrite.logLevel := arlogLEVEL_WARNING;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Presszeit veraendert Neu: '));
itoa (UDINT_TO_DINT (lPressParamActTool.udPresstime), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.udPresstime := lPressParamActTool.udPresstime;
ELSIF PressParamActToolLast.udIDIOBlock <> lPressParamActTool.udIDIOBlock THEN
FUB_AsArLogWrite.errornr := 50115;
FUB_AsArLogWrite.logLevel := arlogLEVEL_FATAL;
strcpy (ADR (strLogMsg), ADR ('Wzg '));
itoa (USINT_TO_DINT (gusSelectedTool), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (' Seriennummer veraendert Neu: '));
itoa (UDINT_TO_DINT (lPressParamActTool.udIDIOBlock), ADR (strTemp));
strcat (ADR (strLogMsg), ADR (strTemp));
FUB_AsArLogWrite.enable := TRUE;
PressParamActToolLast.udIDIOBlock := lPressParamActTool.udIDIOBlock;
END_IF
END_IF
FUB_AsArLogWrite ();
IF FUB_AsArLogWrite.status <> ERR_FUB_BUSY THEN
FUB_AsArLogWrite.enable := FALSE;
END_IF
END_PROGRAM

View File

@@ -0,0 +1,39 @@
(**)
TYPE
typStatusToolparamVCControls : STRUCT (*Controlbytes f<>r Visu*)
usLevel3Parameter : USINT;
usLevel4Parameter : USINT;
usLevel4ChangeSerial : USINT;
END_STRUCT;
typManualCommnands : STRUCT
bNextManStep : BOOL; (*N<>chster Schritt (Semi) Automatic*)
bJogNegShaft1 : BOOL;
bJogPosShaft1 : BOOL;
bJogNegShaft2 : BOOL;
bJogPosShaft2 : BOOL;
bJogNegShaft3 : BOOL;
bJogPosShaft3 : BOOL;
bJogNegShaft4 : BOOL;
bJogPosShaft4 : BOOL;
bJogNegShaftMaster : BOOL;
bJogHomeShaftMaster : BOOL;
bJogPosShaftMaster : BOOL;
bReferencePress : BOOL; (*Presse Referenzieren*)
bReferencePressABS : BOOL; (*Presse Referenzieren mit gespeicherten Absolutwerten*)
bActivateGear : BOOL;
bDisableGear : BOOL;
bToolslay1Up : BOOL; (*Werkzeugschlitten 1 anheben*)
bToolslay1Down : BOOL; (*Werkzeugschlitten 1 absenken*)
bToolslay1UpMaint : BOOL; (*Werkzeugschlitten 2 anheben (Wartung)*)
bToolslay1DownMaint : BOOL; (*Werkzeugschlitten 2 absenken (Wartung)*)
bJogNegSlay1 : BOOL;
bJogPosSlay1 : BOOL;
bReferenceSlay1 : BOOL; (*Werkzeugschlitten 1 referenzieren*)
bToolslay2Up : BOOL; (*Werkzeugschlitten 2 anheben*)
bToolslay2Down : BOOL; (*Werkzeugschlitten 2 absenken*)
bJogNegSlay2 : BOOL;
bJogPosSlay2 : BOOL;
bReferenceSlay2 : BOOL; (*Werkzeugschlitten 2 referenzieren*)
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,17 @@
VAR
usLastSelectedTool : USINT; (*Zuletzt angew<65>hltes Werkzeug*)
PressParamActToolLast : typ_PressParam; (*Positionen aktuelle Werkzeug*)
StatusVCControls : typStatusToolparamVCControls;
strLogMsg : STRING[256];
strTemp : STRING[16];
rLastSpeed : REAL;
bChangeSerialNr : BOOL;
END_VAR
(*//Dynamic Vars*)
VAR
lPressParamActTool : REFERENCE TO typ_PressParam; (*Positionen aktuelle Werkzeug*)
END_VAR
(*//FUBS*)
VAR
FUB_AsArLogWrite : AsArLogWrite;
END_VAR

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>acp10etxde.ett</File>
</Files>
</DataObject>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
TYPE
typAlarm : STRUCT
Alarm : ARRAY[0..127]OF BOOL;
Ack : ARRAY[0..127]OF BOOL;
Bypass : ARRAY[0..127]OF BOOL;
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,24 @@
VAR
bBlink0_1 : BOOL;
bBlink0_5 : BOOL;
bBlink1_0 : BOOL;
bBlink2_0 : BOOL;
bBlink5_0 : BOOL;
gdtCurrentTime : DATE_AND_TIME; (*Current Date and Time*)
gDTstrucCurrentTime : DTStructure := (0); (*Current Date and Time as DTStructure*)
gsCurrentTime : STRING[25] := ''; (*Current Date and Time as String*)
gTCurrentTime : TIME := T#0ms; (*Current Time*)
END_VAR
VAR CONSTANT
gAInNull : INT := 0; (*O FOR Analog Input*)
gTrue : BOOL := TRUE; (*Konstant TRUE*)
gFalse : BOOL := FALSE; (*Konstant False*)
gInNull : BOOL := FALSE; (*FALSE FOR Input *)
END_VAR
VAR
gOuNull : BOOL; (*DUMMY for Output*)
END_VAR
VAR CONSTANT
iAIVoltageOverflow : INT := 16#7FFF; (* Analog Input Voltage Mode,Overflow *)
iAIVoltageUnderflow : INT := -32767; (* Analog Input Voltage Underflow *)
END_VAR

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="File">GlobalCommon.typ</Object>
<Object Type="File">GlobalComon.var</Object>
<Object Type="Program" Language="IEC" Description="Current Date_And_Time / DT Struct">get_dt</Object>
<Object Type="Program" Language="IEC" Description="Blinker 0,1 -0,5s">blinker</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Local variables" Private="true">blinker.var</File>
<File Description="Initialization code">blinkerInit.ab</File>
<File Description="Cyclic code">blinkerCyclic.ab</File>
</Files>
</Program>

View File

@@ -0,0 +1,13 @@
(********************************************************************
* COPYRIGHT -- kA
********************************************************************
* Program: blinker
* File: blinker.var
* Author: michi
* Created: November 23, 2009
********************************************************************
* Local variables of program blinker
********************************************************************)
VAR
iCount : USINT;
END_VAR

View File

@@ -0,0 +1,30 @@
(********************************************************************
* COPYRIGHT -- kA
********************************************************************
* Program: blinker
* File: blinkerCyclic.ab
* Author: michi
* Created: November 23, 2009
********************************************************************
* Implementation of program blinker
********************************************************************)
PROGRAM _CYCLIC
(* cyclic program *)
;Has to be taskclass 100ms
bBlink0_1 = not bBlink0_1
inc (iCount)
if ((iCount mod 5) = 0) then
bBlink0_5 = not bBlink0_5
endif
if ((iCount mod 10) = 0) then
bBlink1_0 = not bBlink1_0
endif
if ((iCount mod 20) = 0) then
bBlink2_0 = not bBlink2_0
endif
if ((iCount mod 50) = 0) then
bBlink5_0 = not bBlink5_0
iCount = 0
endif
END_PROGRAM

View File

@@ -0,0 +1,16 @@
(********************************************************************
* COPYRIGHT -- kA
********************************************************************
* Program: blinker
* File: blinkerInit.ab
* Author: michi
* Created: November 23, 2009
********************************************************************
* Implementation of program blinker
********************************************************************)
PROGRAM _INIT
iCount = 0
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File>get_dtCyclic.ab</File>
<File Private="true">get_dt.var</File>
<File>get_dtInit.ab</File>
</Files>
</Program>

View File

@@ -0,0 +1,6 @@
VAR
sTemp : STRING[10] := '';
lDTStructureGetTime : DTStructureGetTime := (0);
lDTGetTime : DTGetTime := (0);
lTimeStructure : TIMEStructure := (0);
END_VAR

View File

@@ -0,0 +1,44 @@
PROGRAM _CYCLIC
(* cyclic program *)
lDTGetTime.enable = true
lDTGetTime FUB DTGetTime()
gdtCurrentTime = lDTGetTime.DT1
lDTStructureGetTime.enable = true
lDTStructureGetTime FUB DTStructureGetTime ()
lDTStructureGetTime.pDTStructure = adr (gDTstrucCurrentTime)
ascDTStructure (adr (gDTstrucCurrentTime), adr (gsCurrentTime), 25)
strcpy (adr (gsCurrentTime), "")
itoa (gDTstrucCurrentTime.year, adr (sTemp))
strcat (adr (gsCurrentTime), adr (sTemp))
strcat (adr (gsCurrentTime), "/")
itoa (gDTstrucCurrentTime.month, adr (sTemp))
strcat (adr (gsCurrentTime), adr (sTemp))
strcat (adr (gsCurrentTime), "/")
itoa (gDTstrucCurrentTime.day, adr (sTemp))
strcat (adr (gsCurrentTime), adr (sTemp))
strcat (adr (gsCurrentTime), " ")
itoa (gDTstrucCurrentTime.hour, adr (sTemp))
strcat (adr (gsCurrentTime), adr (sTemp))
strcat (adr (gsCurrentTime), ":")
itoa (gDTstrucCurrentTime.minute, adr (sTemp))
strcat (adr (gsCurrentTime), adr (sTemp))
strcat (adr (gsCurrentTime), ":")
itoa (gDTstrucCurrentTime.second, adr (sTemp))
strcat (adr (gsCurrentTime), adr (sTemp))
strcat (adr (gsCurrentTime), ".")
itoa (gDTstrucCurrentTime.millisec, adr (sTemp))
strcat (adr (gsCurrentTime), adr (sTemp))
lTimeStructure.day = gDTstrucCurrentTime.day
lTimeStructure.hour = gDTstrucCurrentTime.hour
lTimeStructure.minute = gDTstrucCurrentTime.minute
lTimeStructure.second = gDTstrucCurrentTime.second
lTimeStructure.millisec = gDTstrucCurrentTime.millisec
lTimeStructure.microsec = gDTstrucCurrentTime.microsec
gTCurrentTime = TIMEStructure_TO_TIME (adr (lTimeStructure))
END_PROGRAM

View File

@@ -0,0 +1,4 @@
PROGRAM _INIT
(* init program *)
END_PROGRAM

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.170?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects />
</Package>

View File

View File

@@ -0,0 +1,198 @@
(*Inputs / Outputs*)
(*================================================================================================================*)
(*CPU*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
udSerialNr : UDINT; (*Seriennummer*)
guiTemperatureCPU : UINT; (*CPU Temperatur*)
guiTemperatureENV : UINT; (*Umgebungstemperatur*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST3 - Safety PLC*)
(*Signals to Safe PLC*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbSPLCOuResetEstop : BOOL; (*Safety PLC Reset Nothalt*)
gbSPLCOuReleaseSafeOut : BOOL; (*Safety PLC Release Nothalt*)
gbSPLCOuResetAreaToolslay1 : BOOL; (*Safety PLC Reset Nothalt*)
gbSPLCOuResetAreaToolslay2 : BOOL; (*Safety PLC Reset Nothalt*)
gbSPLCOuReleaseAreaToolslay1 : BOOL; (*Safety PLC Release Nothalt*)
gbSPLCOuReleaseAreaToolslay2 : BOOL; (*Safety PLC Release Nothalt*)
gbSPLCOuReleaseDoors : BOOL; (*Safety PLC Release Doors*)
gbSPLCOuHWMainValveOK : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWMainsAcoposOk : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWEnableAcpMultiOk : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWValveBrakeOk : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWValveDoor1Ok : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWValveDoor2Ok : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWEnableAcpTool1Ok : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWEnableAcpTool2Ok : BOOL; (*Safety PLC kein Fehler HW*)
END_VAR
(*Signals from Safe PLC*)
(*----------------------------------------------------------------------------------------------------------------*)
(*5 Spare*)
VAR
gbSPLCInEstopOk : BOOL; (*Safety PLC E-Stop is Ok*)
gbSPLCInAreaToolslay1Ok : BOOL; (*Safety PLC E-Stop is Ok*)
gbSPLCInAreaToolslay2Ok : BOOL; (*Safety PLC E-Stop is Ok*)
gbSPLCInBumpersOk : BOOL; (*Safety PLC E-Stop is Ok*)
gbSPLCInDoorsOk : BOOL; (*Safety PLC E-Stop is Ok*)
END_VAR
(*Signals from Safe PLC*)
(*----------------------------------------------------------------------------------------------------------------*)
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST10 - EPL Receiver*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbIFST1ModuleOk : BOOL;
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*ST1 - PS*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbST1ModuleOk : BOOL;
gbST1BusPowerWarning : BOOL;
gbST1IOPowerWarning : BOOL;
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST2 - DI9371*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbST2ModuleOk : BOOL;
gbInDCVoltageOk : BOOL; (*Kein Fehler 24V Versorgung (PSU Modul)*)
gbInAccessLevel1 : BOOL; (*Euchner Transponderleser Berechtigungslevel Bit1*)
gbInAccessLevel2 : BOOL; (*Euchner Transponderleser Berechtigungslevel Bit2*)
gbInAccessLevel3 : BOOL; (*Euchner Transponderleser Berechtigungslevel Bit3*)
gbInAccessLevel4 : BOOL; (*Euchner Transponderleser Berechtigungslevel Bit4*)
gbInAccessKeyOK : BOOL; (*Euchner Transponderleser Freigabe Betriebsartwechsel (Tag ist eingelegt)*)
gbInResetKey : BOOL; (*Resettaster Schaltschrank*)
gbInAirOK : BOOL; (*Druckw<6B>chter Luft OK*)
gbInBrakeValveClose : BOOL; (*Stellungsr<73>ckmeldung Bremsventil Close*)
gbInGreaseLevelOK : BOOL; (*Zentralschmierung F<>llstand Ok*)
gbInToolSlay1Free : BOOL; (*Werkzeugschlitten 1 Laserscanner - Bereich Frei*)
gbInToolSlay2Free : BOOL; (*Werkzeugschlitten 2 Laserscanner - Bereich Frei*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST3 - DI9371*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbST3ModuleOk : BOOL;
gbInEStopPressed1 : BOOL; (*Nothalttaster 1 Bet<65>tigt*)
gbInEStopPressed2 : BOOL; (*Nothalttaster 2 Bet<65>tigt*)
gbInEStopPressed3 : BOOL; (*Nothalttaster 3 Bet<65>tigt*)
gbInEStopPressed4 : BOOL; (*Nothalttaster 4 Bet<65>tigt*)
gbInKeyMagnetTool1 : BOOL; (*Taster Magnet Ein Werkzeugschlitten 1*)
END_VAR
(*//1 Spare*)
VAR
gbInKeyMagnetTool2 : BOOL; (*Taster Magnet Ein Werkzeugschlitten 1*)
END_VAR
(*//1 Spare*)
VAR
gbInResetKeyTool1 : BOOL; (*Resettaster Werkzeugschlitten 1 / Zyklus Start*)
gbInResetKeyTool2 : BOOL; (*Resettaster Werkzeugschlitten 2 / Zyklus Start*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST4 - DI9371*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbST4ModuleOk : BOOL;
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST5 - DO9322*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbST5ModuleOk : BOOL;
gbOuReset24VError : BOOL; (*24V Sicherung quittieren*)
gbOuLEDToolslay1 : BOOL; (*Leuchttaster bei Werkzeugschlitten 1*)
gbOuLEDCabinet : BOOL; (*Leuchttaster bei Schaltschrank (Not-Halt Reset / Fehler quittieren)*)
gbOuLEDToolslay2 : BOOL; (*Leuchttaster bei Werkzeugschlitten 2*)
gbOuQuickStopToolslay1 : BOOL; (*QuickStop Werkzeugschlitten 1*)
gbOuQuickStopToolslay2 : BOOL; (*QuickStop Werkzeugschlitten 2*)
gbOuCentralGrease : BOOL; (*Zentralschmierung*)
END_VAR
(*//1 Spare*)
VAR
gbOuMagnetOnTool1 : BOOL; (*Magnet Ein Werkzeugschlitten 1*)
gbOuMagnetOnTool2 : BOOL; (*Magnet Ein Werkzeugschlitten 2*)
gbOuCutterTool1HelpCyl : BOOL; (*Hilfzylinder Stanze Werkzeug 1*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST6 - SI4100*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbSInEstopOk : BOOL; (*Sicherer Eingang 01/02 Equivalent - Nothalt*)
gbSInBumpersOk : BOOL; (*Sicherer Eingang 03/04 Equivalent - Schutzleisten T<>ren*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST7 - SI4100*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbSInDoor1Ok : BOOL; (*Sicherer Eingang 01/02 Equivalent - Schutzt<7A>r 1*)
gbSInDoor2Ok : BOOL; (*Sicherer Eingang 03/04 Equivalent - Schutzt<7A>r 2*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST8 - SO4110*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbSOuMainValveOpen : BOOL; (*Sicherer Ausgang 01 - Hauptventil <20>ffnen*)
gbSInMainValveOpenRdBck : BOOL; (*Sicherer Ausgang 01 - Hauptventil <20>ffnen*)
gbSOuMainsAcopos : BOOL; (*Sicherer Ausgang 02 - Hautpsch<63>tz Acopos Einzelachsen*)
gbSInMainsAcoposRdBck : BOOL; (*Sicherer Ausgang 02 - Hautpsch<63>tz Acopos Einzelachsen*)
gbSOuEnableAcoposMulti : BOOL; (*Sicherer Ausgang 03 - Freigabe Acopos Multi*)
gbSInEnableAcoposMultiRdBck : BOOL; (*Sicherer Ausgang 03 - Freigabe Acopos Multi*)
gbSOuOpenPressBrake : BOOL; (*Sicherer Ausgang 04 - pneumatische Zusatzbremse l<>ften*)
gbSInOpenPressBrakeRdBck : BOOL; (*Sicherer Ausgang 04 - pneumatische Zusatzbremse l<>ften*)
guiST8FBK_Status : UINT;
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST9 - SO4110*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbSOuCloseDoorToolslay1 : BOOL; (*Sicherer Ausgang 01 - Schutztor bei Werkzeugschlitten 1 schlie<69>en*)
gbSInCloseDoorToolslay1RdBck : BOOL; (*Sicherer Ausgang 01 - Schutztor bei Werkzeugschlitten 1 schlie<69>en*)
gbSOuCloseDoorToolslay2 : BOOL; (*Sicherer Ausgang 02 - Schutztor bei Werkzeugschlitten 2 schlie<69>en*)
gbSInCloseDoorToolslay2RdBck : BOOL; (*Sicherer Ausgang 02 - Schutztor bei Werkzeugschlitten 2 schlie<69>en*)
gbSOuEnableToolslay1 : BOOL; (*Sicherer Ausgang 03 - Freigabe Acopos Werkzeugschlitten 1*)
gbSInEnableToolslay1RdBck : BOOL; (*Sicherer Ausgang 03 - Freigabe Acopos Werkzeugschlitten 1*)
gbSOuEnableToolslay2 : BOOL; (*Sicherer Ausgang 04 - Freigabe Acopos Werkzeugschlitten 2*)
gbSInEnableToolslay2RdBck : BOOL; (*Sicherer Ausgang 04 - Freigabe Acopos Werkzeugschlitten 2*)
guiST9FBK_Status : UINT;
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST11 - SI8103 (Toolslay 2 - right)*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbSInToolslay2LightBarOK1 : BOOL; (*Sicherer Eingang 01/02 Equivalent - Werkzeugschlitten 2 - Lichtvorh 1 OK*)
gbSInToolslay2LightBarOK2 : BOOL; (*Sicherer Eingang 03/04 Equivalent - Werkzeugschlitten 2 - Lichtvorh 2 OK*)
gbSInDoorToolslay2Closed : BOOL; (*Sicherer Eingang 05/06 Antivalent - Schutztor bei Werkzeugschl. 2 ist Zu*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST12 - SI8103 (Toolslay 1 - left)*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbSInToolslay1LightBarOK1 : BOOL; (*Sicherer Eingang 01/02 Equivalent - Werkzeugschlitten 1 - Lichtvorh 1 OK*)
gbSInToolslay1LightBarOK2 : BOOL; (*Sicherer Eingang 03/04 Equivalent - Werkzeugschlitten 1 - Lichtvorh 2 OK*)
gbSInDoorToolslay1Closed : BOOL; (*Sicherer Eingang 05/06 Antivalent - Schutztor bei Werkzeugschl. 1 ist Zu*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST13 - X76DI371*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbST13ModuleOk : BOOL;
gbInFootKeyMagnetTool2 : BOOL; (*Fu<46> Taster Magnet Ein Werkzeugschlitten 2*)
gbInDoorToolslay2Open1 : BOOL; (*Schutztor bei Werkzeugschlitten 2 offen (Sensor 1 vorne)*)
gbInDoorToolslay2Open2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 offen (Sensor 2 hinten)*)
gbInFootKeyMagnetTool1 : BOOL; (*Taster Magnet Ein Werkzeugschlitten 1*)
gbInDoorToolslay1Open1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 offen (Sensor 1 vorne)*)
gbInDoorToolslay1Open2 : BOOL; (*Schutztor bei Werkzeugschlitten 1 offen (Sensor 2 hinten)*)
END_VAR
(*For Test purpose only*)
VAR
gbInTestChannel1 : BOOL;
gbInTestChannel2 : BOOL;
gbInTestChannel3 : BOOL;
gbInTestChannel4 : BOOL;
gbInTestChannel5 : BOOL;
gbInTestChannel6 : BOOL;
END_VAR

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.22 SP04?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="File">Global.typ</Object>
<Object Type="File" Description="Global variables / IOs">Global.var</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.0.14.207?>
<Library Version="2.37.0" Description="PLCopen Motion Control function blocks" xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>acp10_mc.var</File>
<File>acp10_mc.typ</File>
<File>acp10_mc.fun</File>
</Files>
<Dependencies>
<Dependency ObjectName="Sys_lib" FromVersion="0.00.0" />
<Dependency ObjectName="Brsystem" FromVersion="0.00.0" />
<Dependency ObjectName="Acp10man" FromVersion="2.37.0" ToVersion="2.37.0" />
</Dependencies>
</Library>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More