Initial Project Commit

This commit is contained in:
Michael Rest
2012-12-11 20:57:01 +01:00
parent 9e8e7e0d77
commit 233b6ca2fa
882 changed files with 95401 additions and 0 deletions

6
LastUser.set Normal file
View File

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

View File

@@ -0,0 +1,13 @@
<?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="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>
</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,132 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.23 SP05?>
<AcoposParameterTable>
<Root Name="Parameters">
<Group Name="SEW_DT80N4" Disabled="TRUE">
<Group Name="Allgemeine Parameter" Disabled="TRUE">
<Parameter Name="MOTOR_TYPE" ID="30" Value="0x0001" Disabled="TRUE" Description="Motor: Typ" />
<Parameter Name="MOTOR_COMPATIBILITY" ID="31" Value="0x0201" Disabled="TRUE" Description="Motor: Softwarekompatibilität" />
<Parameter Name="MOTOR_POLEPAIRS" ID="47" Value="2" Disabled="TRUE" Description="Motor: Polpaarzahl" />
</Group>
<Group Name="Brems-Parameter" Disabled="TRUE">
<Parameter Name="BRAKE_MODE" ID="90" Value="5" Disabled="TRUE" Description="Motor holding brake: Mode (Automatic, No Checks)" />
<Parameter Name="MOTOR_BRAKE_CURR_RATED" ID="42" Value="0.7" Unit="A" Disabled="TRUE" Description="geschaetzt" />
<Parameter Name="MOTOR_BRAKE_TORQ_RATED" ID="43" Value="20" Unit="Nm" Disabled="TRUE" Description="Motor-Haltebremse: Nennmoment" />
<Parameter Name="MOTOR_BRAKE_ON_TIME" ID="44" Value="0.4" Unit="s" Disabled="TRUE" Description="Motor-Haltebremse: Verzögerungszeit Blockieren" />
<Parameter Name="MOTOR_BRAKE_OFF_TIME" ID="45" Value="0.3" Unit="s" Disabled="TRUE" Description="Motor-Haltebremse: Verzögerungszeit Lüften" />
</Group>
<Group Name="Thermo-Sensor-Parameter" Disabled="TRUE">
<Parameter Name="MOTOR_TEMPSENS_PAR1" ID="64" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 1" />
<Parameter Name="MOTOR_TEMPSENS_PAR2" ID="65" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 2" />
<Parameter Name="MOTOR_TEMPSENS_PAR3" ID="66" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 3" />
<Parameter Name="MOTOR_TEMPSENS_PAR4" ID="67" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 4" />
<Parameter Name="MOTOR_TEMPSENS_PAR5" ID="68" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 5" />
<Parameter Name="MOTOR_TEMPSENS_PAR6" ID="69" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 6" />
<Parameter Name="MOTOR_TEMPSENS_PAR7" ID="70" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 7" />
<Parameter Name="MOTOR_TEMPSENS_PAR8" ID="71" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 8" />
<Parameter Name="MOTOR_TEMPSENS_PAR9" ID="72" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 9" />
<Parameter Name="MOTOR_TEMPSENS_PAR10" ID="73" Value="0" Disabled="TRUE" Description="Motor: Temperatursensor-Parameter 10" />
<Parameter Name="MOTOR_THERMAL_CONST" ID="75" Value="0" Unit="s" Disabled="TRUE" Description="Motor: Thermische Zeitkonstante (für MOTOR_COMPATIBILITY 0x0202)" />
<Parameter Name="TEMP_MOTOR_MODEL_MODE" ID="373" Value="0" Disabled="TRUE" Description="Motor: Temperature model: Mode" />
</Group>
<Group Name="Motorparameter" Disabled="TRUE">
<Parameter Name="MOTOR_VOLTAGE_RATED" ID="48" Value="400" Unit="V" Disabled="TRUE" Description="Motor: Nennspannung" />
<Parameter Name="MOTOR_SPEED_RATED" ID="50" Value="1430" Unit="1/min" Disabled="TRUE" Description="Motor: Nenndrehzahl (100)" />
<Parameter Name="MOTOR_SPEED_MAX" ID="51" Value="1700" Unit="1/min" Disabled="TRUE" Description="Motor: Maximaldrehzahl" />
<Parameter Name="MOTOR_TORQ_STALL" ID="52" Value="12.29" Unit="Nm" Disabled="TRUE" Description="Motor: Stillstandsmoment" />
<Parameter Name="MOTOR_TORQ_RATED" ID="53" Value="12.29" Unit="Nm" Disabled="TRUE" Description="Motor: Nennmoment" />
<Parameter Name="MOTOR_TORQ_MAX" ID="54" Value="75.52" Unit="Nm" Disabled="TRUE" Description="Motor: Spitzenmoment" />
<Parameter Name="MOTOR_TORQ_CONST" ID="55" Value="0" Unit="Nm/A" Disabled="TRUE" Description="Motor: Torque constant" />
<Parameter Name="MOTOR_CURR_STALL" ID="56" Value="3.35" Unit="A" Disabled="TRUE" Description="Motor: Stillstandsstrom" />
<Parameter Name="MOTOR_CURR_RATED" ID="57" Value="3.35" Unit="A" Disabled="TRUE" Description="Motor: Nennstrom" />
<Parameter Name="MOTOR_CURR_MAX" ID="58" Value="12.73" Unit="A" Disabled="TRUE" Description="Motor: Spitzenstrom" />
<Parameter Name="MOTOR_WIND_CROSS_SECT" ID="59" Value="0" Unit="mm²" Disabled="TRUE" Description="Motor: Strangquerschnitt" />
<Parameter Name="MOTOR_STATOR_RESISTANCE" ID="60" Value="3.263" Unit="Ohm" Disabled="TRUE" Description="Motor: Statorwiderstand" />
<Parameter Name="MOTOR_STATOR_INDUCTANCE" ID="61" Value="0.02048" Unit="Henry" Disabled="TRUE" Description="Motor: Statorinduktivität" />
<Parameter Name="MOTOR_INERTIA" ID="62" Value="0.00096" Unit="kgm²" Disabled="TRUE" Description="Motor: Trägheitsmoment" />
<Parameter Name="MOTOR_ROTOR_RESISTANCE" ID="76" Value="3.263" Unit="Ohm" Disabled="TRUE" Description="Motor: Rotorwiderstand" />
<Parameter Name="MOTOR_ROTOR_INDUCTANCE" ID="77" Value="0.02048" Unit="Henry" Disabled="TRUE" Description="Motor: Rotorinduktivität" />
<Parameter Name="MOTOR_MUTUAL_INDUCTANCE" ID="78" Value="0.51" Unit="Henry" Disabled="TRUE" Description="Motor: Hauptinduktivität" />
<Parameter Name="MOTOR_MAGNETIZING_CURR" ID="79" Value="1.37" Unit="A" Disabled="TRUE" Description="Motor: Magnetisierungsstrom" />
<Parameter Name="MOTOR_TAU_THERM" ID="849" Value="0" Unit="s" Disabled="TRUE" Description="Motor: Thermische Zeitkonstante" />
<Parameter Name="MOTOR_WIND_CONNECT" ID="46" Value="1" Disabled="TRUE" Description="default" />
<Parameter Name="MOTOR_COMMUT_OFFSET" ID="63" Value="0.0" Unit="rad" Disabled="TRUE" Description="Motor: Commutation offset" />
</Group>
<Group Name="Isolationsparameter" Disabled="TRUE">
<Parameter Name="MOTOR_WIND_TEMP_MAX" ID="74" Value="130" Unit="°C" Disabled="TRUE" Description="Motor: Maximal zulässige Wicklungstemperatur" />
</Group>
<Group Name="Typenschildparameter" Disabled="TRUE">
<Parameter Name="PIDENT_MOTOR_TYPE" ID="975" Value="1" Disabled="TRUE" Description="Parameter identification: Motor: Type" />
<Parameter Name="PIDENT_VOLTAGE_RATED" ID="977" Value="400" Unit="V" Disabled="TRUE" Description="Parameter identification: Motor: Rated voltage" />
<Parameter Name="PIDENT_SPEED_RATED" ID="979" Value="1380" Unit="1/min" Disabled="TRUE" Description="Parameter identification: Motor: Rated speed" />
<Parameter Name="PIDENT_CURR_RATED" ID="986" Value="2.1" Unit="A" Disabled="TRUE" Description="Parameter identification: Motor: Rated current" />
<Parameter Name="PIDENT_COS_PHI" ID="989" Value="0.73" Disabled="TRUE" Description="Parameter identification: Motor: Active power factor" />
<Parameter Name="PIDENT_FREQ_RATED" ID="990" Value="50" Unit="cps" Disabled="TRUE" Description="Parameter identification: Motor: Rated frequency" />
</Group>
<Group Name="Regler" Disabled="TRUE">
<Parameter Name="ICTRL_KV" ID="223" Value="1" Unit="V/A" Disabled="TRUE" Description="CTRL Current controller: Proportional amplification factor" />
</Group>
</Group>
<Parameter Name="AXLIM_T_JOLT" ID="125" Value="0.1" Unit="s" Disabled="TRUE" Description="Ruckzeit" />
<Parameter Name="AXLIM_DS_STOP2" ID="229" Value="500" Unit="Einh." Disabled="TRUE" Description="AXLIM_DS_STOP2" />
<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=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="UCTRL_UDC_REF" ID="851" Value="750" Unit="V" Description="CTRL DC bus: Set value 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_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,35 @@
(*//-----------------------------------------------------------------------------------------------------*)
(*//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_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,198 @@
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 ();
//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
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,32 @@
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_Reset.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_ReadDriveStatus.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_CamIn : MC_CamIn := (0); (*Start CAM coupling with master*)
Axis_MC_CamOut : MC_CamOut := (0); (*Stop CAM coupling *)
Axis_MC_CamTableSelect : MC_CamTableSelect := (0); (*Select CAM Table*)
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_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,763 @@
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.DriveStatus.bHomingOk := 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 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.bHome := 0;
lAxis.enStep := enAxSTATE_HOME;
ELSIF lAxis.Move.bBraketest THEN
lAxis.Move.bBraketest := 0;
lAxis.enStep := enAxSTATE_BRAKE_TEST;
ELSIF lAxis.Move.bJogPos THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_JOG_POSITIVE;
ELSIF lAxis.Move.bJogNeg THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_JOG_NEGATIVE;
ELSIF lAxis.Move.bAbsolute AND 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.bStopCAMSlave THEN
lAxis.Move.bStopCAMSlave := 0;
lAxis.enStep := enAxSTATE_MOVE_CAM_STOP;
ELSIF lAxis.Move.bStartCAMSlave THEN
lAxis.Move.bStopCAMSlave := 0;
lAxis.enStep := enAxSTATE_MOVE_CAM_SELECT;
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;
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;
ELSIF Axis_MC_Home.Done THEN
Axis_MC_Home.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
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_POSITIVE:
Axis_MC_MoveVelocity.Velocity := lAxis.Para.rJogVelocity;
Axis_MC_MoveVelocity.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_MoveVelocity.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_MoveVelocity.Direction := mcPOSITIVE_DIR;
Axis_MC_MoveVelocity.Execute := 1;
IF NOT lAxis.Move.bJogPos OR lAxis.bStop THEN
Axis_MC_MoveVelocity.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
END_IF
//==============================================
//Jog Negative
enAxSTATE_JOG_NEGATIVE:
Axis_MC_MoveVelocity.Velocity := lAxis.Para.rJogVelocity;
Axis_MC_MoveVelocity.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_MoveVelocity.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_MoveVelocity.Direction := mcNEGATIVE_DIR;
Axis_MC_MoveVelocity.Execute := 1;
IF NOT lAxis.Move.bJogNeg OR lAxis.bStop THEN
Axis_MC_MoveVelocity.Execute := 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 CAM TABLE SELECT
enAxSTATE_MOVE_CAM_SELECT:
Axis_MC_CamTableSelect.CamTable := lAxis.Para.strCamTable;
Axis_MC_CamTableSelect.Periodic := mcNON_PERIODIC;
//mcPEIODIC
Axis_MC_CamTableSelect.Execute := 1;
IF Axis_MC_CamTableSelect.Done THEN
usCamTableID := Axis_MC_CamTableSelect.CamTableID;
Axis_MC_CamTableSelect.Execute := 0;
lAxis.enStep := enAxSTATE_MOVE_CAM_START;
END_IF
//==============================================
//Move CAM START
enAxSTATE_MOVE_CAM_START:
Axis_MC_CamIn.MasterOffset := 0.0;
Axis_MC_CamIn.SlaveOffset := 0.0;
Axis_MC_CamIn.MasterScaling := 1000.0;
Axis_MC_CamIn.SlaveScaling := 1000.0;
Axis_MC_CamIn.StartMode := mcRELATIVE;
//mcABSOLUTE
//mcDIRECT
Axis_MC_CamIn.CamTableID := usCamTableID;
Axis_MC_CamIn.Execute := 1;
IF lAxis.bStop THEN
Axis_MC_CamIn.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF lAxis.Move.bStopCAMSlave THEN
lAxis.Move.bStopCAMSlave := 0;
Axis_MC_CamIn.Execute := 0;
lAxis.enStep := enAxSTATE_MOVE_CAM_STOP;
END_IF
//==============================================
//Move CAM STOP
enAxSTATE_MOVE_CAM_STOP:
Axis_MC_CamOut.Execute := 1;
IF Axis_MC_CamOut.Done THEN
Axis_MC_CamOut.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
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 CAM 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_CamTableSelect.Execute := 0;
Axis_MC_CamIn.Execute := 0;
Axis_MC_CamOut.Execute := 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.bStartCAMSlave := 0;
lAxis.Move.bStopCAMSlave := 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_MoveAbsolute ();
Axis_MC_BR_MoveAbsoluteTriggStop();
Axis_MC_MoveAdditive ();
Axis_MC_BR_MoveAdditiveTriggStop ();
Axis_MC_MoveVelocity ();
AXis_MC_BR_MoveVelocityTriggStop ();
Axis_MC_CamTableSelect ();
Axis_MC_CamIn ();
Axis_MC_CamOut ();
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,91 @@
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);
//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_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_CamIn.Master := udAxisMasterObj;
Axis_MC_CamIn.Slave := udAxisSlaveObj;
Axis_MC_CamOut.Slave := udAxisSlaveObj;
Axis_MC_CamTableSelect.Master := udAxisMasterObj;
Axis_MC_CamTableSelect.Slave := udAxisSlaveObj;
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,93 @@
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);
//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_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_CamIn.Master := udAxisMasterObj;
Axis_MC_CamIn.Slave := udAxisSlaveObj;
Axis_MC_CamOut.Slave := udAxisSlaveObj;
Axis_MC_CamTableSelect.Master := udAxisMasterObj;
Axis_MC_CamTableSelect.Slave := udAxisSlaveObj;
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,93 @@
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);
//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_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_CamIn.Master := udAxisMasterObj;
Axis_MC_CamIn.Slave := udAxisSlaveObj;
Axis_MC_CamOut.Slave := udAxisSlaveObj;
Axis_MC_CamTableSelect.Master := udAxisMasterObj;
Axis_MC_CamTableSelect.Slave := udAxisSlaveObj;
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,93 @@
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);
//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_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_CamIn.Master := udAxisMasterObj;
Axis_MC_CamIn.Slave := udAxisSlaveObj;
Axis_MC_CamOut.Slave := udAxisSlaveObj;
Axis_MC_CamTableSelect.Master := udAxisMasterObj;
Axis_MC_CamTableSelect.Slave := udAxisSlaveObj;
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,93 @@
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);
//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_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_CamIn.Master := udAxisMasterObj;
Axis_MC_CamIn.Slave := udAxisSlaveObj;
Axis_MC_CamOut.Slave := udAxisSlaveObj;
Axis_MC_CamTableSelect.Master := udAxisMasterObj;
Axis_MC_CamTableSelect.Slave := udAxisSlaveObj;
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,93 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[5]);
lAxisActPos ACCESS ADR (gAxisActPos[6]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
//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_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_CamIn.Master := udAxisMasterObj;
Axis_MC_CamIn.Slave := udAxisSlaveObj;
Axis_MC_CamOut.Slave := udAxisSlaveObj;
Axis_MC_CamTableSelect.Master := udAxisMasterObj;
Axis_MC_CamTableSelect.Slave := udAxisSlaveObj;
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,188 @@
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*)
bStartCAMSlave : BOOL; (*Kurvenscheibenkopplung starten*)
bStopCAMSlave : BOOL; (*Kurvenscheibenkopplung stoppen*)
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 *)
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
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*)
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; (*Homepositoin for Homing*)
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*)
strCamTable : STRING[12]; (*CAM*)
END_STRUCT;
typAxis : STRUCT (*Acopos Achse*)
enStep : enAxisStep; (*Achs Schritt*)
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;
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_POSITIVE, (*Achse vorw<72>rts tippen*)
enAxSTATE_JOG_NEGATIVE, (*Achse r<>ckw<6B>rts 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_CAM_SELECT, (*CAM Tabelle ausw<73>hlen*)
enAxSTATE_MOVE_CAM_START, (*CAM starten*)
enAxSTATE_MOVE_CAM_STOP, (*CAM Stoppen*)
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*)
mcDriveStatus : MC_DRIVESTATUS_TYP; (*actual status of the axis*)
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,23 @@
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*)
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
(*Permanent*)
VAR RETAIN
grAxisABSOffShaft : ARRAY[1..4] OF REAL; (*Absolute Offsets*)
END_VAR
(*Constants*)

View File

@@ -0,0 +1,12 @@
<?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="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 Extra Axis">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,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_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="800.0" />
<Parameter ID="v_neg" Value="800.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.0001" />
<Parameter ID="t_in_pos" Value="0.0" />
<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="15.0" Description="Proportional amplification (25 working but too hard)" />
<Parameter ID="tn" Value="0.0" />
<Parameter ID="t_predict" Value="0.0035" />
<Parameter ID="t_total" Value="0.004" />
<Parameter ID="p_max" Value="589.0" />
<Parameter ID="i_max" Value="0.0" />
</Group>
<Group ID="speed">
<Parameter ID="kv" Value="0.86" />
<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="0" />
<Parameter ID="v_switch" Value="100.0" />
<Parameter ID="v_trigger" Value="100.0" />
<Parameter ID="a" Value="500.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="ncON" />
<Parameter ID="tr_s_block" Value="0.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="1000" />
<Parameter ID="rev_motor" Value="1" />
</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="10" Description="Units at the load {}" />
<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>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="10" />
<Parameter ID="rev_motor" Value="5" />
</Group>
</Group>
</Group>
</Group>
<Group ID="limit">
<Group ID="parameter">
<Parameter ID="v_pos" Value="100.0" />
<Parameter ID="v_neg" Value="100.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" />
<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="0.1" />
<Parameter ID="ds_stop" Value="1.0" />
<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,20 @@
<?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" Description="Achsdatentypen">GlobalAxis.typ</Object>
<Object Type="File" Description="Package variables">GlobalAxis.var</Object>
<Object Type="Program" Language="IEC" Description="Controller">PressCtrl</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="Package">Init</Object>
<Object Type="Package">ACPPar</Object>
<Object Type="DataObject" Language="Ett">acp10etxde</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,38 @@
FUNCTION HomeAxis
IF (enInStep = enHomeOffsetPerm) THEN
//Home with permanent Stored Offset
//---------------------------
InAxis.Para.rHomePosition := rInPermanentOffset + rInOffset;
InAxis.bHome := TRUE;
enInStep := enHomeOffsetPermDone;
ELSIF (enInStep = enHomeOffsetPermDone) THEN
//Home with permanent Stored Offset
//---------------------------
IF InAxis.DriveStatus.bHomingOk 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;
END_IF
IF (enInStep = enHomeOffset0Done) THEN
//Home with Stored 0
//---------------------------
IF InAxis.DriveStatus.bHomingOk AND NOT InAxis.bHome THEN
enInStep := enHomeStorePos;
END_IF
END_IF
IF (enInStep = enHomeStorePos) THEN
//Store Axis Position
//---------------------------
rInPermanentOffset := - InAxis.rActPosition + rInOffset;
ERRxwarning(50001, 0 , ADR ('Encoder Offset modified'));
enInStep := enHomeOffsetPerm;
END_IF
END_FUNCTION

View File

@@ -0,0 +1,11 @@
<?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="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>
</Files>
</Program>

View File

@@ -0,0 +1,19 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: PressCtrl
* File: PressCtrl.fun
* Author: michi
* Created: December 08, 2012
********************************************************************
* Functions and function blocks of program PressCtrl
********************************************************************)
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

View File

@@ -0,0 +1,312 @@
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]);
//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 := mcFILE + mcADD_DATE_TIME;
//Setup Trace
gMAxTrace.Trace_Config.ParTrace.Parameter[0].Axis := ADR (gvAxShaftMaster);
gMAxTrace.Trace_Config.ParTrace.Parameter[0].ParID := ACP10PAR_PCTRL_V_SET;
gMAxTrace.Trace_Config.ParTrace.Parameter[1].Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Parameter[1].ParID := ACP10PAR_PCTRL_V_SET;
gMAxTrace.Trace_Config.ParTrace.Parameter[2].Axis := ADR (gAxShaft2);
gMAxTrace.Trace_Config.ParTrace.Parameter[2].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[3].Axis := ADR (gAxShaft3);
gMAxTrace.Trace_Config.ParTrace.Parameter[3].ParID := ACP10PAR_PCTRL_S_ACT ; //ACP10PAR_PCTRL_S_ACT
gMAxTrace.Trace_Config.ParTrace.Parameter[4].Axis := ADR (gAxShaft4);
gMAxTrace.Trace_Config.ParTrace.Parameter[4].ParID := ACP10PAR_PCTRL_S_ACT ; //ACP10PAR_PCTRL_S_ACT
gMAxTrace.Trace_Config.ParTrace.Trigger.Axis := ADR (gvAxShaftMaster);
gMAxTrace.Trace_Config.ParTrace.Trigger.ParID := ACP10PAR_PCTRL_V_SET;
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 := 60;
gMAxTrace.Trace_Config.ParTrace.SamplingTime := 0.08;
gMAxTrace.Trace_Config.ParTrace.Delay := 0.0;
gMAxTrace.Trace_Config.ParTrace.NetTriggerDelay := 0;
//Parameter
lAxisShaftMaster.Para.rVelocity := 1000;
lAxisShaftMaster.Para.rAcceleration := 500;
lAxisShaftMaster.Para.rDeceleration := 500;
// lAxisWire1.Para.rPosition := 100;
// lAxisWire1.Para.rDistance := 340;
lAxisShaftMaster.Para.rJogVelocity := 10;
lAxisShaft1.Para.rJogVelocity := 10;
lAxisShaft2.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft3.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft4.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft1.Para.rVelocity := 100;
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;
rPressPosMin := rPressPosMin;
rPressPosMax := rPressPosMax;
END_PROGRAM
PROGRAM _CYCLIC
//SIMULATION
gMachine.bAxisSimulation := FALSE;
lAxisShaft2.Para.rGearMasterSyncPos := lAxisShaft1.Para.rGearMasterSyncPos;
lAxisShaft2.Para.rGearSlaveSyncPos := lAxisShaft1.Para.rGearSlaveSyncPos;
lAxisShaft2.Para.rGearMasterStartDistance := lAxisShaft1.Para.rGearMasterStartDistance;
lAxisShaft2.Para.rGearSyncVelocity := lAxisShaft1.Para.rGearSyncVelocity;
lAxisShaft2.Para.rGearSyncAcceleration := lAxisShaft1.Para.rGearSyncAcceleration;
lAxisShaft3.Para.rGearMasterSyncPos := lAxisShaft1.Para.rGearMasterSyncPos;
lAxisShaft3.Para.rGearSlaveSyncPos := lAxisShaft1.Para.rGearSlaveSyncPos;
lAxisShaft3.Para.rGearMasterStartDistance := lAxisShaft1.Para.rGearMasterStartDistance;
lAxisShaft3.Para.rGearSyncVelocity := lAxisShaft1.Para.rGearSyncVelocity;
lAxisShaft3.Para.rGearSyncAcceleration := lAxisShaft1.Para.rGearSyncAcceleration;
lAxisShaft4.Para.rGearMasterSyncPos := lAxisShaft1.Para.rGearMasterSyncPos;
lAxisShaft4.Para.rGearSlaveSyncPos := lAxisShaft1.Para.rGearSlaveSyncPos;
lAxisShaft4.Para.rGearMasterStartDistance := lAxisShaft1.Para.rGearMasterStartDistance;
lAxisShaft4.Para.rGearSyncVelocity := lAxisShaft1.Para.rGearSyncVelocity;
lAxisShaft4.Para.rGearSyncAcceleration := lAxisShaft1.Para.rGearSyncAcceleration;
//Pransfer Values to Axis2
lAxisShaft1.Para.rAcceleration := lAxisShaftMaster.Para.rAcceleration;
lAxisShaft1.Para.rDeceleration := lAxisShaftMaster.Para.rDeceleration;
lAxisShaft2.Para.rAcceleration := lAxisShaftMaster.Para.rAcceleration;
lAxisShaft2.Para.rDeceleration := lAxisShaftMaster.Para.rDeceleration;
lAxisShaft3.Para.rAcceleration := lAxisShaftMaster.Para.rAcceleration;
lAxisShaft3.Para.rDeceleration := lAxisShaftMaster.Para.rDeceleration;
lAxisShaft4.Para.rAcceleration := lAxisShaftMaster.Para.rAcceleration;
lAxisShaft4.Para.rDeceleration := lAxisShaftMaster.Para.rDeceleration;
//Power Up Axises
lPS.Command.bPower := gMachine.bMachineON;
lAxisShaftMaster.bPower := gMachine.bMachineON;
lAxisShaft1.bPower := gMachine.bMachineON;
lAxisShaft2.bPower := gMachine.bMachineON;
lAxisShaft3.bPower := gMachine.bMachineON;
lAxisShaft4.bPower := gMachine.bMachineON;
lAxisShaftMaster.bStop := bStop;
lAxisShaft1.bStop := bStop;
lAxisShaft2.bStop := bStop;
lAxisShaft3.bStop := bStop;
lAxisShaft3.bStop := bStop;
//Couple Axises
IF EDGEPOS (bDevelEnalbeGear) THEN
rAveragePos := (lAxisShaft1.rActPosition +
lAxisShaft2.rActPosition +
lAxisShaft3.rActPosition +
lAxisShaft4.rActPosition) * 0.25;
lAxisShaftMaster.Para.rPosition := rAveragePos;
lAxisShaftMaster.Move.bAbsolute := 1;
lAxisShaft1.Para.rPosition := rAveragePos;
lAxisShaft1.Move.bAbsolute := 1;
lAxisShaft2.Para.rPosition := rAveragePos;
lAxisShaft2.Move.bAbsolute := 1;
lAxisShaft3.Para.rPosition := rAveragePos;
lAxisShaft3.Move.bAbsolute := 1;
lAxisShaft4.Para.rPosition := rAveragePos;
lAxisShaft4.Move.bAbsolute := 1;
END_IF
IF lAxisShaftMaster.DriveStatus.bHomingOk AND lAxisShaft1.DriveStatus.bHomingOk AND bDevelEnalbeGear
AND NOT lAxisShaft1.Status.bMotionSynchronized AND NOT lAxisShaft1.Move.bAbsolute THEN //AND (lAxisShaft1.rActPosition = rAveragePos) AND (lAxisShaftMaster.rActPosition = rAveragePos) THEN
lAxisShaft1.Move.bStartGearSlave := TRUE;
END_IF
IF lAxisShaftMaster.DriveStatus.bHomingOk AND lAxisShaft2.DriveStatus.bHomingOk AND bDevelEnalbeGear
AND NOT lAxisShaft2.Status.bMotionSynchronized AND NOT lAxisShaft2.Move.bAbsolute THEN //AND (lAxisShaft2.rActPosition = rAveragePos) AND (lAxisShaftMaster.rActPosition = rAveragePos) THEN
lAxisShaft2.Move.bStartGearSlave := TRUE;
END_IF
IF lAxisShaftMaster.DriveStatus.bHomingOk AND lAxisShaft3.DriveStatus.bHomingOk AND bDevelEnalbeGear
AND NOT lAxisShaft3.Status.bMotionSynchronized AND NOT lAxisShaft3.Move.bAbsolute THEN //AND (lAxisShaft3.rActPosition = rAveragePos) AND (lAxisShaftMaster.rActPosition = rAveragePos) THEN
lAxisShaft3.Move.bStartGearSlave := TRUE;
END_IF
IF lAxisShaftMaster.DriveStatus.bHomingOk AND lAxisShaft4.DriveStatus.bHomingOk AND bDevelEnalbeGear
AND NOT lAxisShaft4.Status.bMotionSynchronized AND NOT lAxisShaft4.Move.bAbsolute THEN //AND (lAxisShaft4.rActPosition = rAveragePos) AND (lAxisShaftMaster.rActPosition = rAveragePos) THEN
lAxisShaft4.Move.bStartGearSlave := TRUE;
END_IF
//Move Conditions
MoveConditions.bEnableNegShaft1 := (lAxisShaft1.rActPosition > rPressPosMin);
MoveConditions.bEnablePosShaft1 := (lAxisShaft1.rActPosition < rPressPosMax);
MoveConditions.bEnableNegShaft2 := (lAxisShaft2.rActPosition > rPressPosMin);
MoveConditions.bEnablePosShaft2 := (lAxisShaft2.rActPosition < rPressPosMax);
MoveConditions.bEnableNegShaft3 := (lAxisShaft3.rActPosition > rPressPosMin);
MoveConditions.bEnablePosShaft3 := (lAxisShaft3.rActPosition < rPressPosMax);
MoveConditions.bEnableNegShaft4 := (lAxisShaft4.rActPosition > rPressPosMin);
MoveConditions.bEnablePosShaft4 := (lAxisShaft4.rActPosition < rPressPosMax);
MoveConditions.bEnableNegShaftMaster := (lAxisShaftMaster.rActPosition > rPressPosMin);
MoveConditions.bEnablePosShaftMaster := (lAxisShaftMaster.rActPosition < rPressPosMax);
StatusVCControls.usJogNegShaft1 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableNegShaft1), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogPosShaft1 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnablePosShaft1), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogNegShaft2 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableNegShaft2), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogPosShaft2 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnablePosShaft2), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogNegShaft3 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableNegShaft3), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogPosShaft3 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnablePosShaft3), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogNegShaft4 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableNegShaft4), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogPosShaft4 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnablePosShaft4), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogNegShaftMaster := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableNegShaftMaster), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR NOT bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usJogPosShaftMaster := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnablePosShaftMaster), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (gMachine.enMode <> enMACH_JOG) OR NOT bDevelEnalbeGear, VC_HIDE_BITPOS);
StatusVCControls.usBtnActivateGear := SHL (BOOL_TO_USINT ((gMachine.enMode <> enMACH_JOG ) OR bDevelEnalbeGear), VC_HIDE_BITPOS);
StatusVCControls.usBtnDisableGear := SHL (BOOL_TO_USINT ((gMachine.enMode <> enMACH_JOG ) OR NOT bDevelEnalbeGear), VC_HIDE_BITPOS);
//Home
lAxisShaftMaster.bHome := bHome;
IF gMachine.bMachineON OR (gMachine.enMode = enMACH_JOG) OR bHome THEN
IF ( enStepHomeShaft1 = enHomeIdle) AND NOT lAxisShaft1.DriveStatus.bHomingOk THEN
enStepHomeShaft1 := enHomeOffsetPerm;
END_IF
IF ( enStepHomeShaft2 = enHomeIdle) AND NOT lAxisShaft2.DriveStatus.bHomingOk THEN
enStepHomeShaft2 := enHomeOffsetPerm;
END_IF
IF ( enStepHomeShaft3 = enHomeIdle) AND NOT lAxisShaft3.DriveStatus.bHomingOk THEN
enStepHomeShaft3 := enHomeOffsetPerm;
END_IF
IF ( enStepHomeShaft4 = enHomeIdle) AND NOT lAxisShaft4.DriveStatus.bHomingOk THEN
enStepHomeShaft4 := enHomeOffsetPerm;
END_IF
END_IF
bHome :=FALSE;
HomeAxis (ADR (lAxisShaft1),
ADR (grAxisABSOffShaft[1]),
rHOMEPOS,
ADR (enStepHomeShaft1));
HomeAxis (ADR (lAxisShaft2),
ADR (grAxisABSOffShaft[2]),
rHOMEPOS,
ADR (enStepHomeShaft2));
HomeAxis (ADR (lAxisShaft3),
ADR (grAxisABSOffShaft[3]),
rHOMEPOS,
ADR (enStepHomeShaft3));
HomeAxis (ADR (lAxisShaft4),
ADR (grAxisABSOffShaft[4]),
rHOMEPOS,
ADR (enStepHomeShaft4));
//Jog Mode
//==========================================================================================
IF gMachine.enMode = enMACH_JOG THEN
//Uncritical Movements
// IF EDGEPOS (gManualCommands.bToggleWireClutch) THEN
// END_IF
lAxisShaft1.Move.bJogNeg := ManualCommands.bJogNegShaft1 AND MoveConditions.bEnableNegShaft1;
lAxisShaft1.Move.bJogPos := ManualCommands.bJogPosShaft1 AND MoveConditions.bEnablePosShaft1;
lAxisShaft2.Move.bJogNeg := ManualCommands.bJogNegShaft2 AND MoveConditions.bEnableNegShaft2;
lAxisShaft2.Move.bJogPos := ManualCommands.bJogPosShaft2 AND MoveConditions.bEnablePosShaft2;
lAxisShaft3.Move.bJogNeg := ManualCommands.bJogNegShaft3 AND MoveConditions.bEnableNegShaft3;
lAxisShaft3.Move.bJogPos := ManualCommands.bJogPosShaft3 AND MoveConditions.bEnablePosShaft3;
lAxisShaft4.Move.bJogNeg := ManualCommands.bJogNegShaft4 AND MoveConditions.bEnableNegShaft4;
lAxisShaft4.Move.bJogPos := ManualCommands.bJogPosShaft4 AND MoveConditions.bEnablePosShaft4;
lAxisShaftMaster.Move.bJogNeg := ManualCommands.bJogNegShaftMaster AND MoveConditions.bEnableNegShaftMaster;
lAxisShaftMaster.Move.bJogPos := ManualCommands.bJogPosShaftMaster AND MoveConditions.bEnablePosShaftMaster;
IF ManualCommands.bActivateGear THEN
bDevelEnalbeGear := TRUE;
END_IF
IF ManualCommands.bDisableGear THEN
bDevelEnalbeGear := FALSE;
END_IF
//FixMe Homeswitch
IF 1 = 1 AND (genAccessLevel = 0) THEN
IF EDGEPOS (ManualCommands.bAdjustHomeShaft1) THEN
END_IF
END_IF
//(Semi) - Automaticmode
//==========================================================================================
ELSIF gMachine.enMode = enMACH_MANUAL THEN
bEnableNextStep := EDGEPOS (ManualCommands.bNextManStep);
//Wirefeed
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// CASE enStepWirefeed OF
//Init
//---------------------------
// enWireStep_INIT:
// gbOuWireDistirbutorOpen := FALSE;
// IF bHomePosWireprocess AND bEnableNextStep THEN
// enStepWirefeed := enWireStep_FEED;
// enStateWire := enWire_FEEDING;
// lAxisWire1.Move.bAdditive := TRUE;
// END_IF
// END_CASE;
END_IF;
gStatusVCControls.usBtnErrorReset := (lPS.Error.uiID = 0) AND
(lAxisShaftMaster.Error.uiID = 0) AND
(lAxisShaft1.Error.uiID = 0) AND
(lAxisShaft2.Error.uiID = 0) AND
(lAxisShaft3.Error.uiID = 0) AND
(lAxisShaft4.Error.uiID = 0);
IF EDGEPOS (gVCCommands.bErrorReset) THEN
lPS.Error.bAcknowledge := (lPS.Error.uiID > 0);
lAxisShaftMaster.Error.bAcknowledge := (lAxisShaftMaster.Error.uiID > 0);
lAxisShaft1.Error.bAcknowledge := (lAxisShaft1.Error.uiID > 0);
lAxisShaft2.Error.bAcknowledge := (lAxisShaft2.Error.uiID > 0);
lAxisShaft3.Error.bAcknowledge := (lAxisShaft3.Error.uiID > 0);
lAxisShaft4.Error.bAcknowledge := (lAxisShaft4.Error.uiID > 0);
usErrorReset := 0;
END_IF
END_PROGRAM

View File

@@ -0,0 +1,121 @@
(**)
TYPE
typ_enStepWirefeed :
( (*Schritte Drahtzuf<75>hrung / Verteiler*)
enWireStep_INIT,
enWireStep_FEED, (*Draht zuf<75>hren*)
enWireStep_BEND_END2, (*Drahtende 2 biegen*)
enWireStep_WAIT_BENT_END2, (*warten bis Drahtende 2 gebogen*)
enWireStep_WATT_BENDER2_OPEN, (*Drahtende 2 freigegeben*)
enWireStep_CUT, (*Draht schneiden*)
enWireStep_HOME_CUTTER, (*Cutter zur<75>ck in GS*)
enWireStep_BEND_END1, (*Drahtende 1 biegen*)
enWireStep_WAIT_BENT_END1, (*warten bis Drahtende 1 gebogen*)
enWireStep_WATT_BENDER1_OPEN, (*Drahtende 1 freigeben*)
enWireStep_CHANGE_LANE, (*Spurwechsel*)
enWireStep_WAIT_WIRE_PICKED, (*Warten bis Draht gegriffen ist*)
enWireStep_OPEN_WIREDISTRIBUTOR, (*Drahtverteiler <20>ffnen*)
enWireStep_WAIT_WIRE_AWAY, (*Warten bis Draht abgeholt ist*)
enWireStep_RETURN_LANE1, (*Auf Spur 1 (ggf.) zur<75>ck*)
enWireStep_WAIT_BENDERS_HOMED, (*Warten bis Bieger zur<75>ckgestelt sind*)
enWireStep_CLOSE_WIREDISTRIBUTOR, (*Drahtverteiler schlie<69>en*)
enWireStep_STOP
);
typ_enStepWireHandling :
( (*Schritte Drahthandlingeinheit*)
enWireHandlingStep_INIT,
enWireHandlingStep_WAIT_WIRE, (*Auf Draht warten*)
enWireHandlingStep_INSERT_HDL, (*Handling in Drahtverteiler einfahren*)
enWireHandlingStep_PRESTRETCH, (*Greifer vorspannen*)
enWireHandlingStep_PICK_WIRE, (*Draht greifen*)
enWireHandlingStep_WAIT_OPEN_D, (*Warten bis Drahtverteiler ge<67>ffnet*)
enWireHandlingStep_RETURN_HDL, (*Handling zur<75>ck fahren*)
enWireHandlingStep_LIFT_WIRE, (*Draht auffahren*)
enWireHandlingStep_WAIT_2ndWIRE, (*Synchronisieren mit Draht 2 bzw. 1*)
enWireHandlingStep_HEAT_WIRE, (*Draht vorheizen*)
enWireHandlingStep_INSERT_WIRE, (*Draht in Lamelle Einfahren*)
enWireHandlingStep_COOL_WIRE, (*Draht abk<62>hlen lassen*)
enWireHandlingStep_OPEN_GRIPPER, (*Draht freigeben*)
enWireHandlingStep_RETURN_HDL2, (*Handling zur<75>ckfahren*)
enWireHandlingStep_SINK_HDL (*Handling absenken*)
);
typ_enWireState :
( (*Zustand Draht in Verteiler*)
enWire_NOWIRE, (*Kein Draht im Verteiler*)
enWire_FEEDING, (*Drahtzufuhr ist gestartet*)
enWire_FEEDED, (*Draht ist zugef<65>hrt*)
enWire_END2_BENT1, (*Drahtende 2 ist gebogen f<>r Handling 1*)
enWire_END2_BENT2, (*Drahtende 2 ist gebogen f<>r Handling 2*)
enWire_CUT1, (*Draht ist Geschnitten f<>r Handling 1*)
enWire_CUT2, (*Draht ist Geschnitten f<>r Handling 2*)
enWire_BENT1, (*Draht ist fertig gebogen f<>r Handling 1*)
enWire_BENT2 (*Draht ist fertig gebogen f<>r Handling 2*)
);
typ_enStepBelt :
( (*Absolutoffset einstellen*)
enBeltStep_INIT,
enBeltStep_WAIT_WELDED,
enBeltStep_WAIT_ALL_RETURNED,
enBeltStep_EJECT_FRAME,
enBeltStep_RETURN_TO_WELDPOS
);
typ_enHome :
(
enHomeIdle,
enHomeOffsetPerm, (*Mit permanet gesp. Offset*)
enHomeOffsetPermDone, (*Mit permanet gesp. Offset*)
enHomeOffset0, (*Mit Offset 0 referenzieren*)
enHomeOffset0Done, (*Mit Offset 0 referenzieren*)
enHomeStorePos (*Aktuelle Pos als Offset (zum Allg Offset) speichern*)
);
typStatusPressVCControls : STRUCT (*Controlbytes f<>r Visu*)
usJogNegShaft1 : USINT;
usJogPosShaft1 : USINT;
usJogNegShaft2 : USINT;
usJogPosShaft2 : USINT;
usJogNegShaft3 : USINT;
usJogPosShaft3 : USINT;
usJogNegShaft4 : USINT;
usJogPosShaft4 : USINT;
usJogNegShaftMaster : USINT;
usJogPosShaftMaster : USINT;
usAdjustHomeShaft1 : USINT;
usAdjustHomeShaft2 : USINT;
usAdjustHomeShaft3 : USINT;
usAdjustHomeShaft4 : USINT;
usBtnActivateGear : USINT;
usBtnDisableGear : 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;
bAdjustHomeShaft1 : BOOL;
bAdjustHomeShaft2 : BOOL;
bAdjustHomeShaft3 : BOOL;
bAdjustHomeShaft4 : BOOL;
bJogNegShaftMaster : BOOL;
bJogPosShaftMaster : BOOL;
bActivateGear : BOOL;
bDisableGear : BOOL;
END_STRUCT;
typMoveConditions : STRUCT (*Bewegungsfreigaben*)
bEnableNegShaft1 : BOOL;
bEnablePosShaft1 : BOOL;
bEnableNegShaft2 : BOOL;
bEnablePosShaft2 : BOOL;
bEnableNegShaft3 : BOOL;
bEnablePosShaft3 : BOOL;
bEnableNegShaft4 : BOOL;
bEnablePosShaft4 : BOOL;
bEnableNegShaftMaster : BOOL;
bEnablePosShaftMaster : BOOL;
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,43 @@
(********************************************************************
* 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 *)
END_VAR
(*//Local Vars*)
VAR
bDevelEnalbeGear : BOOL := FALSE;
bHome : BOOL := FALSE;
bStop : BOOL;
bHalt : BOOL;
bEnableNextStep : BOOL; (*N<>chsten Schritt (Semiautomatik) Freigeben*)
usErrorReset : USINT;
rAveragePos : REAL;
rPressPosMin : REAL := 0.0; (*Presse Oben Pos Min*)
rPressPosMax : REAL := 6000.0; (*Press Unten Pos Max*)
StatusVCControls : typStatusPressVCControls;
ManualCommands : typManualCommnands; (*Kommandos Betriebsart Hand*)
MoveConditions : typMoveConditions;
enStepHomeShaft1 : typ_enHome;
enStepHomeShaft2 : typ_enHome;
enStepHomeShaft3 : typ_enHome;
enStepHomeShaft4 : typ_enHome;
END_VAR
(*//Positions Bender*)
VAR CONSTANT
rHOMEPOS : REAL := 0.0;
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 10ms
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,13 @@
(*Inputs / Outputs*)
(*================================================================================================================*)
(*Sick UE410*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gUE410_MU_MED : typUE410_MU_MED; (*Sick Sicherheits Modul - ST1 Eingangsdaten*)
gUE410_MU_MQD : typUE410_MU_MQD; (*Sick Sicherheits Modul - ST1 Ausgangsdaten*)
gUE410_ST2_8DI_MED : typUE410_8DI_MED; (*Sich Sicherheits Modul - ST2 Eingangsdaten*)
gUE410_ST2_8DI_MQD : typUE410_8DI_MQD; (*Sich Sicherheits Modul - ST2 Ausgangsdaten*)
gUE410_BAS1 : typUE410_BAS1; (*Sick Sicherheits Modul - Sammelfehler*)
gusUE410_BPF : USINT; (*Sick Sicherheits Modul - Backplane Fehler*)
guiUE410_CRC : UINT; (*Sick Sicherheits Modul - CRC der Config*)
END_VAR

View File

@@ -0,0 +1,9 @@
<?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" Description="Global variables / IOs">CommGlobal.var</Object>
<Object Type="File">UE410Global.typ</Object>
<Object Type="Program" Language="IEC" Description="Sick UE410 Safety Controller">UE410</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,43 @@
FUNCTION ASCtoUDINT
ASCtoUDINT := 0;
udNextAdr := udInNextAdr;
FOR usi:=0 TO 7 BY 1 DO
memcpy (ADR (usChar), udNextAdr + usi, 1);
CASE usChar OF
48:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 0;
49:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 1;
50:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 2;
51:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 3;
52:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 4;
53:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 5;
54:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 6;
55:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 7;
56:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 8;
57:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 9;
65:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 10;
66:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 11;
67:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 12;
68:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 13;
69:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 14;
70:
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 15;
ELSE
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 16#f;
END_CASE
END_FOR
END_FUNCTION

View File

@@ -0,0 +1,12 @@
<?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 Private="true">UE410.var</File>
<File Description="Local data types" Private="true">UE410.typ</File>
<File>UE410Cyclic.st</File>
<File>UE410Init.st</File>
<File Private="true">UE410.fun</File>
<File Description="Convert ASCII Value to UDINT">ASCtoUDINT.st</File>
</Files>
</Program>

View File

@@ -0,0 +1,11 @@
FUNCTION ASCtoUDINT : UDINT (*Convert ASCII Value to UDINT*)
VAR_INPUT
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
END_VAR
VAR
udNextAdr : UDINT;
usi : USINT;
usChar : USINT;
END_VAR
END_FUNCTION

View File

@@ -0,0 +1,12 @@
TYPE
Steps_enum :
( (*Steps of RFID Statemachine*)
enSTEP_INIT,
enSTEP_OPEN,
enSTEP_OPENED,
enSTEP_CONNECTED,
enSTEP_CLOSE,
enSTEP_CLOSED
);
END_TYPE

View File

@@ -0,0 +1,33 @@
(*FUB Instances*)
VAR
FUB_TcpOpen : TcpOpen;
FUB_TcpClient : TcpClient;
FUB_TcpClose : TcpClose;
FUB_TcpRecv : TcpRecv;
FUB_TcpSend : TcpSend;
END_VAR
(*//Local VArs*)
VAR
bAllowData : BOOL;
bSend : BOOL;
usi : USINT := 0;
usTemp : USINT := 0;
uiSequence : UINT;
uiOffset : UINT;
udClosePortID : UDINT;
udClientID : UDINT;
udSocketID : UDINT;
strServerIP : STRING[20];
enState : Steps_enum;
RequestTelegram : typUE410_REQUEST;
ResponseTelegram : typUE410_RESPONSE;
ResponseTelegramSave : typUE410_RESPONSE;
TON_Clienttimeout : TON;
TON_Reconnect : TON;
TON_RequestData : TON;
UE41Alarms : typAlarm := (0); (*UE41 Alarms*)
END_VAR
(*//Constants*)
VAR CONSTANT
uiCRC : UINT := 1234; (*Config CRC*)
END_VAR

View File

@@ -0,0 +1,220 @@
PROGRAM _CYCLIC
TON_Reconnect.IN := (enState = enSTEP_CLOSED);
TON_Reconnect.PT := t#1s;
TON_Reconnect ();
TON_RequestData.IN := (enState = enSTEP_CONNECTED) AND NOT bSend;
TON_RequestData.PT := t#200ms;
TON_RequestData ();
IF TON_RequestData.Q THEN
bSend := TRUE;
END_IF
IF TON_Reconnect.Q OR (enState = enSTEP_INIT) THEN
enState := enSTEP_OPEN;
END_IF
//Open listener Socket
FUB_TcpOpen.enable := (enState = enSTEP_OPEN);
FUB_TcpOpen ();
IF FUB_TcpOpen.status = 0 THEN
udClosePortID := FUB_TcpOpen.ident;
udSocketID := FUB_TcpOpen.ident;
enState := enSTEP_OPENED;
ELSIF FUB_TcpOpen.status = tcpERR_ALREADY_EXIST THEN
udClosePortID := FUB_TcpOpen.ident;
enState := enSTEP_CLOSE;
ELSIF FUB_TcpOpen.status = tcpERR_NOMORE_IDENTS THEN
udClosePortID := 1; //Close Port 1
enState := enSTEP_CLOSE;
END_IF
//connect to server
FUB_TcpClient.enable := (enState = enSTEP_OPENED);
FUB_TcpClient.ident := udSocketID;
FUB_TcpClient ();
TON_Clienttimeout.IN := (FUB_TcpClient.status = ERR_FUB_BUSY);
TON_Clienttimeout.PT := t#4s;
TON_Clienttimeout ();
IF FUB_TcpClient.status = ERR_OK THEN
//New Connection on Socket
enState := enSTEP_CONNECTED;
udClientID := udSocketID;
ELSIF (FUB_TcpClient.status = tcpERR_INVALID) OR
(FUB_TcpClient.status = tcpERR_ALREADY_CONNECTED) OR
(FUB_TcpClient.status = tcpERR_SYSTEM) OR
TON_Clienttimeout.Q THEN
udClosePortID := udSocketID;
enState := enSTEP_CLOSE;
END_IF
//Close listener Socket //Or Reset All
FUB_TcpClose.enable := (enState = enSTEP_CLOSE);
FUB_TcpClose.ident := udClosePortID;
FUB_TcpClose.how := (tcpSHUT_RD OR tcpSHUT_WR);
FUB_TcpClose ();
IF (FUB_TcpClose.status = 0) OR
(FUB_TcpClose.status = tcpERR_INVALID_IDENT) THEN
enState := enSTEP_CLOSED;
END_IF
//Receive Data an Client Connections
FUB_TcpRecv.enable := (enState = enSTEP_CONNECTED);
FUB_TcpRecv.ident := udClientID;
FUB_TcpRecv.pData := ADR (ResponseTelegram);
FUB_TcpRecv.datamax := 128;
FUB_TcpRecv.flags := 0;
FUB_TcpRecv ();
IF (FUB_TcpRecv.recvlen > 0) AND (FUB_TcpRecv.status = 0) THEN
memcpy (ADR (ResponseTelegramSave), ADR (ResponseTelegram), SIZEOF (ResponseTelegram));
IF (ResponseTelegram.uiSequence = H_TO_NUINT (uiSequence)) THEN
IF (RequestTelegram.wCommand = 16#F100) AND (ResponseTelegram.wCommand = 16#1F00) THEN
uiOffset := 0;
IF (ResponseTelegram.wRequestDS1 > 0) THEN
//InputData
gUE410_MU_MED.bS3 := (ResponseTelegram.BData[0] AND 2#10000000) > 0;
gUE410_MU_MED.bS2 := (ResponseTelegram.BData[0] AND 2#01000000) > 0;
gUE410_MU_MED.bS1 := (ResponseTelegram.BData[0] AND 2#00100000) > 0;
gUE410_MU_MED.bEN := (ResponseTelegram.BData[0] AND 2#00010000) > 0;
gUE410_MU_MED.bI4 := (ResponseTelegram.BData[0] AND 2#00001000) > 0;
gUE410_MU_MED.bI3 := (ResponseTelegram.BData[0] AND 2#00000100) > 0;
gUE410_MU_MED.bI2 := (ResponseTelegram.BData[0] AND 2#00000010) > 0;
gUE410_MU_MED.bI1 := (ResponseTelegram.BData[0] AND 2#00000001) > 0;
gUE410_ST2_8DI_MED.bI8 := (ResponseTelegram.BData[1] AND 2#10000000) > 0;
gUE410_ST2_8DI_MED.bI7 := (ResponseTelegram.BData[1] AND 2#01000000) > 0;
gUE410_ST2_8DI_MED.bI6 := (ResponseTelegram.BData[1] AND 2#00100000) > 0;
gUE410_ST2_8DI_MED.bI5 := (ResponseTelegram.BData[1] AND 2#00010000) > 0;
gUE410_ST2_8DI_MED.bI4 := (ResponseTelegram.BData[1] AND 2#00001000) > 0;
gUE410_ST2_8DI_MED.bI3 := (ResponseTelegram.BData[1] AND 2#00000100) > 0;
gUE410_ST2_8DI_MED.bI2 := (ResponseTelegram.BData[1] AND 2#00000010) > 0;
gUE410_ST2_8DI_MED.bI1 := (ResponseTelegram.BData[1] AND 2#00000001) > 0;
uiOffset := uiOffset + N_TO_HUINT (WORD_TO_UINT (ResponseTelegram.wRequestDS1));
END_IF
IF (ResponseTelegram.wRequestDS2 > 0) THEN
//Module 2 is 8DI (Fix Coded)
gUE410_MU_MQD.bBYP := (ResponseTelegram.BData[uiOffset] AND 2#10000000) > 0;
gUE410_MU_MQD.bMUT := (ResponseTelegram.BData[uiOffset] AND 2#01000000) > 0;
gUE410_MU_MQD.bStRqB := (ResponseTelegram.BData[uiOffset] AND 2#00100000) > 0;
gUE410_MU_MQD.bStRqA := (ResponseTelegram.BData[uiOffset] AND 2#00010000) > 0;
gUE410_MU_MQD.bX4 := (ResponseTelegram.BData[uiOffset] AND 2#00001000) > 0;
gUE410_MU_MQD.bX3 := (ResponseTelegram.BData[uiOffset] AND 2#00000100) > 0;
gUE410_MU_MQD.bX2 := (ResponseTelegram.BData[uiOffset] AND 2#00000010) > 0;
gUE410_MU_MQD.bX1 := (ResponseTelegram.BData[uiOffset] AND 2#00000001) > 0;
gUE410_ST2_8DI_MQD.bQB := (ResponseTelegram.BData[uiOffset + 1] AND 2#00001000) > 0;
gUE410_ST2_8DI_MQD.bQA := (ResponseTelegram.BData[uiOffset + 1] AND 2#00000010) > 0;
uiOffset := uiOffset + N_TO_HUINT (WORD_TO_UINT (ResponseTelegram.wRequestDS2));
END_IF
IF (ResponseTelegram.wRequestDS3 > 0) THEN
//Module 2 is 8DI (Fix Coded)
gUE410_BAS1.bIF := (ResponseTelegram.BData[uiOffset] AND 2#10000000) > 0;
gUE410_BAS1.bQS := (ResponseTelegram.BData[uiOffset] AND 2#01000000) > 0;
gUE410_BAS1.bAF := (ResponseTelegram.BData[uiOffset] AND 2#00100000) > 0;
gUE410_BAS1.bZF := (ResponseTelegram.BData[uiOffset] AND 2#00010000) > 0;
gUE410_BAS1.bRDO := (ResponseTelegram.BData[uiOffset] AND 2#00001000) > 0;
gUE410_BAS1.bFM := (ResponseTelegram.BData[uiOffset] AND 2#00000100) > 0;
gUE410_BAS1.bX12active := (ResponseTelegram.BData[uiOffset] AND 2#00000010) > 0;
gUE410_BAS1.bX34active := (ResponseTelegram.BData[uiOffset] AND 2#00000001) > 0;
gusUE410_BPF := BYTE_TO_USINT (ResponseTelegram.BData[uiOffset + 1]);
guiUE410_CRC := SHL (BYTE_TO_UINT (ResponseTelegram.BData[uiOffset + 3]), 8) +
BYTE_TO_UINT (ResponseTelegram.BData[uiOffset + 2]);
IF guiUE410_CRC <> uiCRC THEN
UE41Alarms.Alarm[3] := 1;
END_IF
uiOffset := uiOffset + N_TO_HUINT (WORD_TO_UINT (ResponseTelegram.wRequestDS3));
END_IF
ELSE
UE41Alarms.Alarm[2] := 1;
END_IF
ELSE
UE41Alarms.Alarm[1] := 1;
END_IF
END_IF
//Send Data on Client Connections
IF EDGEPOS (bSend) THEN
uiSequence := uiSequence + 1;
RequestTelegram.uiSequence := H_TO_NUINT (uiSequence);
END_IF
IF (enState = enSTEP_CONNECTED) THEN
FUB_TcpSend.enable := bSend;
FUB_TcpSend.pData := ADR (RequestTelegram);
FUB_TcpSend.datalen := 16;
FUB_TcpSend.ident := udClientID;
FUB_TcpSend.flags := 0;
FUB_TcpSend ();
IF FUB_TcpSend.status = 0 THEN
bSend := FALSE;
END_IF
END_IF
//Alarms
//0 Connection Closed
IF (enState = enSTEP_CLOSED) THEN
UE41Alarms.Alarm[0] := 1;
ELSIF (enState = enSTEP_CONNECTED) THEN
UE41Alarms.Alarm[0] := 0;
END_IF
//1 Invalid Sequence
//2 Bad Answer
//3 Illegal CRC
//4 E-Stop Channel 1
UE41Alarms.Alarm[4] := NOT gUE410_ST2_8DI_MED.bI1;
//5 E-Stop Channel 2
UE41Alarms.Alarm[5] := NOT gUE410_ST2_8DI_MED.bI2;
//6 Doors Channel 1
UE41Alarms.Alarm[6] := NOT gUE410_ST2_8DI_MED.bI3;
//7 Doors Channel 2
UE41Alarms.Alarm[7] := NOT gUE410_ST2_8DI_MED.bI4;
//8 Light Curtain 1 Channel 1
UE41Alarms.Alarm[8] := NOT gUE410_MU_MED.bI1;
//9 Light Curtain 1 Channel 2
UE41Alarms.Alarm[9] := NOT gUE410_MU_MED.bI2;
//10 Light Curtain 1 Channel 1
UE41Alarms.Alarm[10] := NOT gUE410_MU_MED.bI3;
//11 Light Curtain 1 Channel 2
UE41Alarms.Alarm[11] := NOT gUE410_MU_MED.bI4;
//12 Output A Channel 1
UE41Alarms.Alarm[12] := NOT gUE410_MU_MQD.bX1;
//13 Output A Channel 2
UE41Alarms.Alarm[13] := NOT gUE410_MU_MQD.bX2;
//14 Output A Start Request
UE41Alarms.Alarm[14] := gUE410_MU_MQD.bStRqA;
//15 Output B Channel 1
UE41Alarms.Alarm[15] := NOT gUE410_MU_MQD.bX3;
//16 Output B Channel 2
UE41Alarms.Alarm[16] := NOT gUE410_MU_MQD.bX4;
//17 Output B Start Request
UE41Alarms.Alarm[17] := gUE410_MU_MQD.bStRqB;
END_PROGRAM
PROGRAM _EXIT
FUB_TcpClose.enable := TRUE;
FUB_TcpClose.ident := udClosePortID;
FUB_TcpClose.how := (tcpSHUT_RD OR tcpSHUT_WR);
WHILE TRUE DO
FUB_TcpClose ();
IF (FUB_TcpClose.status <> ERR_FUB_BUSY) THEN
EXIT;
END_IF
END_WHILE
END_PROGRAM

View File

@@ -0,0 +1,15 @@
PROGRAM _INIT
strcpy (ADR (strServerIP), ADR ('192.168.11.74'));
FUB_TcpOpen.pIfAddr := ADR (gstrIPAddress);
FUB_TcpOpen.port := 0;
FUB_TcpOpen.options := tcpOPT_REUSEADDR;
FUB_TcpClient.portserv := 9100;
FUB_TcpClient.pServer := ADR (strServerIP);
enState := enSTEP_INIT;
bAllowData := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,91 @@
TYPE
typUE410_MU_MED : STRUCT (*Module 410_MU InputData*)
bS3 : BOOL;
bS2 : BOOL;
bS1 : BOOL;
bEN : BOOL;
bI4 : BOOL;
bI3 : BOOL;
bI2 : BOOL;
bI1 : BOOL;
END_STRUCT;
typUE410_MU_MQD : STRUCT (*Module 410_MU OutputData*)
bBYP : BOOL; (*Bypass Active*)
bMUT : BOOL; (*Muting Active*)
bStRqB : BOOL; (*Start Request B*)
bStRqA : BOOL; (*Start Request A*)
bX4 : BOOL; (*Bit 3*)
bX3 : BOOL; (*Bit 2*)
bX2 : BOOL; (*Bit 1*)
bX1 : BOOL; (*Bit 0*)
END_STRUCT;
typUE410_8DI_MED : STRUCT (*Module 410_8DI InputData*)
bI8 : BOOL;
bI7 : BOOL;
bI6 : BOOL;
bI5 : BOOL;
bI4 : BOOL;
bI3 : BOOL;
bI2 : BOOL;
bI1 : BOOL;
END_STRUCT;
typUE410_8DI_MQD : STRUCT (*Module 410_MU OutputData*)
bQB : BOOL; (*Module Logical Output Channel B*)
bQA : BOOL; (*Module Logical Output Channel A*)
END_STRUCT;
typUE410_BAS1 : STRUCT (*Errorsum of all Modules*)
bIF : BOOL; (*Internal Error*)
bQS : BOOL; (*Cross-Circuit Error*)
bAF : BOOL; (*Runtime Error*)
bZF : BOOL; (*Time Error*)
bRDO : BOOL; (*Contacts of Feedback Loop Open*)
bFM : BOOL; (*Programm Selector modified during Operation*)
bX12active : BOOL; (*Output X1/2 is active*)
bX34active : BOOL; (*Output X3/4 is active*)
END_STRUCT;
typUE410_STATUS : STRUCT (*Configuration of an Module*)
MED : USINT; (*Module Input Data*)
MQD : USINT; (*Module State / Output Data*)
MKD1 : USINT; (*Module Config Data (Switches)*)
MKD2 : USINT; (*Module Config Data (Bridges)*)
MFD : USINT; (*Module Error Data*)
MFCLASS1 : USINT; (*Error Class Channel 1*)
MFCODE1 : USINT; (*Error Code Channel 1*)
MFCLASS2 : USINT; (*Error Class Channel 2*)
MFCODE2 : USINT; (*Error Code Channel 2*)
RSP_ID : typenUE410_REQ_ID; (*Response ID*)
END_STRUCT;
typenUE410_REQ_ID :
( (*Control Byte Request Data*)
enUE410_REQ_NONE := 0,
enUE410_REQ_STATUS_MODULE1 := 1, (*Status Data Module x*)
enUE410_REQ_STATUS_MODULE2 := 2, (*Status Data Module x*)
enUE410_REQ_STATUS_MODULE3 := 3, (*Status Data Module x*)
enUE410_REQ_CONFIG_MODULE1 := 21, (*Configuration Data Module x*)
enUE410_REQ_CONFIG_MODULE2 := 22, (*Configuration Data Module x*)
enUE410_REQ_CONFIG_MODULE3 := 23, (*Configuration Data Module x*)
enUE410_REQ_DIAG_INTERN := 255 (*Configuration Data Module x*)
);
typUE410_REQUEST : STRUCT
wCommand : WORD := 16#F100; (*Request Data*)
wRequestDS1 : WORD := 16#0100;
wRequestDS2 : WORD := 16#0100;
wRequestDS3 : WORD := 0;
wRequestDS4 : WORD := 0;
wRequestDS5 : WORD := 0;
wRequestDS6 : WORD := 0;
uiSequence : UINT := 0;
END_STRUCT;
typUE410_RESPONSE : STRUCT
wCommand : WORD := 0;
wRequestDS1 : WORD := 0;
wRequestDS2 : WORD := 0;
wRequestDS3 : WORD := 0;
wRequestDS4 : WORD := 0;
wRequestDS5 : WORD := 0;
wRequestDS6 : WORD := 0;
uiSequence : UINT := 0;
BData : ARRAY[0..120]OF BYTE := [121(0)];
END_STRUCT;
END_TYPE

View File

View File

@@ -0,0 +1,37 @@
(*Inputs / Outputs*)
(*================================================================================================================*)
(*CPU*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
udSerialNr : UDINT; (*Seriennummer*)
guiTemperatureCPU : UINT; (*CPU Temperatur*)
guiTemperatureENV : UINT; (*Umgebungstemperatur*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST1 - 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*)
gbInAirOK : BOOL; (*Druckw<6B>chter Luft OK*)
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=3.0.0.0?>
<Library Version="2.34.1" xmlns="http://br-automation.co.at/AS/Library" Description="PLCopen Motion Control function blocks">
<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.34.1" ToVersion="2.34.1" />
</Dependencies>
</Library>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,190 @@
VAR CONSTANT
mc5TH_ORDER_POLYNOMIAL : UINT := 4; (*motion rule*)
mcABOVE_WINDOW : USINT := 40; (*trigger event mode*)
mcABSOLUTE : USINT := 0; (*start mode*)
mcABSOLUTE_NO_RESET : USINT := 2; (*definition for the shift input of MC_BR_Offset and MC_BR_Phasing*)
mcACKNOWLEDGE_ALL : UINT := 2; (*acknowledge all error records immediately*)
mcACT_CFG : UINT := 1;
mcADD_DATE_TIME : UINT := 1; (*additional data object type*)
mcALL_AXES : UDINT := 16#FFFFFFFF;
mcALL_EVENTS : USINT := 255; (*event index*)
mcALL_PARAMS : USINT := 0; (*parameter index*)
mcALL_STATES : USINT := 255; (*state index*)
mcAUTOMAT_POS : USINT := 100; (*additional movement direction*)
mcAVERAGE : UINT := 2;
mcAVERAGE_WEIGHTED : UINT := 4;
mcAXIS_ERROR : USINT := 0;
mcAXIS_WARNING : USINT := 1;
mcBASIS_PARAMETERS : REAL := 2.0; (*Option for DefaultMoveParameter*)
mcBELOW_WINDOW : USINT := 50; (*trigger event mode*)
mcBESTFIT_5TH_ORDER : UINT := 1024; (*interpolation rule*)
mcBESTFIT_6TH_ORDER : UINT := 1280; (*interpolation rule*)
mcBLANK : UINT := 0;
mcBRAKE_CONTROL_INIT : USINT := 8; (*brake command*)
mcBRAKE_TEST_INIT : USINT := 2; (*brake command*)
mcBRAKE_TEST_START : USINT := 4; (*brake command*)
mcCALCULATION : UINT := 11; (*setup mode*)
mcCATCH_UP : USINT := 4; (*synchronization mode*)
mcCHECK : UINT := 1; (*mode for automat compensation check*)
mcCHECK_HOMING_OFF : USINT := 1; (*disable homing check*)
mcCLOSE : USINT := 0;
mcCONTINUE_CONTROLLER_OFF : UINT := 128; (* continue if controller is off *)
mcCUBIC_SPLINE : UINT := 256; (*interpolation rule*)
mcCURRENT_DIR : USINT := 2; (*movement direction*)
mcCYCLIC : UINT := 2; (*event move mode*)
mcCYCLIC_ALL_EVENTS : UINT := 3; (*event move mode*)
mcDATOBJ : UINT := 0; (*data object type*)
mcDIRECT : USINT := 7; (*start mode*)
mcDISTANCE_BASED : UINT := 0; (*basis for cam movement (e.g. for MC_BR_CamTransition)*)
mcDITHER : USINT := 32; (*setup mode*)
mcEDGE_SENSITIVE : USINT := 4; (*additional mode for trigger event*)
mcENCODER : USINT := 0; (*setup mode*)
mcEQUAL : UINT := 2;
mcEVERY_RECORD : UINT := 1; (*mode for MC_BR_CyclicRead*)
mcEXCEED_PERIOD : USINT := 8; (*movement direction*)
mcFB_ERROR : USINT := 2;
mcFB_INPUTS : REAL := 255.0; (*option for DefaultMoveParameters*)
mcFF : USINT := 32; (*setup, torque mode*)
mcFF_NEG_MOVE : UINT := 34; (*setup mode*)
mcFF_POS_MOVE : UINT := 33; (*setup mode*)
mcFILE : UINT := 1; (*data object type*)
mcFILE_BIN : UINT := 0; (*binary format*)
mcFILE_CSV : UINT := 1; (*CSV format*)
mcFILE_TXT : UINT := 2; (*text format*)
mcFIRST_TRIGGER : UINT := 2;
mcFLUX : USINT := 1; (*setup mode*)
mcGE : UINT := 6;
mcGET_BRAKE_STATUS : USINT := 16; (*brake command*)
mcGREATER : UINT := 4;
mcHARMONIC_COMBINATION : UINT := 8; (*motion rule*)
mcHOLDOFF_DISTANCE : UINT := 16384;
mcHOME_ABS_SWITCH : USINT := 2; (*homing mode*)
mcHOME_ABSOLUTE : USINT := 4; (*homing mode*)
mcHOME_ABSOLUTE_CORR : USINT := 6; (*homing mode*)
mcHOME_AXIS_REF : USINT := 12; (*homing mode *)
mcHOME_DCM : USINT := 9; (*homing mode*)
mcHOME_DCM_CORR : USINT := 10; (*homing mode*)
mcHOME_DEFAULT : USINT := 0; (*homing mode*)
mcHOME_DIRECT : USINT := 1; (*homing mode*)
mcHOME_LIMIT_SWITCH : USINT := 3; (*homing mode*)
mcHOME_REF_PULSE : USINT := 5; (*homing mode*)
mcHOME_RESTORE_POS : USINT := 11; (*homing mode*)
mcHOME_SET_PHASE : USINT := 7; (*homing mode*)
mcHOME_SWITCH_GATE : USINT := 8; (*homing mode*)
mcHORIZONTAL : USINT := 0; (*setup option for controller setup*)
mcIDENTIFICATION : UINT := 10; (*setup mode *)
mcIMMEDIATE : UINT := 0; (*mode for MC_BR_RegMarkCalc001, StartMode for MC_BR_CrossCutterControl, *)
mcIN_WINDOW : USINT := 20; (*trigger event mode*)
mcINCLINED_SINE_CURVE : UINT := 5; (*motion rule*)
mcINTERVAL_EVENT : UINT := 16;
mcIPL_OFF : USINT := 0; (*interpolation mode*)
mcIPL_LINEAR : USINT := 1; (*interpolation mode*)
mcIPL_QUADRATIC : USINT := 2; (*interpolation mode*)
mcIPL_QUADRATIC_NO_OVERSHOOT : USINT := 4; (*interpolation mode*)
mcISQ_F1_NOTCH : UINT := 128; (*setup mode*)
mcISQ_F2_NOTCH : UINT := 256; (*setup mode*)
mcISQ_F3_NOTCH : UINT := 512; (*setup mode*)
mcISQ_RIPPLE : UINT := 20; (*setup mode*)
mcLAST_POINT : UINT := 0; (*motion rule*)
mcLEAD_IN : UINT := 2;
mcLEAD_OUT : UINT := 4;
mcLENGTH_ONLY : UINT := 32;
mcLIMIT : USINT := 40; (*torque mode*)
mcLIMIT_PARAMETERS : REAL := 1.0; (*option for DefaultMoveParameters*)
mcLINEAR_CAM : USINT := 253; (*predefined 1:1 cam profile for MC_BR_CamDwell*)
mcLINEAR_CAM_NON_PERIODIC : USINT := 254; (*for predifined 1:1 cam profile*)
mcLINEAR_CAM_PERIODIC : USINT := 255; (*for predefined 1:1 cam profile*)
mcLOAD : UINT := 276; (*trace command*)
mcMANUAL_SEARCH : UINT := 64;
mcMASTER_DISTANCE_BASED : UINT := 3; (*basis for movement profile (e.g. for MC_BR_Offset or MC_BR_Phasing)*)
mcMASTER_POSITION : UINT := 256; (*additional basis for movement profile (e.g. for MC_BR_Offset), StartMode for MC_BR_CrossCutterControl*)
mcMASTER_POSITION_BASED : UINT := 2; (*basis for movement profile (e.g. for MC_BR_Offset or MC_BR_Phasing)*)
mcMAX_IV_TIME : USINT := 8; (*additional mode for power evaluation*)
mcMAX_SLAVE_COMP_DISTANCE_NEG : UINT := 4; (*mode for automat compensation check*)
mcMAX_SLAVE_COMP_DISTANCE_POS : UINT := 3; (*mode for automat compensation check*)
mcMIDDLE : USINT := 5;
mcMIN_MASTER_COMP_DISTANCE : UINT := 2; (*mode for automat compensation check*)
mcMODIFIED_ACCEL_TRAPEZOID : UINT := 6; (*motion rule*)
mcMODIFIED_SINE_CURVE : UINT := 7; (*motion rule*)
mcMOTOR : UINT := 258; (*switch on simulation mode*)
mcMULTI_AXIS_TRACE : UDINT := 0; (*parameter trace type*)
mcN_EDGE : USINT := 1;
mcNEGATIVE_DIR : USINT := 1; (*movement direction*)
mcNET_TRACE_GLOBAL : UDINT := 0; (*network trace type*)
mcNO_EVENTS : USINT := 253; (*event index*)
mcNO_PARAMS : USINT := 253; (*parameter index*)
mcNO_POSITION : USINT := 0;
mcNO_TEXT : UINT := 0; (*no error text determination active*)
mcNON_PERIODIC : BOOL := FALSE; (*cam profile mode*)
mcNOT_AXIS_RELATED : UDINT := 16#FFFFFFFF;
mcNULL : UINT := 1;
mcOFF : BOOL := FALSE;
mcON : BOOL := TRUE;
mcONCE : UINT := 1;
mcONE_RECORD : UINT := 0; (*mode for MC_BR_CyclicRead*)
mcONLY_EVENTS : USINT := 254; (*event index*)
mcONLY_PSM : USINT := 1; (*power evaluation mode*)
mcOPEN : USINT := 1;
mcOPTIMIZED_ACCELERATION : UINT := 768; (*interpolation rule*)
mcOPTIMIZED_VELOCITY : UINT := 512; (*interpolation rule*)
mcOUT_WINDOW : USINT := 30; (*trigger event mode*)
mcP_EDGE : USINT := 0;
mcPERIODIC : BOOL := TRUE; (*cam profile mode*)
mcPOSITION : USINT := 1; (*setup mode*)
mcPOSITIVE_DIR : USINT := 0; (*movement direction*)
mcQUADRATIC_PARABOLA : UINT := 2; (*motion rule*)
mcQUEUED : UINT := 1;
mcRELATIVE : USINT := 1; (*start mode*)
mcRESET : UINT := 320; (*trace command*)
mcREVERSE : UINT := 8;
mcSATURATION : USINT := 30; (*setup mode*)
mcSAVE : UINT := 341; (*trace command*)
mcSE : UINT := 3;
mcSET_OFFSET : USINT := 34; (*setup mode*)
mcSHIFT_FROM_EXPECTED : UINT := 50; (*input for MC_BR_TouchProbe*)
mcSHIFT_FROM_RESULT : UINT := 49; (*input for MC_BR_TouchProbe*)
mcSHORTEST_WAY : USINT := 3; (*synchronization mode, movement direction*)
mcSIMPLE_SINE_CURVE : UINT := 3; (*motion rule*)
mcSIMULATION_OFF : UINT := 259; (*switch off simulation mode*)
mcSLAVE_POSITION : UINT := 0; (*additional basis for movement profile (e.g. for MC_BR_Offset)*)
mcSLOW_DOWN : USINT := 5; (*synchronization mode*)
mcSMALLER : UINT := 1;
mcSPEED : USINT := 2; (*setup mode*)
mcSTART : UINT := 260;
mcSTART_ONLY : USINT := 3; (*power evaluation mode*)
mcSTEPPER : USINT := 31; (*setup mode*)
mcSTOP : UINT := 261;
mcSTRAIGHT_LINE : UINT := 1; (*motion rule*)
mcSW_END_ACTIVE : REAL := 0.0; (*SW end monitoring mode*)
mcSW_END_IGNORE : REAL := 1.0; (*SW end monitoring mode*)
mcSW_END_SPF : REAL := 2.0; (*SW end monitoring mode*)
mcSWITCH_OFF : UINT := 259; (*trace command*)
mcSWITCH_ON : UINT := 258; (*trace command*)
mcT_FILTER : UINT := 64; (*setup mode*)
mcTEST : UINT := 31; (*setup mode*)
mcTEXT : UINT := 1; (*error text determination active*)
mcTIME_BASED : UINT := 1; (*basis for movement profile (e.g. for MC_BR_Offset or MC_BR_Phasing)*)
mcTIME_LIMIT : USINT := 8; (*enable time dependent switch off of function*)
mcTRACE_DELAY : USINT := 6; (*trace status*)
mcTRACE_FINISHED : USINT := 1; (*trace status*)
mcTRACE_REST : USINT := 5; (*trace status*)
mcTRACE_RING : USINT := 4; (*trace status*)
mcTRACE_STARTED : USINT := 20; (*trace status*)
mcTRACE_TIME : USINT := 2; (*trace status*)
mcTRACE_TRIGGER : USINT := 3; (*trace status*)
mcTRANSITION_OFF : UINT := 0;
mcTRANSITION_ON : UINT := 1;
mcUNEQUAL : UINT := 5;
mcUPDATE_PERIOD : UINT := 16#8000; (*input for MC_BR_TouchProbe*)
mcUSE_FILTER_PAR : UINT := 4; (*setup mode *)
mcUSE_FIRST_TRIGGER_POS : UINT := 64; (*additional input for MC_BR_TouchProbe*)
mcV_LIMIT_CALC : USINT := 4; (*recalculate speed limit depending on user setting*)
mcV_LIMIT_OFF : USINT := 2; (*disable speed limit*)
mcVELOCITY_CONTROL : UINT := 4; (*basis for movement profile (e.g. for MC_BR_Offset or MC_BR_Phasing)*)
mcVERTICAL : USINT := 1; (*setup option for controller setup*)
mcWITH_PARAM : USINT := 2; (*power evaluation mode*)
mcRESTART : UINT := 273; (*StartMode for MC_BR_CrossCutterControl*)
mcWITHIN_PERIOD : USINT := 6; (*synchronization mode*)
mcWITHOUT_PERIOD : UINT := 4; (*input for MC_BR_TouchProbe*)
mcWRAP : UINT := 2;
END_VAR

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