Some refactoring after static code analysis
This commit is contained in:
24
Infineon.sln
24
Infineon.sln
@@ -25,8 +25,8 @@ Global
|
|||||||
Release|TwinCAT RT (x86) = Release|TwinCAT RT (x86)
|
Release|TwinCAT RT (x86) = Release|TwinCAT RT (x86)
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT HMI.ActiveCfg = Debug|TwinCAT OS (x64)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT HMI.ActiveCfg = Debug|TwinCAT RT (x64)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT HMI.Build.0 = Debug|TwinCAT OS (x64)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT HMI.Build.0 = Debug|TwinCAT RT (x64)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT OS (ARMV7-A).ActiveCfg = Debug|TwinCAT OS (ARMV7-A)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT OS (ARMV7-A).ActiveCfg = Debug|TwinCAT OS (ARMV7-A)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT OS (ARMV7-A).Build.0 = Debug|TwinCAT OS (ARMV7-A)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT OS (ARMV7-A).Build.0 = Debug|TwinCAT OS (ARMV7-A)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT OS (ARMV7-M).ActiveCfg = Debug|TwinCAT OS (ARMV7-M)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT OS (ARMV7-M).ActiveCfg = Debug|TwinCAT OS (ARMV7-M)
|
||||||
@@ -41,8 +41,8 @@ Global
|
|||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT HMI.ActiveCfg = Release|TwinCAT OS (x64)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT HMI.ActiveCfg = Release|TwinCAT RT (x64)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT HMI.Build.0 = Release|TwinCAT OS (x64)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT HMI.Build.0 = Release|TwinCAT RT (x64)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT OS (ARMV7-A).ActiveCfg = Release|TwinCAT OS (ARMV7-A)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT OS (ARMV7-A).ActiveCfg = Release|TwinCAT OS (ARMV7-A)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT OS (ARMV7-A).Build.0 = Release|TwinCAT OS (ARMV7-A)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT OS (ARMV7-A).Build.0 = Release|TwinCAT OS (ARMV7-A)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT OS (ARMV7-M).ActiveCfg = Release|TwinCAT OS (ARMV7-M)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT OS (ARMV7-M).ActiveCfg = Release|TwinCAT OS (ARMV7-M)
|
||||||
@@ -57,8 +57,8 @@ Global
|
|||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
||||||
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
{CB97A0B0-7E22-470D-8550-AA318EA46E50}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT HMI.ActiveCfg = Debug|TwinCAT OS (x64)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT HMI.ActiveCfg = Debug|TwinCAT RT (x64)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT HMI.Build.0 = Debug|TwinCAT OS (x64)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT HMI.Build.0 = Debug|TwinCAT RT (x64)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT OS (ARMV7-A).ActiveCfg = Debug|TwinCAT OS (ARMV7-A)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT OS (ARMV7-A).ActiveCfg = Debug|TwinCAT OS (ARMV7-A)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT OS (ARMV7-A).Build.0 = Debug|TwinCAT OS (ARMV7-A)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT OS (ARMV7-A).Build.0 = Debug|TwinCAT OS (ARMV7-A)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT OS (ARMV7-M).ActiveCfg = Debug|TwinCAT OS (ARMV7-M)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT OS (ARMV7-M).ActiveCfg = Debug|TwinCAT OS (ARMV7-M)
|
||||||
@@ -73,8 +73,8 @@ Global
|
|||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT HMI.ActiveCfg = Release|TwinCAT OS (x64)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT HMI.ActiveCfg = Release|TwinCAT RT (x64)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT HMI.Build.0 = Release|TwinCAT OS (x64)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT HMI.Build.0 = Release|TwinCAT RT (x64)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT OS (ARMV7-A).ActiveCfg = Release|TwinCAT OS (ARMV7-A)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT OS (ARMV7-A).ActiveCfg = Release|TwinCAT OS (ARMV7-A)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT OS (ARMV7-A).Build.0 = Release|TwinCAT OS (ARMV7-A)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT OS (ARMV7-A).Build.0 = Release|TwinCAT OS (ARMV7-A)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT OS (ARMV7-M).ActiveCfg = Release|TwinCAT OS (ARMV7-M)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT OS (ARMV7-M).ActiveCfg = Release|TwinCAT OS (ARMV7-M)
|
||||||
@@ -89,8 +89,8 @@ Global
|
|||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
||||||
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
{384A40E7-3107-4D80-8361-04B00829260A}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT HMI.ActiveCfg = Debug|TwinCAT OS (x64)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT HMI.ActiveCfg = Debug|TwinCAT RT (x64)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT HMI.Build.0 = Debug|TwinCAT OS (x64)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT HMI.Build.0 = Debug|TwinCAT RT (x64)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT OS (ARMV7-A).ActiveCfg = Debug|TwinCAT OS (ARMV7-A)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT OS (ARMV7-A).ActiveCfg = Debug|TwinCAT OS (ARMV7-A)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT OS (ARMV7-A).Build.0 = Debug|TwinCAT OS (ARMV7-A)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT OS (ARMV7-A).Build.0 = Debug|TwinCAT OS (ARMV7-A)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT OS (ARMV7-M).ActiveCfg = Debug|TwinCAT OS (ARMV7-M)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT OS (ARMV7-M).ActiveCfg = Debug|TwinCAT OS (ARMV7-M)
|
||||||
@@ -105,8 +105,8 @@ Global
|
|||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT HMI.ActiveCfg = Release|TwinCAT OS (x64)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT HMI.ActiveCfg = Release|TwinCAT RT (x64)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT HMI.Build.0 = Release|TwinCAT OS (x64)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT HMI.Build.0 = Release|TwinCAT RT (x64)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT OS (ARMV7-A).ActiveCfg = Release|TwinCAT OS (ARMV7-A)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT OS (ARMV7-A).ActiveCfg = Release|TwinCAT OS (ARMV7-A)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT OS (ARMV7-A).Build.0 = Release|TwinCAT OS (ARMV7-A)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT OS (ARMV7-A).Build.0 = Release|TwinCAT OS (ARMV7-A)
|
||||||
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT OS (ARMV7-M).ActiveCfg = Release|TwinCAT OS (ARMV7-M)
|
{16E7B360-DCD5-431E-9380-EF0E96A38071}.Release|TwinCAT OS (ARMV7-M).ActiveCfg = Release|TwinCAT OS (ARMV7-M)
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<TcSmProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.20">
|
<TcSmProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.20">
|
||||||
<Project ProjectGUID="{CB97A0B0-7E22-470D-8550-AA318EA46E50}" TargetNetId="5.127.104.206.1.1" Target64Bit="true" ShowHideConfigurations="#x6">
|
<Project ProjectGUID="{CB97A0B0-7E22-470D-8550-AA318EA46E50}" Target64Bit="true" ShowHideConfigurations="#x6">
|
||||||
<System>
|
<System>
|
||||||
<Settings MaxCpus="4" NonWinCpus="2">
|
<Settings MaxCpus="2"/>
|
||||||
<Cpu CpuId="2"/>
|
|
||||||
</Settings>
|
|
||||||
<Licenses>
|
<Licenses>
|
||||||
<Target>
|
<Target>
|
||||||
<ManualSelect>{2752D285-16AD-4E89-AE6C-80E72784D264}</ManualSelect>
|
<ManualSelect>{9FD32FC8-0CF9-4C5B-95FB-F35423496A77}</ManualSelect>
|
||||||
<LicenseDevice DongleHardwareId="2" DongleDevice="#x03020036" DongleLevel="60" DongleSystemId="{62CA069B-335C-D22F-33C1-C939EDC0FF9A}" DongleSerialNumber="000brrhk" DongleCacheLicense="true"/>
|
<LicenseDevice DongleHardwareId="2" DongleDevice="#x03020036" DongleLevel="40" DongleSerialNumber="000brrhk" DongleCacheLicense="true"/>
|
||||||
|
<LicenseDevice Disabled="true" DongleHardwareId="4" DongleDevice="#x71010002" DongleLevel="40" DongleSystemId="{5097FB65-8A2A-EFB0-8273-38CF2A98119D}" DongleSerialNumber="000btjb7" DongleCacheLicense="false"/>
|
||||||
</Target>
|
</Target>
|
||||||
</Licenses>
|
</Licenses>
|
||||||
<Tasks>
|
<Tasks>
|
||||||
@@ -42,12 +41,4 @@
|
|||||||
<Device File="Device 5 (EtherCAT).xti" Id="5"/>
|
<Device File="Device 5 (EtherCAT).xti" Id="5"/>
|
||||||
</Io>
|
</Io>
|
||||||
</Project>
|
</Project>
|
||||||
<Mappings>
|
|
||||||
<MappingInfo Identifier="{00000000-2001-0850-0020-500840000403}" Id="#x02030050"/>
|
|
||||||
<MappingInfo Identifier="{00000000-2001-0850-0020-500851000403}" Id="#x02030030"/>
|
|
||||||
<MappingInfo Identifier="{00000000-0010-0304-3000-040310000403}" Id="#x02030010"/>
|
|
||||||
<MappingInfo Identifier="{00000000-0020-0304-3000-040322000403}" Id="#x02030040"/>
|
|
||||||
<MappingInfo Identifier="{05000010-2001-0850-3000-040300205008}" Id="#x02030060" Watchdog="10000000040000000400000004000000"/>
|
|
||||||
<MappingInfo Identifier="{03040050-0050-0304-5000-040350000403}" Id="#x02030020" Watchdog="04000000040000000400000004000000"/>
|
|
||||||
</Mappings>
|
|
||||||
</TcSmProject>
|
</TcSmProject>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ VAR
|
|||||||
_fbHVTester : FB_HVTester;
|
_fbHVTester : FB_HVTester;
|
||||||
_fbEtcher1 : FB_Etcher;
|
_fbEtcher1 : FB_Etcher;
|
||||||
_fbEtcher2 : FB_Etcher;
|
_fbEtcher2 : FB_Etcher;
|
||||||
_fbTrayFeederInput : FB_TrayFeeder(sIPAddr := '192.168.1.10', udiPort := 5000);
|
_fbTrayFeederInput : FB_TrayFeeder(sIPAddr := '192.168.0.41', udiPort := 1337);
|
||||||
_fbHeatCoolPlates : FB_HeatCoolPlates;
|
_fbHeatCoolPlates : FB_HeatCoolPlates;
|
||||||
_fbAligner : FB_Aligner;
|
_fbAligner : FB_Aligner;
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ VAR
|
|||||||
_stRobotJobParams : ST_KukaRobot_JobParams;
|
_stRobotJobParams : ST_KukaRobot_JobParams;
|
||||||
_stUnitFeedbacks : ST_KukaRobot_UnitFeedbacks;
|
_stUnitFeedbacks : ST_KukaRobot_UnitFeedbacks;
|
||||||
|
|
||||||
_stCamResult AT %I* : ST_TrayFeederCamPosData;
|
stCamResult AT %I* : ST_TrayFeederCamPosData;
|
||||||
|
|
||||||
_rtStopRobotFromSafety : R_TRIG;
|
_rtStopRobotFromSafety : R_TRIG;
|
||||||
|
|
||||||
@@ -36,8 +36,8 @@ VAR
|
|||||||
_xStartCycle : BOOL;
|
_xStartCycle : BOOL;
|
||||||
|
|
||||||
_xStartTrigger : BOOL;
|
_xStartTrigger : BOOL;
|
||||||
_tofTriggerTime : TOF := (PT := T#1S);
|
_tofTriggerTime : TOF;
|
||||||
_xTriggerCamera AT %Q* : BOOL;
|
xTriggerCamera AT %Q* : BOOL;
|
||||||
|
|
||||||
_iState : INT;
|
_iState : INT;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -177,17 +177,22 @@ CASE _iState OF
|
|||||||
|
|
||||||
// Align blank
|
// Align blank
|
||||||
40:
|
40:
|
||||||
|
;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
// Nothing to do here
|
||||||
|
;
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
// =====
|
// =====
|
||||||
// DEBUG
|
// DEBUG
|
||||||
// =====
|
// =====
|
||||||
|
|
||||||
_tofTriggerTime(IN := _xStartTrigger);
|
_tofTriggerTime(IN := _xStartTrigger, PT := T#1S);
|
||||||
IF _xStartTrigger THEN
|
IF _xStartTrigger THEN
|
||||||
_xStartTrigger := FALSE;
|
_xStartTrigger := FALSE;
|
||||||
END_IF
|
END_IF
|
||||||
_xTriggerCamera := _tofTriggerTime.Q;
|
xTriggerCamera := _tofTriggerTime.Q;
|
||||||
|
|
||||||
// Reset alarm reset request
|
// Reset alarm reset request
|
||||||
GVL_SCADA.xErrAck := FALSE;
|
GVL_SCADA.xErrAck := FALSE;
|
||||||
@@ -383,6 +388,10 @@ CASE _iState OF
|
|||||||
ELSE
|
ELSE
|
||||||
_iState := 90;
|
_iState := 90;
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
// Nothing to do here
|
||||||
|
;
|
||||||
END_CASE]]></ST>
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
|
|||||||
@@ -8,34 +8,37 @@ VAR_INPUT
|
|||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
xStopRobot : BOOL := FALSE;
|
xStopRobot : BOOL := FALSE;
|
||||||
|
xEStopOk AT %I* : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_xRun AT %Q* : BOOL;
|
xComStartup AT %I* : BOOL;
|
||||||
_xEStopOk AT %I* : BOOL;
|
|
||||||
|
|
||||||
|
xRequestOpenDoor AT %I* : BOOL;
|
||||||
|
|
||||||
_xRequestOpenDoor AT %I* : BOOL;
|
xRun AT %Q* : BOOL;
|
||||||
_rtrigDoorUnlock : R_TRIG;
|
xErrorAck AT %Q* : BOOL;
|
||||||
|
xLockDoor AT %Q* : BOOL := TRUE;
|
||||||
|
|
||||||
_xLockDoor AT %Q* : BOOL := TRUE;
|
_rtDoorUnlock : R_TRIG;
|
||||||
|
_tofErrorAck : TOF;
|
||||||
|
|
||||||
_xComStartup AT %I* : BOOL;
|
_xStopRobot : BOOL;
|
||||||
|
|
||||||
_xErrorAck AT %Q* : BOOL;
|
|
||||||
_tofErrorAck : TOF := (PT := T#500MS);
|
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_xRun := NOT _xComStartup;
|
<ST><![CDATA[xRun := NOT xComStartup;
|
||||||
|
|
||||||
_rtrigDoorUnlock(CLK := _xRequestOpenDoor AND xRobotStopped);
|
_rtDoorUnlock(CLK := xRequestOpenDoor AND xRobotStopped);
|
||||||
IF _rtrigDoorUnlock.Q THEN
|
IF _rtDoorUnlock.Q THEN
|
||||||
xStopRobot := (NOT xStopRobot);
|
_xStopRobot := (NOT _xStopRobot);
|
||||||
_xLockDoor := (NOT _xLockDoor);
|
xLockDoor := (NOT xLockDoor);
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Reset safety group errors
|
// Reset safety group errors
|
||||||
_tofErrorAck(IN:= xConfirmAlarms, PT:= T#500MS, Q=> _xErrorAck, ET=> );]]></ST>
|
_tofErrorAck(IN:= xConfirmAlarms, PT:= T#500MS, Q=> xErrorAck, ET=> );
|
||||||
|
|
||||||
|
// Copy internal signals to outputs
|
||||||
|
xStopRobot := _xStopRobot;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</POU>
|
</POU>
|
||||||
</TcPlcObject>
|
</TcPlcObject>
|
||||||
@@ -4,8 +4,8 @@
|
|||||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
TYPE ST_PosData :
|
TYPE ST_PosData :
|
||||||
STRUCT
|
STRUCT
|
||||||
wPosX : INT;
|
iPosX : INT;
|
||||||
wPosY : INT;
|
iPosY : INT;
|
||||||
END_STRUCT
|
END_STRUCT
|
||||||
END_TYPE
|
END_TYPE
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Aligner EXTENDS FB_PackMLGeneric
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_Aligner EXTENDS FB_PackMLGeneric
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
xEnableVacuum : BOOL;
|
xEnableVacuum : BOOL;
|
||||||
xAlign : BOOL;
|
xExecute : BOOL;
|
||||||
|
|
||||||
xConfirmAlarms : BOOL;
|
xConfirmAlarms : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -12,18 +12,21 @@ VAR_OUTPUT
|
|||||||
xVacuumEnabled : BOOL;
|
xVacuumEnabled : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
|
xActivateVacuum AT %Q* : BOOL := FALSE;
|
||||||
|
xDeactivateVacuum AT %Q* : BOOL := TRUE;
|
||||||
|
xVacuumOk AT %I* : BOOL;
|
||||||
|
|
||||||
|
diXOffset AT %I* : DINT;
|
||||||
|
diYOffset AT %I* : DINT;
|
||||||
|
|
||||||
_fbXAxis : FB_AxisPTP;
|
_fbXAxis : FB_AxisPTP;
|
||||||
_fbYAxis : FB_AxisPTP;
|
_fbYAxis : FB_AxisPTP;
|
||||||
|
|
||||||
_xEnableVacuum AT %Q* : BOOL := FALSE;
|
|
||||||
_xDisableVacuum AT %Q* : BOOL := TRUE;
|
|
||||||
_xVacuumOk AT %I* : BOOL;
|
|
||||||
|
|
||||||
_udiXOffset AT %I* : DINT;
|
|
||||||
_udiYOffset AT %I* : DINT;
|
|
||||||
|
|
||||||
_rXPosToGo : REAL;
|
_rXPosToGo : REAL;
|
||||||
_rYPosToGo : REAL;
|
_rYPosToGo : REAL;
|
||||||
|
|
||||||
|
_rtExecute : R_TRIG;
|
||||||
|
_xStartAlign : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
@@ -51,12 +54,13 @@ _fbYAxis(
|
|||||||
lrJerk:= 0,
|
lrJerk:= 0,
|
||||||
xConfirmAlarms:= xConfirmAlarms);
|
xConfirmAlarms:= xConfirmAlarms);
|
||||||
|
|
||||||
// Drei mal ausführen damit die Position genau ist
|
_rtExecute(CLK:= xExecute, Q=> _xStartAlign);
|
||||||
IF xAlign THEN
|
|
||||||
xAlign := FALSE;
|
|
||||||
|
|
||||||
_rXPosToGo := DINT_TO_REAL(_udiXOffset) * -0.001;
|
// Drei mal ausführen damit die Position genau ist
|
||||||
_rYPosToGo := ((DINT_TO_REAL(_udiYOffset) * 0.001) - 37.5) * -1;
|
IF _xStartAlign THEN
|
||||||
|
|
||||||
|
_rXPosToGo := DINT_TO_REAL(diXOffset) * -0.001;
|
||||||
|
_rYPosToGo := ((DINT_TO_REAL(diYOffset) * 0.001) - 37.5) * -1;
|
||||||
|
|
||||||
IF (ABS(_rXPosToGo) < 10.0) AND (ABS(_rYPosToGo) < 10.0) AND (NOT _fbXAxis.xError) AND (NOT _fbYAxis.xError) THEN
|
IF (ABS(_rXPosToGo) < 10.0) AND (ABS(_rYPosToGo) < 10.0) AND (NOT _fbXAxis.xError) AND (NOT _fbYAxis.xError) THEN
|
||||||
_fbXAxis.M_MoveRel(lrRelDist := _rXPosToGo);
|
_fbXAxis.M_MoveRel(lrRelDist := _rXPosToGo);
|
||||||
@@ -65,9 +69,9 @@ IF xAlign THEN
|
|||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Handle enable disable vacuum command
|
// Handle enable disable vacuum command
|
||||||
_xEnableVacuum := xEnableVacuum;
|
xActivateVacuum := xEnableVacuum;
|
||||||
_xDisableVacuum := (NOT xEnableVacuum);
|
xDeactivateVacuum := (NOT xEnableVacuum);
|
||||||
xVacuumEnabled := _xVacuumOk;]]></ST>
|
xVacuumEnabled := xVacuumOk;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</POU>
|
</POU>
|
||||||
</TcPlcObject>
|
</TcPlcObject>
|
||||||
@@ -64,16 +64,16 @@ VAR
|
|||||||
// Sensors
|
// Sensors
|
||||||
// =======
|
// =======
|
||||||
|
|
||||||
_xVacuumOk AT %I* : BOOL;
|
xVacuumOk AT %I* : BOOL;
|
||||||
|
|
||||||
// Spinner vibration sensor
|
// Spinner vibration sensor
|
||||||
_xVibrationSensor AT %I* : BOOL;
|
xVibrationSensor AT %I* : BOOL;
|
||||||
|
|
||||||
// =========
|
// =========
|
||||||
// Actuators
|
// Actuators
|
||||||
// =========
|
// =========
|
||||||
|
|
||||||
_xDisableVacuum AT %Q* : BOOL;
|
xDisableVacuum AT %Q* : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
@@ -128,7 +128,7 @@ _fbEjectBack(
|
|||||||
xConfirmAlarms:= xConfirmAlarms,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
stHMIInterface:= stHMIInterface.stEjectBackHMIInterface);
|
stHMIInterface:= stHMIInterface.stEjectBackHMIInterface);
|
||||||
|
|
||||||
_xDisableVacuum := (NOT xEnableVacuum);
|
xDisableVacuum := (NOT xEnableVacuum);
|
||||||
|
|
||||||
// Call base sm
|
// Call base sm
|
||||||
SUPER^();
|
SUPER^();
|
||||||
@@ -136,7 +136,7 @@ SUPER^();
|
|||||||
// Copy internal signals to output
|
// Copy internal signals to output
|
||||||
xDoorOpen := _fbValveDoor.IsOpen;
|
xDoorOpen := _fbValveDoor.IsOpen;
|
||||||
xChuckClampOpen := _fbUnlockLeft.IsOpen AND _fbUnlockRight.IsOpen;
|
xChuckClampOpen := _fbUnlockLeft.IsOpen AND _fbUnlockRight.IsOpen;
|
||||||
xVacuumEnabled := _xVacuumOk;]]></ST>
|
xVacuumEnabled := xVacuumOk;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
<Method Name="FB_Init" Id="{afcda70c-3e52-4a32-9ca9-670a6b854f24}">
|
<Method Name="FB_Init" Id="{afcda70c-3e52-4a32-9ca9-670a6b854f24}">
|
||||||
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
||||||
|
|||||||
@@ -8,33 +8,33 @@ END_VAR
|
|||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_xOpenDoor1 AT %Q* : BOOL;
|
xOpenDoor1 AT %Q* : BOOL;
|
||||||
_xOpenDoor2 AT %Q* : BOOL;
|
xOpenDoor2 AT %Q* : BOOL;
|
||||||
|
|
||||||
_xCloseDoor1 AT %Q* : BOOL;
|
xCloseDoor1 AT %Q* : BOOL;
|
||||||
_xCloseDoor2 AT %Q* : BOOL;
|
xCloseDoor2 AT %Q* : BOOL;
|
||||||
|
|
||||||
// Chamber is the big cylinder not the door
|
// Chamber is the big cylinder not the door
|
||||||
_xOpenChamber1 AT %Q* : BOOL;
|
xOpenChamber1 AT %Q* : BOOL;
|
||||||
_xOpenChamber2 AT %Q* : BOOL;
|
xOpenChamber2 AT %Q* : BOOL;
|
||||||
|
|
||||||
_xCloseChamber1 AT %Q* : BOOL;
|
xCloseChamber1 AT %Q* : BOOL;
|
||||||
_xCloseChamber2 AT %Q* : BOOL;
|
xCloseChamber2 AT %Q* : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF xOpenChambers THEN
|
<ST><![CDATA[IF xOpenChambers THEN
|
||||||
_xOpenDoor1 := TRUE;
|
xOpenDoor1 := TRUE;
|
||||||
_xOpenDoor2 := TRUE;
|
xOpenDoor2 := TRUE;
|
||||||
|
|
||||||
_xCloseDoor1 := FALSE;
|
xCloseDoor1 := FALSE;
|
||||||
_xCloseDoor2 := FALSE;
|
xCloseDoor2 := FALSE;
|
||||||
ELSE
|
ELSE
|
||||||
_xOpenDoor1 := FALSE;
|
xOpenDoor1 := FALSE;
|
||||||
_xOpenDoor2 := FALSE;
|
xOpenDoor2 := FALSE;
|
||||||
|
|
||||||
_xCloseDoor1 := TRUE;
|
xCloseDoor1 := TRUE;
|
||||||
_xCloseDoor2 := TRUE;
|
xCloseDoor2 := TRUE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Call base sm
|
// Call base sm
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ VAR_IN_OUT
|
|||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
// Card inputs
|
// Card inputs
|
||||||
_stStatus AT %I* : ST_SerialStatus;
|
stStatus AT %I* : ST_SerialStatus;
|
||||||
_byDataIn AT %I* : ARRAY[0..21] OF BYTE;
|
//abyDataIn AT %I* : ARRAY[0..21] OF BYTE;
|
||||||
|
|
||||||
// Card outputs
|
// Card outputs
|
||||||
_stCtrl AT %Q* : ST_SerialCrl;
|
stCtrl AT %Q* : ST_SerialCrl;
|
||||||
_byDataOut AT %Q* : ARRAY[0..21] OF BYTE;
|
abyDataOut AT %Q* : ARRAY[0..21] OF BYTE;
|
||||||
|
|
||||||
// Internal temp setpoint
|
// Internal temp setpoint
|
||||||
_rTempSetpoint : REAL;
|
_rTempSetpoint : REAL;
|
||||||
@@ -25,9 +25,6 @@ VAR
|
|||||||
// Send trigger
|
// Send trigger
|
||||||
_xSend : BOOL;
|
_xSend : BOOL;
|
||||||
|
|
||||||
// Send temp test
|
|
||||||
_xTempTest : BOOL;
|
|
||||||
|
|
||||||
// Init trigger
|
// Init trigger
|
||||||
_xInit : BOOL;
|
_xInit : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -48,21 +45,21 @@ END_IF
|
|||||||
// Init card on first run
|
// Init card on first run
|
||||||
IF _xInit THEN
|
IF _xInit THEN
|
||||||
_xInit := FALSE;
|
_xInit := FALSE;
|
||||||
_stCtrl.bInitRequest := 1;
|
stCtrl.bInitRequest := 1;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _stStatus.bInitAccepted THEN
|
IF stStatus.bInitAccepted THEN
|
||||||
_stCtrl.bInitRequest := 0;
|
stCtrl.bInitRequest := 0;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Send
|
// Send
|
||||||
IF _xSend THEN
|
IF _xSend THEN
|
||||||
_xSend := FALSE;
|
_xSend := FALSE;
|
||||||
_stCtrl.bTransmitRequest := 1;
|
stCtrl.bTransmitRequest := 1;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _stStatus.bTransmitAccepted THEN
|
IF stStatus.bTransmitAccepted THEN
|
||||||
_stCtrl.bTransmitRequest := 0;
|
stCtrl.bTransmitRequest := 0;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Debug test
|
// Debug test
|
||||||
@@ -91,10 +88,19 @@ VAR
|
|||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Calculate sum
|
<ST><![CDATA[// Check end index
|
||||||
|
IF uiEndIndex > 21 THEN
|
||||||
|
byHigh := 0;
|
||||||
|
byLow := 0;
|
||||||
|
RETURN;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Calculate sum
|
||||||
|
{analysis -81}
|
||||||
FOR _uiCounter := uiStartIndex TO uiEndIndex DO
|
FOR _uiCounter := uiStartIndex TO uiEndIndex DO
|
||||||
_dwChecksum := _dwChecksum + _byDataOut[_uiCounter];
|
_dwChecksum := _dwChecksum + abyDataOut[_uiCounter];
|
||||||
END_FOR
|
END_FOR
|
||||||
|
{analysis +81}
|
||||||
|
|
||||||
// Use lower bytes
|
// Use lower bytes
|
||||||
_byHigh := SHR(_dwChecksum.%B0 AND 16#F0, 4);
|
_byHigh := SHR(_dwChecksum.%B0 AND 16#F0, 4);
|
||||||
@@ -115,36 +121,31 @@ VAR_INPUT
|
|||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_dwTemp : DWORD;
|
_dwTemp : DWORD;
|
||||||
_sTemp : STRING(4);
|
_sTemp : STRING;
|
||||||
|
|
||||||
_byHigh : BYTE;
|
|
||||||
_byLow : BYTE;
|
|
||||||
_sHexString : STRING(4);
|
|
||||||
|
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Convert temperature
|
<ST><![CDATA[// Convert temperature
|
||||||
_dwTemp := REAL_TO_DWORD(rTemp * 10)*10;
|
_dwTemp := REAL_TO_DWORD(rTemp * 10 )*10;
|
||||||
_sTemp := DWORD_TO_STRING(_dwTemp);
|
_sTemp := DWORD_TO_STRING(_dwTemp);
|
||||||
|
|
||||||
_byDataOut[0] := 16#02; // STX
|
abyDataOut[0] := 16#02; // STX
|
||||||
_byDataOut[1] := 16#31; // Command code
|
abyDataOut[1] := 16#31; // Command code
|
||||||
_byDataOut[2] := _sTemp[0];
|
abyDataOut[2] := _sTemp[0];
|
||||||
_byDataOut[3] := _sTemp[1];
|
abyDataOut[3] := _sTemp[1];
|
||||||
_byDataOut[4] := _sTemp[2];
|
abyDataOut[4] := _sTemp[2];
|
||||||
_byDataOut[5] := _sTemp[3];
|
abyDataOut[5] := _sTemp[3];
|
||||||
_byDataOut[6] := 16#03; // ETX
|
abyDataOut[6] := 16#03; // ETX
|
||||||
|
|
||||||
M_CalcChecksum(
|
M_CalcChecksum(
|
||||||
uiStartIndex:= 1,
|
uiStartIndex:= 1,
|
||||||
uiEndIndex:= 5,
|
uiEndIndex:= 5,
|
||||||
byHigh=> _byDataOut[7],
|
byHigh=> abyDataOut[7],
|
||||||
byLow=> _byDataOut[8]);
|
byLow=> abyDataOut[8]);
|
||||||
|
|
||||||
_byDataOut[9] := 16#0D; // <CR>
|
abyDataOut[9] := 16#0D; // <CR>
|
||||||
|
|
||||||
_stCtrl.byOutputLength := 10;]]></ST>
|
stCtrl.byOutputLength := 10;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
</POU>
|
</POU>
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
xEnable : BOOL;
|
xEnable : BOOL;
|
||||||
rTargetTemp : REAL;
|
rTargetTemp : REAL;
|
||||||
rDeadBand : REAL := 5.0;
|
|
||||||
|
|
||||||
xConfirmAlarms : BOOL;
|
xConfirmAlarms : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -17,10 +16,10 @@ VAR_IN_OUT
|
|||||||
stHMIInterface : ST_HCPlateHMIInterface;
|
stHMIInterface : ST_HCPlateHMIInterface;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_xEnableHotplate AT %Q* : BOOL;
|
xEnableHotplate AT %Q* : BOOL;
|
||||||
|
|
||||||
_axSlotFree : ARRAY [0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF BOOL;
|
// _axSlotFree : ARRAY [0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF BOOL;
|
||||||
_tonSlotTimer : ARRAY[0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF TON;
|
// _atonSlotTimer : ARRAY[0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF TON;
|
||||||
|
|
||||||
// Temp sensor
|
// Temp sensor
|
||||||
_fbTempSensor : FB_AnalogInput('Temp sensor');
|
_fbTempSensor : FB_AnalogInput('Temp sensor');
|
||||||
@@ -39,10 +38,7 @@ VAR
|
|||||||
timHardwareSignalLevelOff := T#1S));
|
timHardwareSignalLevelOff := T#1S));
|
||||||
|
|
||||||
_fbPITempControl : FB_PI;
|
_fbPITempControl : FB_PI;
|
||||||
_xSaturatedUpper : BOOL;
|
_fbLimit : FB_Limit;
|
||||||
_xSaturatedLower : BOOL;
|
|
||||||
_rMV : REAL;
|
|
||||||
_fbPulsOut : TP;
|
|
||||||
_fbPWMOut : FB_PWM;
|
_fbPWMOut : FB_PWM;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
@@ -73,28 +69,18 @@ _fbPITempControl(
|
|||||||
rKp:= 6,
|
rKp:= 6,
|
||||||
rTn:= 0,
|
rTn:= 0,
|
||||||
xEnable:= stHMIInterface.xEnable,
|
xEnable:= stHMIInterface.xEnable,
|
||||||
xSaturatedUpper:= _xSaturatedUpper,
|
rMV=> _fbLimit.rIn);
|
||||||
xSaturatedLower:= _xSaturatedLower,
|
|
||||||
rMV=> _rMV);
|
|
||||||
|
|
||||||
IF _rMV >= 100.0 THEN
|
_fbLimit(
|
||||||
_rMV := 100.0;
|
rMin:= 0,
|
||||||
_xSaturatedUpper := TRUE;
|
rMax:= 100.0,
|
||||||
ELSE
|
rOut=> _fbPWMOut.rPWM,
|
||||||
_xSaturatedUpper := FALSE;
|
xClampedUpper=> _fbPITempControl.xSaturatedUpper,
|
||||||
END_IF
|
xClampedLower=> _fbPITempControl.xSaturatedLower);
|
||||||
|
|
||||||
IF _rMV <=0 THEN
|
|
||||||
_rMV := 0.0;
|
|
||||||
_xSaturatedLower := TRUE;
|
|
||||||
ELSE
|
|
||||||
_xSaturatedLower := FALSE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
_fbPWMOut(
|
_fbPWMOut(
|
||||||
rPWM:= _rMV,
|
|
||||||
timPeriod:= T#10S,
|
timPeriod:= T#10S,
|
||||||
xOutput=> _xEnableHotplate);
|
xOutput=> xEnableHotplate);
|
||||||
|
|
||||||
// Output HMI Interface
|
// Output HMI Interface
|
||||||
stHMIInterface.rPV := _fbTempSensor.rScaledValue;
|
stHMIInterface.rPV := _fbTempSensor.rScaledValue;
|
||||||
|
|||||||
@@ -14,7 +14,13 @@ VAR
|
|||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_tonTimer(IN := TRUE, PT := timPeriod);
|
<ST><![CDATA[// Check for possible division by zero
|
||||||
|
IF TIME_TO_REAL(timPeriod) = 0 THEN
|
||||||
|
xOutput := FALSE;
|
||||||
|
RETURN;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
_tonTimer(IN := TRUE, PT := timPeriod);
|
||||||
IF _tonTimer.Q THEN
|
IF _tonTimer.Q THEN
|
||||||
_tonTimer(IN := FALSE);
|
_tonTimer(IN := FALSE);
|
||||||
END_IF
|
END_IF
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<GVL Name="GVL_HeatCoolConfig" Id="{865917de-a2fa-49b0-b682-05395fd01971}">
|
<GVL Name="GVL_HeatCoolConfig" Id="{865917de-a2fa-49b0-b682-05395fd01971}">
|
||||||
<Declaration><![CDATA[{attribute 'qualified_only'}
|
<Declaration><![CDATA[{attribute 'qualified_only'}
|
||||||
|
{attribute 'naming' := 'off'}
|
||||||
|
{attribute 'analysis' := '-43'}
|
||||||
VAR_GLOBAL CONSTANT
|
VAR_GLOBAL CONSTANT
|
||||||
HEAT_COOL_PLATES_NUM_SLOTS : UINT := 9;
|
HEAT_COOL_PLATES_NUM_SLOTS : UINT := 9;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_SerialCrl" Id="{02e99166-5c76-4fb3-84cc-719c63e20136}">
|
<DUT Name="ST_SerialCrl" Id="{02e99166-5c76-4fb3-84cc-719c63e20136}">
|
||||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
{attribute 'analysis' := '-33'}
|
||||||
TYPE ST_SerialCrl :
|
TYPE ST_SerialCrl :
|
||||||
STRUCT
|
STRUCT
|
||||||
bTransmitRequest : BIT;
|
bTransmitRequest : BIT;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_SerialStatus" Id="{e37399e0-7acb-4d91-826f-26258cabab1c}">
|
<DUT Name="ST_SerialStatus" Id="{e37399e0-7acb-4d91-826f-26258cabab1c}">
|
||||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
{attribute 'analysis' := '-33'}
|
||||||
TYPE ST_SerialStatus :
|
TYPE ST_SerialStatus :
|
||||||
STRUCT
|
STRUCT
|
||||||
bTransmitAccepted : BIT;
|
bTransmitAccepted : BIT;
|
||||||
|
|||||||
@@ -28,44 +28,44 @@ VAR
|
|||||||
// 1 - Enable
|
// 1 - Enable
|
||||||
// 2 - Enable move
|
// 2 - Enable move
|
||||||
// 3 - Conf_Mess (Reset)
|
// 3 - Conf_Mess (Reset)
|
||||||
_uCtrl AT %Q* : U_KukaRobot_Ctrl;
|
stCtrl AT %Q* : ST_KukaRobot_Ctrl;
|
||||||
|
|
||||||
// 0 -> Robot job to do
|
// 0 -> Robot job to do
|
||||||
// 1 -> PLC job which is finished
|
// 1 -> PLC job which is finished
|
||||||
_uJobs AT %Q* : U_KukaRobot_Jobs;
|
stJobs AT %Q* : ST_KukaRobot_Jobs;
|
||||||
|
|
||||||
// 0 - Greifer nummer
|
// 0 - Greifer nummer
|
||||||
// 1 - Drehteller Nummer
|
// 1 - Drehteller Nummer
|
||||||
// 2 - Position Heizplatte
|
// 2 - Position Heizplatte
|
||||||
// 3 - Position Kuehlplatte
|
// 3 - Position Kuehlplatte
|
||||||
_abToolsAndPositions AT %Q* : ARRAY[0..3] OF BYTE;
|
abyToolsAndPositions AT %Q* : ARRAY[0..3] OF BYTE;
|
||||||
|
|
||||||
// Positions in um
|
// Positions in um
|
||||||
_diOffsetPosX AT %Q* : DINT;
|
diOffsetPosX AT %Q* : DINT;
|
||||||
_diOffsetPosY AT %Q* : DINT;
|
diOffsetPosY AT %Q* : DINT;
|
||||||
_diThickness AT %Q* : DINT;
|
diThickness AT %Q* : DINT;
|
||||||
|
|
||||||
// Inputs
|
// Inputs
|
||||||
_uState AT %I* : U_KukaRobot_State;
|
stState AT %I* : ST_KukaRobot_State;
|
||||||
_dwErrorBits AT %I* : DWORD;
|
dwErrorBits AT %I* : DWORD;
|
||||||
_awJobStatesFromRobot AT %I* : ARRAY[0..1] OF WORD;
|
awJobStatesFromRobot AT %I* : ARRAY[0..1] OF WORD;
|
||||||
_eJobForPLC AT %I* : E_KukaRobot_JobNumerPLC;
|
eJobForPLC AT %I* : E_KukaRobot_JobNumerPLC;
|
||||||
|
|
||||||
_abMirrorToolsAndPositions AT %I* : ARRAY[0..3] OF BYTE;
|
{attribute 'analysis' := '-33'}
|
||||||
|
abyMirrorToolsAndPositions AT %I* : ARRAY[0..3] OF BYTE;
|
||||||
|
|
||||||
// Position mirrors
|
// Position mirrors
|
||||||
_diMirrorOffsetPosX AT %I* : DINT;
|
diMirrorOffsetPosX AT %I* : DINT;
|
||||||
_diMirrorOffsetPosY AT %I* : DINT;
|
diMirrorOffsetPosY AT %I* : DINT;
|
||||||
_diMirrorThickness AT %I* : DINT;
|
diMirrorThickness AT %I* : DINT;
|
||||||
|
{attribute 'analysis' := '+33'}
|
||||||
|
|
||||||
// Motortemperaturen
|
// Motortemperaturen
|
||||||
_asiMotorTemps1To4 AT %I* : ARRAY[0..3] OF SINT;
|
asiMotorTemps1To4 AT %I* : ARRAY[0..3] OF SINT;
|
||||||
_asiMotorTemps5To8 AT %I* : ARRAY[0..3] OF SINT;
|
asiMotorTemps5To8 AT %I* : ARRAY[0..3] OF SINT;
|
||||||
|
|
||||||
_ePlcJob :E_KukaRobot_JobNumerPLC;
|
_ePlcJob :E_KukaRobot_JobNumerPLC;
|
||||||
|
|
||||||
_iState : INT;
|
|
||||||
|
|
||||||
_xRobotReady : BOOL;
|
_xRobotReady : BOOL;
|
||||||
|
|
||||||
_xError : BOOL;
|
_xError : BOOL;
|
||||||
@@ -91,21 +91,21 @@ END_VAR
|
|||||||
// =============
|
// =============
|
||||||
|
|
||||||
_fbAlarmNotInExtMode(
|
_fbAlarmNotInExtMode(
|
||||||
xActive:= (NOT _uState.stState.bExt),
|
xActive:= (NOT stState.bExt),
|
||||||
xRelease:= TRUE,
|
xRelease:= TRUE,
|
||||||
xAcknowledge:= xConfirmAlarms,
|
xAcknowledge:= xConfirmAlarms,
|
||||||
timOnDelay:= T#0S,
|
timOnDelay:= T#0S,
|
||||||
timOffDelay:= T#0S);
|
timOffDelay:= T#0S);
|
||||||
|
|
||||||
_fbAlarmEStopActive(
|
_fbAlarmEStopActive(
|
||||||
xActive:= (NOT _uState.stState.bAlarmStop),
|
xActive:= (NOT stState.bAlarmStop),
|
||||||
xRelease:= TRUE,
|
xRelease:= TRUE,
|
||||||
xAcknowledge:= xConfirmAlarms,
|
xAcknowledge:= xConfirmAlarms,
|
||||||
timOnDelay:= T#0S,
|
timOnDelay:= T#0S,
|
||||||
timOffDelay:= T#0S);
|
timOffDelay:= T#0S);
|
||||||
|
|
||||||
_fbAlarmOperatorSafetyNotOk(
|
_fbAlarmOperatorSafetyNotOk(
|
||||||
xActive:= (NOT _uState.stState.bUserSAF) AND (_uState.stState.bExt),
|
xActive:= (NOT stState.bUserSAF) AND (stState.bExt),
|
||||||
xRelease:= TRUE,
|
xRelease:= TRUE,
|
||||||
xAcknowledge:= xConfirmAlarms,
|
xAcknowledge:= xConfirmAlarms,
|
||||||
timOnDelay:= T#0S,
|
timOnDelay:= T#0S,
|
||||||
@@ -126,12 +126,12 @@ _fbAlarmRobotErrorResetTimeout(
|
|||||||
// Check if robot is ready
|
// Check if robot is ready
|
||||||
// =======================
|
// =======================
|
||||||
|
|
||||||
_xRobotReady := _uState.stState.bExt
|
_xRobotReady := stState.bExt
|
||||||
AND _uState.stState.bAlarmStop
|
AND stState.bAlarmStop
|
||||||
AND _uState.stState.bUserSAF
|
AND stState.bUserSAF
|
||||||
AND _uState.stState.bPeriRdy
|
AND stState.bPeriRdy
|
||||||
AND _uState.stState.bIOActConf
|
AND stState.bIOActConf
|
||||||
AND (NOT _uState.stState.bStopMess);
|
AND (NOT stState.bStopMess);
|
||||||
|
|
||||||
|
|
||||||
// =============================
|
// =============================
|
||||||
@@ -145,7 +145,7 @@ SUPER^();
|
|||||||
// ==============================
|
// ==============================
|
||||||
|
|
||||||
// Allow robot to be moved with programming pendant
|
// Allow robot to be moved with programming pendant
|
||||||
_uCtrl.stCtrl.bNotDisableAxes := 1;
|
stCtrl.bNotDisableAxes := 1;
|
||||||
|
|
||||||
// Disable move if in T2 for safety reasons
|
// Disable move if in T2 for safety reasons
|
||||||
// IF _uState.stState.bT2 THEN
|
// IF _uState.stState.bT2 THEN
|
||||||
@@ -157,10 +157,10 @@ _uCtrl.stCtrl.bNotDisableAxes := 1;
|
|||||||
// Write unit feedbacks outputs
|
// Write unit feedbacks outputs
|
||||||
// ============================
|
// ============================
|
||||||
|
|
||||||
_uCtrl.stCtrl.bDoorEtcher1Open := stUnitFeedbacks.xDoorEtcher1Open;
|
stCtrl.bDoorEtcher1Open := stUnitFeedbacks.xDoorEtcher1Open;
|
||||||
_uCtrl.stCtrl.bDoorEtcher2Open := stUnitFeedbacks.xDoorEtcher2Open;
|
stCtrl.bDoorEtcher2Open := stUnitFeedbacks.xDoorEtcher2Open;
|
||||||
_uCtrl.stCtrl.bDoorHVTestHotOpen := stUnitFeedbacks.xDoorHVTestHotOpen;
|
stCtrl.bDoorHVTestHotOpen := stUnitFeedbacks.xDoorHVTestHotOpen;
|
||||||
_uCtrl.stCtrl.bDoorHVTestColdOpen := stUnitFeedbacks.xDoorHVTestColdOpen;
|
stCtrl.bDoorHVTestColdOpen := stUnitFeedbacks.xDoorHVTestColdOpen;
|
||||||
|
|
||||||
M_HandlePLCJobs();
|
M_HandlePLCJobs();
|
||||||
|
|
||||||
@@ -196,16 +196,16 @@ _stSMConfig.xAbortingDisabled := TRUE;]]></ST>
|
|||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Reset all relevant robot control signals
|
<ST><![CDATA[// Reset all relevant robot control signals
|
||||||
_uCtrl.stCtrl.bConfMess := 0;
|
stCtrl.bConfMess := 0;
|
||||||
_uCtrl.stCtrl.bExtStart := 0;
|
stCtrl.bExtStart := 0;
|
||||||
_uCtrl.stCtrl.bEnableAxes := 0;
|
stCtrl.bEnableAxes := 0;
|
||||||
_uCtrl.stCtrl.bEnableMove := 0;
|
stCtrl.bEnableMove := 0;
|
||||||
_uCtrl.stCtrl.bNotDisableAxes := 1;
|
stCtrl.bNotDisableAxes := 1;
|
||||||
_uCtrl.stCtrl.bAbortJob := 1;
|
stCtrl.bAbortJob := 1;
|
||||||
|
|
||||||
// Reset robot program and plc job number
|
// Reset robot program and plc job number
|
||||||
_uJobs.stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
_uJobs.stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST>
|
stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Clearing" Id="{e6152288-8c7d-4b38-bfbc-4f861d76ccc5}">
|
<Method Name="M_Clearing" Id="{e6152288-8c7d-4b38-bfbc-4f861d76ccc5}">
|
||||||
@@ -215,8 +215,8 @@ VAR_INST
|
|||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_tonWait(IN := TRUE, PT := T#1S);
|
<ST><![CDATA[_tonWait(IN := TRUE, PT := T#1S);
|
||||||
_uCtrl.stCtrl.bEnableMove := 1;
|
stCtrl.bEnableMove := 1;
|
||||||
_uCtrl.stCtrl.bAbortJob := 0;
|
stCtrl.bAbortJob := 0;
|
||||||
|
|
||||||
IF _tonWait.Q THEN
|
IF _tonWait.Q THEN
|
||||||
_tonWait(IN := FALSE, PT := T#1S);
|
_tonWait(IN := FALSE, PT := T#1S);
|
||||||
@@ -234,8 +234,8 @@ END_IF
|
|||||||
E_KukaRobot_JobNumberRobot.WARMUP:
|
E_KukaRobot_JobNumberRobot.WARMUP:
|
||||||
CASE _iSSM OF
|
CASE _iSSM OF
|
||||||
0: // Wait for program to end
|
0: // Wait for program to end
|
||||||
IF _awJobStatesFromRobot[0] = 0 THEN
|
IF awJobStatesFromRobot[0] = 0 THEN
|
||||||
IF _asiMotorTemps1To4[3] < 40 THEN
|
IF asiMotorTemps1To4[3] < 40 THEN
|
||||||
_iSSM := 10;
|
_iSSM := 10;
|
||||||
ELSE
|
ELSE
|
||||||
_eCmd := E_PackMLCmd.COMPLETE;
|
_eCmd := E_PackMLCmd.COMPLETE;
|
||||||
@@ -243,17 +243,20 @@ END_IF
|
|||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
10: // Write robot number 0
|
10: // Write robot number 0
|
||||||
_uJobs.stJobs.wJobNrForRobot := stJobParams.eJob;
|
stJobs.wJobNrForRobot := stJobParams.eJob;
|
||||||
IF _awJobStatesFromRobot[0] = _uJobs.stJobs.wJobNrForRobot THEN
|
IF awJobStatesFromRobot[0] = stJobs.wJobNrForRobot THEN
|
||||||
_uJobs.stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
_iSSM := 0;
|
_iSSM := 0;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
;
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
ELSE
|
ELSE
|
||||||
// Wait for robot to be done
|
// Wait for robot to be done
|
||||||
IF _awJobStatesFromRobot[0] = 0 THEN
|
IF awJobStatesFromRobot[0] = 0 THEN
|
||||||
_uJobs.stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
_eCmd := E_PackMLCmd.COMPLETE;
|
_eCmd := E_PackMLCmd.COMPLETE;
|
||||||
END_IF
|
END_IF
|
||||||
END_CASE
|
END_CASE
|
||||||
@@ -264,35 +267,35 @@ END_CASE
|
|||||||
<Method Name="M_HandlePLCJobs" Id="{4e3710b4-697b-42e8-86b1-31b19b3023db}">
|
<Method Name="M_HandlePLCJobs" Id="{4e3710b4-697b-42e8-86b1-31b19b3023db}">
|
||||||
<Declaration><![CDATA[METHOD M_HandlePLCJobs
|
<Declaration><![CDATA[METHOD M_HandlePLCJobs
|
||||||
VAR_INST
|
VAR_INST
|
||||||
_rtrigNewJob : R_TRIG;
|
_rtNewJob : R_TRIG;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_rtrigNewJob(CLK := (_eJobForPLC <> E_KukaRobot_JobNumberRobot.NO_JOB));
|
<ST><![CDATA[_rtNewJob(CLK := (eJobForPLC <> E_KukaRobot_JobNumerPLC.NO_JOB));
|
||||||
|
|
||||||
IF _rtrigNewJob.Q THEN
|
IF _rtNewJob.Q THEN
|
||||||
eCmdFromRobot := _eJobForPLC;
|
eCmdFromRobot := eJobForPLC;
|
||||||
xNewCmdRequested := TRUE;
|
xNewCmdRequested := TRUE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF xNewCmdRequested AND xAckPLCCmd THEN
|
IF xAckPLCCmd THEN
|
||||||
xNewCmdRequested := FALSE;
|
xNewCmdRequested := FALSE;
|
||||||
|
|
||||||
IF (NOT xPLCJobFailed) THEN
|
IF (NOT xPLCJobFailed) THEN
|
||||||
_uJobs.stJobs.wFinishedJobNrFromPlc := _eJobForPLC;
|
stJobs.wFinishedJobNrFromPlc := eJobForPLC;
|
||||||
ELSE
|
ELSE
|
||||||
_uJobs.stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.JOB_FAILED;
|
stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.JOB_FAILED;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
eCmdFromRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
eCmdFromRobot := E_KukaRobot_JobNumerPLC.NO_JOB;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Reset plc job done
|
// Reset plc job done
|
||||||
IF (_eJobForPLC = E_KukaRobot_JobNumberRobot.NO_JOB)
|
IF (eJobForPLC = E_KukaRobot_JobNumerPLC.NO_JOB)
|
||||||
AND (_uJobs.stJobs.wFinishedJobNrFromPlc <> E_KukaRobot_JobNumberRobot.NO_JOB)
|
AND (stJobs.wFinishedJobNrFromPlc <> E_KukaRobot_JobNumberRobot.NO_JOB)
|
||||||
AND (NOT xPLCJobFailed)
|
AND (NOT xPLCJobFailed)
|
||||||
THEN
|
THEN
|
||||||
_uJobs.stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumberRobot.NO_JOB;
|
stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.NO_JOB;
|
||||||
END_IF]]></ST>
|
END_IF]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
@@ -307,9 +310,9 @@ END_IF]]></ST>
|
|||||||
<Declaration><![CDATA[METHOD PROTECTED M_Holding
|
<Declaration><![CDATA[METHOD PROTECTED M_Holding
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_uCtrl.stCtrl.bEnableMove := 0;
|
<ST><![CDATA[stCtrl.bEnableMove := 0;
|
||||||
|
|
||||||
IF _uState.stState.bRobStopped THEN
|
IF stState.bRobStopped THEN
|
||||||
M_StateComplete();
|
M_StateComplete();
|
||||||
END_IF
|
END_IF
|
||||||
]]></ST>
|
]]></ST>
|
||||||
@@ -333,37 +336,37 @@ END_VAR]]></Declaration>
|
|||||||
CASE _iSSM OF
|
CASE _iSSM OF
|
||||||
// Check if com interface is ok
|
// Check if com interface is ok
|
||||||
0:
|
0:
|
||||||
_uCtrl.stCtrl.bEnableMove := 1;
|
stCtrl.bEnableMove := 1;
|
||||||
_uCtrl.stCtrl.bConfMess := 1;
|
stCtrl.bConfMess := 1;
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
IF _uState.stState.bIOActConf THEN
|
IF stState.bIOActConf THEN
|
||||||
_uCtrl.stCtrl.bConfMess := 0;
|
stCtrl.bConfMess := 0;
|
||||||
_iSSM := 10;
|
_iSSM := 10;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Timeout io_Act_conf ready
|
// Timeout io_Act_conf ready
|
||||||
IF _tonTimeout.Q THEN
|
IF _tonTimeout.Q THEN
|
||||||
_uCtrl.stCtrl.bConfMess := 0;
|
stCtrl.bConfMess := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Enable axes
|
// Enable axes
|
||||||
10:
|
10:
|
||||||
_uCtrl.stCtrl.bEnableAxes := 1;
|
stCtrl.bEnableAxes := 1;
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
// Wait for drives to be ready
|
// Wait for drives to be ready
|
||||||
IF _uState.stState.bPeriRdy THEN
|
IF stState.bPeriRdy THEN
|
||||||
_uCtrl.stCtrl.bEnableAxes := 0;
|
stCtrl.bEnableAxes := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_iSSM := 20;
|
_iSSM := 20;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Timeout drives ready
|
// Timeout drives ready
|
||||||
IF _tonTimeout.Q THEN
|
IF _tonTimeout.Q THEN
|
||||||
_uCtrl.stCtrl.bEnableAxes := 0;
|
stCtrl.bEnableAxes := 0;
|
||||||
_fbAlarmDrivesEnableTimeout.xRelease := TRUE;
|
_fbAlarmDrivesEnableTimeout.xRelease := TRUE;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
@@ -371,12 +374,12 @@ CASE _iSSM OF
|
|||||||
|
|
||||||
// Reset move stop
|
// Reset move stop
|
||||||
20:
|
20:
|
||||||
_uCtrl.stCtrl.bConfMess := 1;
|
stCtrl.bConfMess := 1;
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
// Wait for errors to be reset
|
// Wait for errors to be reset
|
||||||
IF (NOT _uState.stState.bStopMess) THEN
|
IF (NOT stState.bStopMess) THEN
|
||||||
_uCtrl.stCtrl.bConfMess := 0;
|
stCtrl.bConfMess := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_iSSM := 30;
|
_iSSM := 30;
|
||||||
END_IF
|
END_IF
|
||||||
@@ -390,7 +393,7 @@ CASE _iSSM OF
|
|||||||
|
|
||||||
// Start program
|
// Start program
|
||||||
30:
|
30:
|
||||||
_uCtrl.stCtrl.bExtStart := 1;
|
stCtrl.bExtStart := 1;
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
IF _tonTimeout.Q THEN
|
IF _tonTimeout.Q THEN
|
||||||
@@ -398,12 +401,14 @@ CASE _iSSM OF
|
|||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _uState.stState.bProAct THEN
|
IF stState.bProAct THEN
|
||||||
_uCtrl.stCtrl.bExtStart := 0;
|
stCtrl.bExtStart := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
M_StateComplete();
|
M_StateComplete();
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
;
|
||||||
END_CASE]]></ST>
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
@@ -416,7 +421,7 @@ END_VAR]]></Declaration>
|
|||||||
<ST><![CDATA[CASE _iSSM OF
|
<ST><![CDATA[CASE _iSSM OF
|
||||||
// Check job parameters
|
// Check job parameters
|
||||||
0:
|
0:
|
||||||
IF (_stJobParams.byGripperNumber < 0) OR (_stJobParams.byGripperNumber > 4) // Wrong gripper number
|
IF (_stJobParams.byGripperNumber > 4) // Wrong gripper number
|
||||||
//OR (_stJobParams.byChuckNumber < 1) OR (_stJobParams.byChuckNumber > 6) // Wrong chuck number
|
//OR (_stJobParams.byChuckNumber < 1) OR (_stJobParams.byChuckNumber > 6) // Wrong chuck number
|
||||||
OR (_stJobParams.byGripperSide < 1) OR (_stJobParams.byGripperSide > 6) // Wrong gripper side
|
OR (_stJobParams.byGripperSide < 1) OR (_stJobParams.byGripperSide > 6) // Wrong gripper side
|
||||||
THEN
|
THEN
|
||||||
@@ -433,38 +438,38 @@ END_VAR]]></Declaration>
|
|||||||
// Transfer job data to robot
|
// Transfer job data to robot
|
||||||
10:
|
10:
|
||||||
// Pos x in um
|
// Pos x in um
|
||||||
_diOffsetPosX := REAL_TO_DINT(_stJobParams.rPosX * 1000);
|
diOffsetPosX := REAL_TO_DINT(_stJobParams.rPosX * 1000);
|
||||||
|
|
||||||
// Pos y in um
|
// Pos y in um
|
||||||
_diOffsetPosY := REAL_TO_DINT(_stJobParams.rPosY * 1000);
|
diOffsetPosY := REAL_TO_DINT(_stJobParams.rPosY * 1000);
|
||||||
|
|
||||||
// Thickness
|
// Thickness
|
||||||
_diThickness := REAL_TO_DINT(_stJobParams.rThickness * 1000);
|
diThickness := REAL_TO_DINT(_stJobParams.rThickness * 1000);
|
||||||
|
|
||||||
// Gripper side
|
// Gripper side
|
||||||
_uCtrl.stCtrl.byGripperSide := _stJobParams.byGripperSide;
|
stCtrl.byGripperSide := _stJobParams.byGripperSide;
|
||||||
|
|
||||||
// Scan QR code
|
// Scan QR code
|
||||||
IF stJobParams.xScanQRCode THEN
|
IF stJobParams.xScanQRCode THEN
|
||||||
_uCtrl.stCtrl.bScanQRCode := 1;
|
stCtrl.bScanQRCode := 1;
|
||||||
ELSE
|
ELSE
|
||||||
_uCtrl.stCtrl.bScanQRCode := 0;
|
stCtrl.bScanQRCode := 0;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Position on hotplate
|
// Position on hotplate
|
||||||
_abToolsAndPositions[2] := stJobParams.byPlaceOnHotplate;
|
abyToolsAndPositions[2] := stJobParams.byPlaceOnHotplate;
|
||||||
|
|
||||||
// Position on coolplate
|
// Position on coolplate
|
||||||
_abToolsAndPositions[3] := stJobParams.byPlaceOnCoolPlate;
|
abyToolsAndPositions[3] := stJobParams.byPlaceOnCoolPlate;
|
||||||
|
|
||||||
// Gripper number
|
// Gripper number
|
||||||
_abToolsAndPositions[0] := stJobParams.byGripperNumber;
|
abyToolsAndPositions[0] := stJobParams.byGripperNumber;
|
||||||
|
|
||||||
// Chuck for etcher to load
|
// Chuck for etcher to load
|
||||||
_abToolsAndPositions[1] := stJobParams.byChuckNumber;
|
abyToolsAndPositions[1] := stJobParams.byChuckNumber;
|
||||||
|
|
||||||
// Write robot job number
|
// Write robot job number
|
||||||
_uJobs.stJobs.wJobNrForRobot := DINT_TO_WORD(_stJobParams.eJob);
|
stJobs.wJobNrForRobot := DINT_TO_WORD(_stJobParams.eJob);
|
||||||
|
|
||||||
// Safety reset timout fb
|
// Safety reset timout fb
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
@@ -476,8 +481,8 @@ END_VAR]]></Declaration>
|
|||||||
_tonTimeout(IN := TRUE, PT := T#5S);
|
_tonTimeout(IN := TRUE, PT := T#5S);
|
||||||
|
|
||||||
// If job number is read back correct, go to next state
|
// If job number is read back correct, go to next state
|
||||||
IF _awJobStatesFromRobot[0] = _uJobs.stJobs.wJobNrForRobot THEN
|
IF awJobStatesFromRobot[0] = stJobs.wJobNrForRobot THEN
|
||||||
_uJobs.stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
M_StateComplete();
|
M_StateComplete();
|
||||||
END_IF
|
END_IF
|
||||||
@@ -489,10 +494,13 @@ END_VAR]]></Declaration>
|
|||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Robot has error
|
// Robot has error
|
||||||
IF _dwErrorBits <> 0 THEN
|
IF dwErrorBits <> 0 THEN
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
;
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
|
|
||||||
@@ -509,11 +517,11 @@ END_CASE
|
|||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// _uCtrl.stCtrl.bConfMess := 0;
|
<ST><![CDATA[// _uCtrl.stCtrl.bConfMess := 0;
|
||||||
_uCtrl.stCtrl.bEnableAxes := 0;
|
stCtrl.bEnableAxes := 0;
|
||||||
_uCtrl.stCtrl.bNotDisableAxes := 1;
|
stCtrl.bNotDisableAxes := 1;
|
||||||
_uCtrl.stCtrl.bExtStart := 0;
|
stCtrl.bExtStart := 0;
|
||||||
|
|
||||||
_uJobs.stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
_ePlcJob := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST>
|
_ePlcJob := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
@@ -541,33 +549,33 @@ END_VAR]]></Declaration>
|
|||||||
|
|
||||||
CASE _iSSM OF
|
CASE _iSSM OF
|
||||||
0:
|
0:
|
||||||
_uCtrl.stCtrl.bEnableMove := 1;
|
stCtrl.bEnableMove := 1;
|
||||||
_uCtrl.stCtrl.bEnableAxes := 1;
|
stCtrl.bEnableAxes := 1;
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
// Wait for drives to be ready
|
// Wait for drives to be ready
|
||||||
IF _uState.stState.bPeriRdy THEN
|
IF stState.bPeriRdy THEN
|
||||||
_uCtrl.stCtrl.bEnableAxes := 0;
|
stCtrl.bEnableAxes := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_iSSM := 10;
|
_iSSM := 10;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Timeout drives ready
|
// Timeout drives ready
|
||||||
IF _tonTimeout.Q THEN
|
IF _tonTimeout.Q THEN
|
||||||
_uCtrl.stCtrl.bEnableAxes := 0;
|
stCtrl.bEnableAxes := 0;
|
||||||
_fbAlarmDrivesEnableTimeout.xRelease := TRUE;
|
_fbAlarmDrivesEnableTimeout.xRelease := TRUE;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
10:
|
10:
|
||||||
_uCtrl.stCtrl.bConfMess := 1;
|
stCtrl.bConfMess := 1;
|
||||||
|
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
// Wait for errors to be reset
|
// Wait for errors to be reset
|
||||||
IF (NOT _uState.stState.bStopMess) THEN
|
IF (NOT stState.bStopMess) THEN
|
||||||
_uCtrl.stCtrl.bConfMess := 0;
|
stCtrl.bConfMess := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_iSSM := 20;
|
_iSSM := 20;
|
||||||
END_IF
|
END_IF
|
||||||
@@ -581,7 +589,7 @@ CASE _iSSM OF
|
|||||||
|
|
||||||
20:
|
20:
|
||||||
// Start main program
|
// Start main program
|
||||||
_uCtrl.stCtrl.bExtStart := 1;
|
stCtrl.bExtStart := 1;
|
||||||
|
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
@@ -590,12 +598,14 @@ CASE _iSSM OF
|
|||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _uState.stState.bProAct THEN
|
IF stState.bProAct THEN
|
||||||
_uCtrl.stCtrl.bExtStart := 0;
|
stCtrl.bExtStart := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
M_StateComplete();
|
M_StateComplete();
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
;
|
||||||
END_CASE]]></ST>
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_KukaRobot_Ctrl" Id="{6a4fb617-ed87-4838-8f9a-7e8618b6ad47}">
|
<DUT Name="ST_KukaRobot_Ctrl" Id="{6a4fb617-ed87-4838-8f9a-7e8618b6ad47}">
|
||||||
<Declaration><![CDATA[{attribute 'pack_mode' := '0'}
|
<Declaration><![CDATA[{attribute 'pack_mode' := '0'}
|
||||||
|
{attribute 'analysis' := '-33'}
|
||||||
TYPE ST_KukaRobot_Ctrl :
|
TYPE ST_KukaRobot_Ctrl :
|
||||||
STRUCT
|
STRUCT
|
||||||
// DRIVES_OFF
|
// DRIVES_OFF
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_KukaRobot_State" Id="{a63ba4ed-f6ed-4d69-91eb-1236a87f0780}">
|
<DUT Name="ST_KukaRobot_State" Id="{a63ba4ed-f6ed-4d69-91eb-1236a87f0780}">
|
||||||
<Declaration><![CDATA[{attribute 'pack_mode' := '0'}
|
<Declaration><![CDATA[{attribute 'pack_mode' := '0'}
|
||||||
|
{attribute 'analysis' := '-33'}
|
||||||
TYPE ST_KukaRobot_State :
|
TYPE ST_KukaRobot_State :
|
||||||
STRUCT
|
STRUCT
|
||||||
bUserSAF : BIT;
|
bUserSAF : BIT;
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<TcPlcObject Version="1.1.0.1">
|
|
||||||
<DUT Name="U_KukaRobot_Ctrl" Id="{c0890327-8227-4b1a-8f53-5fe8dcabd304}">
|
|
||||||
<Declaration><![CDATA[TYPE U_KukaRobot_Ctrl :
|
|
||||||
UNION
|
|
||||||
dwCtrl : DWORD;
|
|
||||||
stCtrl : ST_KukaRobot_Ctrl;
|
|
||||||
END_UNION
|
|
||||||
END_TYPE
|
|
||||||
]]></Declaration>
|
|
||||||
</DUT>
|
|
||||||
</TcPlcObject>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<TcPlcObject Version="1.1.0.1">
|
|
||||||
<DUT Name="U_KukaRobot_Jobs" Id="{590c2205-ccc7-4ffe-977e-f7594d299bfd}">
|
|
||||||
<Declaration><![CDATA[TYPE U_KukaRobot_Jobs :
|
|
||||||
UNION
|
|
||||||
dwJobs : DWORD;
|
|
||||||
stJobs : ST_KukaRobot_Jobs;
|
|
||||||
END_UNION
|
|
||||||
END_TYPE
|
|
||||||
]]></Declaration>
|
|
||||||
</DUT>
|
|
||||||
</TcPlcObject>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<TcPlcObject Version="1.1.0.1">
|
|
||||||
<DUT Name="U_KukaRobot_State" Id="{955531d4-f458-4580-a2f2-ab760c7d37eb}">
|
|
||||||
<Declaration><![CDATA[TYPE U_KukaRobot_State :
|
|
||||||
UNION
|
|
||||||
dwState : DWORD;
|
|
||||||
stState : ST_KukaRobot_State;
|
|
||||||
END_UNION
|
|
||||||
END_TYPE
|
|
||||||
]]></Declaration>
|
|
||||||
</DUT>
|
|
||||||
</TcPlcObject>
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<POU Name="FB_TFProtocol" Id="{f0c44f0b-70b8-45d0-8720-9bd7e08b6aa6}" SpecialFunc="None">
|
<POU Name="FB_TFProtocol" Id="{f0c44f0b-70b8-45d0-8720-9bd7e08b6aa6}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_TFProtocol
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_TFProtocol
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
sIpAddr : STRING;
|
sIpAddr : STRING(15);
|
||||||
udiPort : UDINT;
|
udiPort : UDINT;
|
||||||
|
|
||||||
xConfirmAlarms : BOOL;
|
xConfirmAlarms : BOOL;
|
||||||
@@ -18,30 +18,27 @@ END_VAR
|
|||||||
VAR
|
VAR
|
||||||
// Connection settings
|
// Connection settings
|
||||||
_fbTcpConnection : FB_ClientServerConnection;
|
_fbTcpConnection : FB_ClientServerConnection;
|
||||||
_sIpAddr : STRING;
|
|
||||||
_udiPort : UDINT;
|
|
||||||
_hSocket : T_HSOCKET;
|
_hSocket : T_HSOCKET;
|
||||||
_xConnect : BOOL := TRUE;
|
_xConnect : BOOL := TRUE;
|
||||||
_xConnected : BOOL;
|
_xConnected : BOOL;
|
||||||
|
|
||||||
// Socket send
|
// Socket send
|
||||||
_fbSocketSend : FB_SocketSend;
|
_fbSocketSend : FB_SocketSend;
|
||||||
|
_iCmdLength : INT;
|
||||||
_timSendTimeout : TIME := T#5S;
|
_timSendTimeout : TIME := T#5S;
|
||||||
|
|
||||||
// Socket receive
|
// Socket receive
|
||||||
_fbSocketReceive : FB_SocketReceive;
|
_fbSocketReceive : FB_SocketReceive;
|
||||||
_timReceiveTimeout : TIME := T#5S;
|
_timReceiveTimeout : TIME := T#5S;
|
||||||
_abReceivedBuffer : ARRAY[0..100] OF BYTE;
|
_abyReceivedBuffer : ARRAY[0..100] OF BYTE;
|
||||||
_asReceivedResponse : ARRAY[0..9] OF STRING;
|
_sReceivedResponse : STRING(255);
|
||||||
_uiBufferPos : UINT;
|
_udiResponseLength : UDINT;
|
||||||
_udiCounterReceive : UDINT;
|
|
||||||
_udiReceivedBytes : UDINT;
|
_udiReceivedBytes : UDINT;
|
||||||
_timPollingTime : TIME := T#1S;
|
_timPollingTime : TIME := T#1S;
|
||||||
_tonPollTimer : TON;
|
_tonPollTimer : TON;
|
||||||
_xEnableReceiveTimeout : BOOL;
|
_xEnableReceiveTimeout : BOOL;
|
||||||
_timReceiveTimeoutTime : TIME := T#5S;
|
_timReceiveTimeoutTime : TIME := T#5S;
|
||||||
_tonReceiveTimeout : TON;
|
_tonReceiveTimeout : TON;
|
||||||
_uiLastReceivedResponseId : UINT := 0;
|
|
||||||
|
|
||||||
// Receive state machine
|
// Receive state machine
|
||||||
_iStateReceive : INT;
|
_iStateReceive : INT;
|
||||||
@@ -49,16 +46,15 @@ VAR
|
|||||||
// Command data
|
// Command data
|
||||||
_uiCmdId : UINT := 1;
|
_uiCmdId : UINT := 1;
|
||||||
_sCmd : STRING(255);
|
_sCmd : STRING(255);
|
||||||
_sAck : STRING(255);
|
_sAck : STRING(11);
|
||||||
|
|
||||||
// Main state machine
|
// Main state machine
|
||||||
_iState : INT := 0;
|
_iState : INT := 0;
|
||||||
|
_xRunSMAgain : BOOL;
|
||||||
_diCounter : DINT;
|
_diCounter : DINT;
|
||||||
_xSendCmd : BOOL;
|
_xSendCmd : BOOL;
|
||||||
_uiRetries : UINT;
|
_uiRetries : UINT;
|
||||||
_xCmdReceived : BOOL;
|
_xCmdReceived : BOOL;
|
||||||
_iPlaceCmdSeperator : INT;
|
|
||||||
_sTmp : STRING;
|
|
||||||
_xReceivedResponseOk : BOOL;
|
_xReceivedResponseOk : BOOL;
|
||||||
_uiReceivedCommandId : UINT;
|
_uiReceivedCommandId : UINT;
|
||||||
|
|
||||||
@@ -67,7 +63,9 @@ VAR
|
|||||||
_xError : BOOL;
|
_xError : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR CONSTANT
|
VAR CONSTANT
|
||||||
|
{attribute 'naming' := 'off'}
|
||||||
MAX_RETRIES : UINT := 3;
|
MAX_RETRIES : UINT := 3;
|
||||||
|
{attribute 'naming' := 'on'}
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
@@ -101,17 +99,19 @@ CASE _iStateReceive OF
|
|||||||
|
|
||||||
// Call receive
|
// Call receive
|
||||||
10:
|
10:
|
||||||
|
{analysis -64}
|
||||||
_fbSocketReceive(
|
_fbSocketReceive(
|
||||||
sSrvNetId:= '',
|
sSrvNetId:= '',
|
||||||
hSocket:= _hSocket,
|
hSocket:= _hSocket,
|
||||||
cbLen:= SIZEOF(_abReceivedBuffer) - _udiReceivedBytes,
|
cbLen:= SIZEOF(_abyReceivedBuffer) - _udiReceivedBytes,
|
||||||
pDest:= ADR(_abReceivedBuffer) + _udiReceivedBytes,
|
pDest:= ADR(_abyReceivedBuffer) + _udiReceivedBytes,
|
||||||
bExecute:= TRUE,
|
bExecute:= TRUE,
|
||||||
tTimeout:= _timReceiveTimeout,
|
tTimeout:= _timReceiveTimeout,
|
||||||
bBusy=> ,
|
bBusy=> ,
|
||||||
bError=> ,
|
bError=> ,
|
||||||
nErrId=> ,
|
nErrId=> ,
|
||||||
nRecBytes=> );
|
nRecBytes=> );
|
||||||
|
{analysis +64}
|
||||||
|
|
||||||
IF (NOT _fbSocketReceive.bBusy) AND (NOT _fbSocketReceive.bError) THEN
|
IF (NOT _fbSocketReceive.bBusy) AND (NOT _fbSocketReceive.bError) THEN
|
||||||
_fbSocketReceive(bExecute := FALSE);
|
_fbSocketReceive(bExecute := FALSE);
|
||||||
@@ -149,374 +149,197 @@ CASE _iStateReceive OF
|
|||||||
// Check received data
|
// Check received data
|
||||||
20:
|
20:
|
||||||
// Check if received command is complete
|
// Check if received command is complete
|
||||||
MEMCPY(destAddr := ADR(_asReceivedResponse[_uiBufferPos]), srcAddr := ADR(_abReceivedBuffer), n := _udiReceivedBytes);
|
MEMCPY(destAddr := ADR(_sReceivedResponse), srcAddr := ADR(_abyReceivedBuffer), n := _udiReceivedBytes);
|
||||||
_uiBufferPos := _uiBufferPos + 1;
|
_udiResponseLength := _udiReceivedBytes;
|
||||||
IF _uiBufferPos > 9 THEN
|
|
||||||
_uiBufferPos := 0;
|
|
||||||
END_IF
|
|
||||||
_udiReceivedBytes := 0;
|
_udiReceivedBytes := 0;
|
||||||
_xCmdReceived := TRUE;
|
_xCmdReceived := TRUE;
|
||||||
|
|
||||||
// Go back to polling wait state
|
// Go back to polling wait state
|
||||||
_iStateReceive := 15;
|
_iStateReceive := 15;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
;
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
// CASE _iState OF
|
REPEAT
|
||||||
// // Wait for active connection to tray feeder
|
_xRunSMAgain := FALSE;
|
||||||
// 0:
|
CASE _iState OF
|
||||||
// IF _xConnected THEN
|
// Wait for active connection to tray feeder
|
||||||
// _iState := 10;
|
0:
|
||||||
// END_IF
|
IF _xConnected THEN
|
||||||
//
|
_iState := 10;
|
||||||
// // Connected and idle
|
END_IF
|
||||||
// 10:
|
|
||||||
// // Got to disconnected state if connection is lost
|
// Connected and idle
|
||||||
// IF (NOT _xConnected) THEN
|
10:
|
||||||
// _iState := 0;
|
// Got to disconnected state if connection is lost
|
||||||
// END_IF
|
IF (NOT _xConnected) THEN
|
||||||
//
|
_iState := 0;
|
||||||
// IF _xSendCmd THEN
|
END_IF
|
||||||
// _xSendCmd := FALSE;
|
|
||||||
// _xBusy := TRUE;
|
IF _xSendCmd THEN
|
||||||
// _iState := 20;
|
_xSendCmd := FALSE;
|
||||||
// END_IF
|
_xBusy := TRUE;
|
||||||
//
|
_iState := 20;
|
||||||
// // Check if we received a response without sending a command
|
END_IF
|
||||||
// IF _xCmdReceived THEN
|
|
||||||
// _xCmdReceived := FALSE;
|
// Check if we received a response without sending a command
|
||||||
// _iState := 50;
|
IF _xCmdReceived THEN
|
||||||
// END_IF
|
_xCmdReceived := FALSE;
|
||||||
//
|
_xRunSMAgain := TRUE;
|
||||||
// // Send command
|
_iState := 50;
|
||||||
// 20:
|
END_IF
|
||||||
// _fbSocketSend(
|
|
||||||
// sSrvNetId:= '',
|
// Send command
|
||||||
// hSocket:= _hSocket,
|
20:
|
||||||
// cbLen:= SIZEOF(_sCmd),
|
_fbSocketSend(
|
||||||
// pSrc:= ADR(_sCmd),
|
sSrvNetId:= '',
|
||||||
// bExecute:= TRUE,
|
hSocket:= _hSocket,
|
||||||
// tTimeout:= _timSendTimeout,
|
cbLen:= INT_TO_UDINT(_iCmdLength),
|
||||||
// bBusy=> ,
|
pSrc:= ADR(_sCmd),
|
||||||
// bError=> ,
|
bExecute:= TRUE,
|
||||||
// nErrId=> );
|
tTimeout:= _timSendTimeout,
|
||||||
//
|
bBusy=> ,
|
||||||
// IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
bError=> ,
|
||||||
// _fbSocketSend(bExecute := FALSE);
|
nErrId=> );
|
||||||
// _xEnableReceiveTimeout := TRUE;
|
|
||||||
// _iState := 30;
|
IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
||||||
// END_IF
|
_fbSocketSend(bExecute := FALSE);
|
||||||
//
|
_xEnableReceiveTimeout := TRUE;
|
||||||
// IF _fbSocketSend.bError THEN
|
_iState := 30;
|
||||||
// _fbSocketSend(bExecute := FALSE);
|
END_IF
|
||||||
// _iState := 90;
|
|
||||||
// END_IF
|
IF _fbSocketSend.bError THEN
|
||||||
//
|
_fbSocketSend(bExecute := FALSE);
|
||||||
// // Wait for response
|
_iState := 90;
|
||||||
// 30:
|
END_IF
|
||||||
// // Received a response
|
|
||||||
// IF _xCmdReceived THEN
|
// Wait for response
|
||||||
// _xCmdReceived := FALSE;
|
30:
|
||||||
// _xEnableReceiveTimeout := FALSE;
|
// Received a response
|
||||||
// _uiRetries := 0;
|
IF _xCmdReceived THEN
|
||||||
// _iState := 40;
|
_xCmdReceived := FALSE;
|
||||||
// END_IF
|
_xEnableReceiveTimeout := FALSE;
|
||||||
//
|
_uiRetries := 0;
|
||||||
// // Didnt receive command ack in time
|
_xRunSMAgain := TRUE;
|
||||||
// // So resend the command if max retries are not reached
|
_iState := 40;
|
||||||
// IF _tonReceiveTimeout.Q THEN
|
END_IF
|
||||||
// _xEnableReceiveTimeout := FALSE;
|
|
||||||
// _uiRetries := _uiRetries + 1;
|
// Didnt receive command ack in time
|
||||||
//
|
// So resend the command if max retries are not reached
|
||||||
// // Check if we reached the max number of retries
|
IF _tonReceiveTimeout.Q THEN
|
||||||
// IF _uiRetries > MAX_RETRIES THEN
|
_xEnableReceiveTimeout := FALSE;
|
||||||
// _iState := 90;
|
_uiRetries := _uiRetries + 1;
|
||||||
// ELSE
|
|
||||||
// // Retry by sendind command again
|
// Check if we reached the max number of retries
|
||||||
// _iState := 20;
|
IF _uiRetries > MAX_RETRIES THEN
|
||||||
// END_IF
|
_iState := 90;
|
||||||
// END_IF
|
ELSE
|
||||||
//
|
// Retry by sendind command again
|
||||||
// // Check response
|
_iState := 20;
|
||||||
// 40:
|
END_IF
|
||||||
// // Check for cmd id
|
END_IF
|
||||||
// IF (TO_STRING(_sReceivedResponse[0]) <> UINT_TO_STRING(_uiCmdId)) THEN
|
|
||||||
// // Wrong command id received
|
// Check response
|
||||||
// _iState := 900;
|
40:
|
||||||
// END_IF
|
// Check for cmd id
|
||||||
//
|
IF (_sReceivedResponse[0] <> UINT_TO_BYTE(_uiCmdId+16#30)) THEN
|
||||||
// // For for response indicator
|
// Wrong command id received
|
||||||
// IF _sReceivedResponse[1] <> F_ToASC('<') THEN
|
_iState := 900;
|
||||||
// // Wrong response indicator
|
END_IF
|
||||||
// _iState := 901;
|
|
||||||
// END_IF
|
// For for response indicator
|
||||||
//
|
IF _sReceivedResponse[1] <> F_ToASC('<') THEN
|
||||||
// // Check for correct cmd
|
// Wrong response indicator
|
||||||
// _xReceivedResponseOk := TRUE;
|
_iState := 901;
|
||||||
// FOR _diCounter := 2 TO 10 DO
|
END_IF
|
||||||
// IF _sReceivedResponse[_diCounter] <> _sCmd[_diCounter] THEN
|
|
||||||
// _xReceivedResponseOk := FALSE;
|
// Check for correct cmd
|
||||||
// EXIT;
|
_xReceivedResponseOk := TRUE;
|
||||||
// END_IF
|
FOR _diCounter := 2 TO 10 DO
|
||||||
// END_FOR
|
IF _sReceivedResponse[_diCounter] <> _sCmd[_diCounter] THEN
|
||||||
//
|
_xReceivedResponseOk := FALSE;
|
||||||
// IF _xReceivedResponseOk THEN
|
EXIT;
|
||||||
// _xBusy := FALSE;
|
END_IF
|
||||||
// _iState := 10;
|
END_FOR
|
||||||
// ELSE
|
|
||||||
// _iState := 902;
|
IF _xReceivedResponseOk THEN
|
||||||
// END_IF
|
_xBusy := FALSE;
|
||||||
//
|
_iState := 10;
|
||||||
// 50:
|
ELSE
|
||||||
// // Get command id
|
_iState := 902;
|
||||||
// _uiReceivedCommandId := _sReceivedResponse[0] - 16#30;
|
END_IF
|
||||||
//
|
|
||||||
// // Check if it is a new command
|
// Got command from tray feeder which needs to be acknowledged
|
||||||
// IF (_uiReceivedCommandId <> _uiLastReceivedResponseId) OR (_uiReceivedCommandId = 0) THEN
|
50:
|
||||||
// _uiLastReceivedResponseId := _uiReceivedCommandId;
|
// Copy first 11 bytes
|
||||||
// xNewResponseReady := FALSE;
|
FOR _diCounter := 0 TO 10 DO
|
||||||
//
|
_sAck[_diCounter] := _sReceivedResponse[_diCounter];
|
||||||
// // Send acknowledgement
|
END_FOR
|
||||||
// _iState := 60;
|
|
||||||
// END_IF
|
// Switch command indicator to ack indicator
|
||||||
//
|
_sAck[1] := F_ToASC('<');
|
||||||
// // Prepare ack response
|
|
||||||
// 60:
|
// Check if it is something we need to acknowledge
|
||||||
// FOR _diCounter := 0 TO 10 DO
|
IF _sReceivedResponse[1] = F_ToASC('>') THEN
|
||||||
// _sAck[_diCounter] := _sReceivedResponse[_diCounter];
|
// Get command id
|
||||||
// END_FOR
|
_uiReceivedCommandId := _sReceivedResponse[0] - 16#30;
|
||||||
// _sAck[11] := 0;
|
_xRunSMAgain := TRUE;
|
||||||
//
|
_iState := 60;
|
||||||
// IF _sReceivedResponse[1] = F_ToAsc('>') THEN
|
ELSE
|
||||||
// _iState := 70;
|
_xRunSMAgain := TRUE;
|
||||||
// ELSE
|
_iState := 10;
|
||||||
// _iState := 10;
|
END_IF
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
//
|
// Send ack response
|
||||||
// // Send ack response
|
60:
|
||||||
// 70:
|
// Ack is always 11 bytes long (11 characters)
|
||||||
// _fbSocketSend(
|
_fbSocketSend(
|
||||||
// sSrvNetId:= '',
|
sSrvNetId:= '',
|
||||||
// hSocket:= _hSocket,
|
hSocket:= _hSocket,
|
||||||
// cbLen:= SIZEOF(_sAck),
|
cbLen:= 11,
|
||||||
// pSrc:= ADR(_sAck),
|
pSrc:= ADR(_sAck),
|
||||||
// bExecute:= TRUE,
|
bExecute:= TRUE,
|
||||||
// tTimeout:= _timSendTimeout,
|
tTimeout:= _timSendTimeout,
|
||||||
// bBusy=> ,
|
bBusy=> ,
|
||||||
// bError=> ,
|
bError=> ,
|
||||||
// nErrId=> );
|
nErrId=> );
|
||||||
//
|
|
||||||
// IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
||||||
// _fbSocketSend(bExecute := FALSE);
|
_fbSocketSend(bExecute := FALSE);
|
||||||
// _xEnableReceiveTimeout := TRUE;
|
_xEnableReceiveTimeout := TRUE;
|
||||||
// _xBusy := FALSE;
|
_xBusy := FALSE;
|
||||||
// _iState := 10;
|
_iState := 10;
|
||||||
// END_IF
|
END_IF
|
||||||
//
|
|
||||||
// IF _fbSocketSend.bError THEN
|
IF _fbSocketSend.bError THEN
|
||||||
// _fbSocketSend(bExecute := FALSE);
|
_fbSocketSend(bExecute := FALSE);
|
||||||
// _iState := 90;
|
_iState := 90;
|
||||||
// END_IF
|
END_IF
|
||||||
//
|
|
||||||
// // Error
|
// Error
|
||||||
// 90:
|
90:
|
||||||
// _xError := TRUE;
|
_xError := TRUE;
|
||||||
// _xBusy := FALSE;
|
_xBusy := FALSE;
|
||||||
//
|
|
||||||
// IF xConfirmAlarms THEN
|
IF xConfirmAlarms THEN
|
||||||
// _xError := FALSE;
|
_xError := FALSE;
|
||||||
// _uiRetries := 0;
|
_uiRetries := 0;
|
||||||
// _iState := 0;
|
_iState := 0;
|
||||||
// END_IF
|
END_IF
|
||||||
// END_CASE
|
|
||||||
|
ELSE
|
||||||
|
;
|
||||||
|
END_CASE
|
||||||
|
UNTIL (NOT _xRunSMAgain)
|
||||||
|
END_REPEAT
|
||||||
|
|
||||||
// Copy output buffers to outputs
|
// Copy output buffers to outputs
|
||||||
xConnected := _xConnected;
|
xConnected := _xConnected;
|
||||||
xBusy := _xBusy;
|
xBusy := _xBusy;
|
||||||
xError := _xError;]]></ST>
|
xError := _xError;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
<Method Name="M_Debug" Id="{24e700f8-310e-46c8-98c0-8a10312afeda}">
|
|
||||||
<Declaration><![CDATA[METHOD M_Debug
|
|
||||||
VAR_INPUT
|
|
||||||
END_VAR
|
|
||||||
]]></Declaration>
|
|
||||||
<Implementation>
|
|
||||||
<ST><![CDATA[// CASE _iState OF
|
|
||||||
// // Wait for active connection to tray feeder
|
|
||||||
// 0:
|
|
||||||
// IF _xConnected THEN
|
|
||||||
// _iState := 10;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // Connected and idle
|
|
||||||
// 10:
|
|
||||||
// // Got to disconnected state if connection is lost
|
|
||||||
// IF (NOT _xConnected) THEN
|
|
||||||
// _iState := 0;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// IF _xSendCmd THEN
|
|
||||||
// _xSendCmd := FALSE;
|
|
||||||
// _xBusy := TRUE;
|
|
||||||
// _iState := 20;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // Send command
|
|
||||||
// 20:
|
|
||||||
// _fbSocketSend(
|
|
||||||
// sSrvNetId:= '',
|
|
||||||
// hSocket:= _hSocket,
|
|
||||||
// cbLen:= SIZEOF(_sCmd),
|
|
||||||
// pSrc:= ADR(_sCmd),
|
|
||||||
// bExecute:= TRUE,
|
|
||||||
// tTimeout:= _timSendTimeout,
|
|
||||||
// bBusy=> ,
|
|
||||||
// bError=> ,
|
|
||||||
// nErrId=> );
|
|
||||||
//
|
|
||||||
// IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
|
||||||
// _fbSocketSend(bExecute := FALSE);
|
|
||||||
// _xEnableReceiveTimeout := TRUE;
|
|
||||||
// _iState := 30;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// IF _fbSocketSend.bError THEN
|
|
||||||
// _fbSocketSend(bExecute := FALSE);
|
|
||||||
// _iState := 90;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // Wait for response
|
|
||||||
// 30:
|
|
||||||
// // Received a response
|
|
||||||
// IF _xCmdReceived THEN
|
|
||||||
// _xCmdReceived := FALSE;
|
|
||||||
// _xEnableReceiveTimeout := FALSE;
|
|
||||||
// _uiRetries := 0;
|
|
||||||
// _iState := 40;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // Didnt receive command ack in time
|
|
||||||
// // So resend the command if max retries are not reached
|
|
||||||
// IF _tonReceiveTimeout.Q THEN
|
|
||||||
// _xEnableReceiveTimeout := FALSE;
|
|
||||||
// _uiRetries := _uiRetries + 1;
|
|
||||||
//
|
|
||||||
// // Check if we reached the max number of retries
|
|
||||||
// IF _uiRetries > MAX_RETRIES THEN
|
|
||||||
// _iState := 90;
|
|
||||||
// ELSE
|
|
||||||
// // Retry by sendind command again
|
|
||||||
// _iState := 20;
|
|
||||||
// END_IF
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // Check response
|
|
||||||
// 40:
|
|
||||||
// // Check for cmd id
|
|
||||||
// IF (TO_STRING(_asReceivedResponse[0]) <> UINT_TO_STRING(_uiCmdId)) THEN
|
|
||||||
// // Wrong command id received
|
|
||||||
// _iState := 900;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // For for response indicator
|
|
||||||
// IF _asReceivedResponse[1] <> F_ToASC('<') THEN
|
|
||||||
// // Wrong response indicator
|
|
||||||
// _iState := 901;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // Check for correct cmd
|
|
||||||
// _xReceivedResponseOk := TRUE;
|
|
||||||
// FOR _diCounter := 2 TO 10 DO
|
|
||||||
// IF _asReceivedResponse[_diCounter] <> _sCmd[_diCounter] THEN
|
|
||||||
// _xReceivedResponseOk := FALSE;
|
|
||||||
// EXIT;
|
|
||||||
// END_IF
|
|
||||||
// END_FOR
|
|
||||||
//
|
|
||||||
// IF _xReceivedResponseOk THEN
|
|
||||||
// _xBusy := FALSE;
|
|
||||||
// _iState := 10;
|
|
||||||
// ELSE
|
|
||||||
// _iState := 902;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// 50:
|
|
||||||
// // Get command id
|
|
||||||
// _uiReceivedCommandId := _asReceivedResponse[0] - 16#30;
|
|
||||||
//
|
|
||||||
// // Check if it is a new command
|
|
||||||
// IF (_uiReceivedCommandId <> _uiLastReceivedResponseId) OR (_uiReceivedCommandId = 0) THEN
|
|
||||||
// _uiLastReceivedResponseId := _uiReceivedCommandId;
|
|
||||||
// xNewResponseReady := FALSE;
|
|
||||||
//
|
|
||||||
// // Send acknowledgement
|
|
||||||
// _iState := 60;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // Prepare ack response
|
|
||||||
// 60:
|
|
||||||
// FOR _diCounter := 0 TO 10 DO
|
|
||||||
// _sAck[_diCounter] := _asReceivedResponse[_diCounter];
|
|
||||||
// END_FOR
|
|
||||||
// _sAck[11] := 0;
|
|
||||||
//
|
|
||||||
// IF _asReceivedResponse[1] = F_ToAsc('>') THEN
|
|
||||||
// _iState := 70;
|
|
||||||
// ELSE
|
|
||||||
// _iState := 10;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// // Send ack response
|
|
||||||
// 70:
|
|
||||||
// _fbSocketSend(
|
|
||||||
// sSrvNetId:= '',
|
|
||||||
// hSocket:= _hSocket,
|
|
||||||
// cbLen:= SIZEOF(_sAck),
|
|
||||||
// pSrc:= ADR(_sAck),
|
|
||||||
// bExecute:= TRUE,
|
|
||||||
// tTimeout:= _timSendTimeout,
|
|
||||||
// bBusy=> ,
|
|
||||||
// bError=> ,
|
|
||||||
// nErrId=> );
|
|
||||||
//
|
|
||||||
// IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
|
||||||
// _fbSocketSend(bExecute := FALSE);
|
|
||||||
// _xEnableReceiveTimeout := TRUE;
|
|
||||||
// _xBusy := FALSE;
|
|
||||||
// _iState := 10;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// IF _fbSocketSend.bError THEN
|
|
||||||
// _fbSocketSend(bExecute := FALSE);
|
|
||||||
// _iState := 90;
|
|
||||||
// END_IF
|
|
||||||
//
|
|
||||||
// // Error
|
|
||||||
// 90:
|
|
||||||
// _xError := TRUE;
|
|
||||||
// _xBusy := FALSE;
|
|
||||||
//
|
|
||||||
// IF xConfirmAlarms THEN
|
|
||||||
// _xError := FALSE;
|
|
||||||
// _uiRetries := 0;
|
|
||||||
// _iState := 0;
|
|
||||||
// END_IF
|
|
||||||
// END_CASE]]></ST>
|
|
||||||
</Implementation>
|
|
||||||
</Method>
|
|
||||||
<Method Name="M_GetResponse" Id="{48f8719d-7ed0-4fb1-824a-0bf475fcfc2c}">
|
|
||||||
<Declaration><![CDATA[METHOD M_GetResponse : STRING
|
|
||||||
VAR
|
|
||||||
_sTmp : STRING(255);
|
|
||||||
END_VAR
|
|
||||||
]]></Declaration>
|
|
||||||
<Implementation>
|
|
||||||
<ST><![CDATA[xNewResponseReady := FALSE;
|
|
||||||
//MEMCPY(destAddr := ADR(_sTmp), ADR(_asReceivedResponse) + 2, n := INT_TO_UDINT(LEN(_asReceivedResponse) - 2));
|
|
||||||
M_GetResponse := _sTmp;]]></ST>
|
|
||||||
</Implementation>
|
|
||||||
</Method>
|
|
||||||
<Method Name="M_SendCmd" Id="{d00a8c1a-c183-4659-9c9e-be5b30566b7c}">
|
<Method Name="M_SendCmd" Id="{d00a8c1a-c183-4659-9c9e-be5b30566b7c}">
|
||||||
<Declaration><![CDATA[METHOD M_SendCmd : BOOL
|
<Declaration><![CDATA[METHOD M_SendCmd : BOOL
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
@@ -541,6 +364,7 @@ END_IF
|
|||||||
// Create command with id
|
// Create command with id
|
||||||
_sCmd := CONCAT(UINT_TO_STRING(_uiCmdId), '>');
|
_sCmd := CONCAT(UINT_TO_STRING(_uiCmdId), '>');
|
||||||
_sCmd := CONCAT(_sCmd, sCmd);
|
_sCmd := CONCAT(_sCmd, sCmd);
|
||||||
|
_iCmdLength := LEN(sCmd);
|
||||||
|
|
||||||
// start sendind command state machine
|
// start sendind command state machine
|
||||||
_xSendCmd := TRUE;
|
_xSendCmd := TRUE;
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ END_VAR
|
|||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_sIpAddr : STRING;
|
_sIpAddr : STRING(15);
|
||||||
_udiPort : UDINT;
|
_udiPort : UDINT;
|
||||||
|
|
||||||
_fbProtocolHandler : FB_TFProtocol;
|
_fbProtocolHandler : FB_TFProtocol;
|
||||||
|
|
||||||
_xTest : BOOL;
|
_xTest : BOOL;
|
||||||
_xSendResult : BOOL;
|
_xSendResult : BOOL;
|
||||||
_sCmd : STRING := 'STAT-FEED';
|
_sCmd : STRING := 'STAT-FEED:';
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
@@ -50,7 +50,7 @@ VAR_INPUT
|
|||||||
bInitRetains: BOOL; // TRUE: Die Retain-Variablen werden initialisiert (Reset warm / Reset kalt)
|
bInitRetains: BOOL; // TRUE: Die Retain-Variablen werden initialisiert (Reset warm / Reset kalt)
|
||||||
bInCopyCode: BOOL; // TRUE: Die Instanz wird danach in den Kopiercode kopiert (Online-Change)
|
bInCopyCode: BOOL; // TRUE: Die Instanz wird danach in den Kopiercode kopiert (Online-Change)
|
||||||
|
|
||||||
sIPAddr : STRING;
|
sIPAddr : STRING(15);
|
||||||
udiPort : UDINT;
|
udiPort : UDINT;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<GVL Name="GVL_SCADA" Id="{bb0d1251-7abb-4971-bbc9-72bee3b1c668}">
|
<GVL Name="GVL_SCADA" Id="{bb0d1251-7abb-4971-bbc9-72bee3b1c668}">
|
||||||
<Declaration><![CDATA[{attribute 'qualified_only'}
|
<Declaration><![CDATA[{attribute 'qualified_only'}
|
||||||
|
{attribute 'analysis' := '-43'}
|
||||||
VAR_GLOBAL
|
VAR_GLOBAL
|
||||||
xErrAck : BOOL;
|
xErrAck : BOOL;
|
||||||
|
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<TcPlcObject Version="1.1.0.1">
|
|
||||||
<POU Name="FB_PI" Id="{d504557e-7fd7-4784-a00a-5d7d1bed0c95}" SpecialFunc="None">
|
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_PI
|
|
||||||
VAR_INPUT
|
|
||||||
rSP : REAL;
|
|
||||||
rPV : REAL;
|
|
||||||
rKp : REAL;
|
|
||||||
rTn : REAL;
|
|
||||||
|
|
||||||
xEnable : BOOL;
|
|
||||||
xSaturatedUpper : BOOL := FALSE;
|
|
||||||
xSaturatedLower : BOOL := FALSE;
|
|
||||||
END_VAR
|
|
||||||
VAR_OUTPUT
|
|
||||||
rMV : REAL;
|
|
||||||
END_VAR
|
|
||||||
VAR
|
|
||||||
|
|
||||||
_rError : REAL := 0.0;
|
|
||||||
_rIntegral : REAL := 0.0;
|
|
||||||
_rProportinal : REAL := 0.0;
|
|
||||||
|
|
||||||
_rDeltaIntegral : REAL := 0.0;
|
|
||||||
|
|
||||||
_fbGetCurTaskIdx : GETCURTASKINDEX;
|
|
||||||
_rT : REAL;
|
|
||||||
|
|
||||||
_xFirstCylce : BOOL := TRUE;
|
|
||||||
END_VAR
|
|
||||||
]]></Declaration>
|
|
||||||
<Implementation>
|
|
||||||
<ST><![CDATA[IF _xFirstCylce THEN
|
|
||||||
_xFirstCylce := FALSE;
|
|
||||||
|
|
||||||
// Get current task time
|
|
||||||
_fbGetCurTaskIdx();
|
|
||||||
_rT := LREAL_TO_REAL(UDINT_TO_LREAL(TwinCAT_SystemInfoVarList._TASKInfo[_fbGetCurTaskIdx.index].CycleTime) * 10E-5);
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
IF xEnable THEN
|
|
||||||
_rError := rSP - rPV;
|
|
||||||
ELSE
|
|
||||||
_rError := 0.0;
|
|
||||||
_rIntegral := 0.0;
|
|
||||||
rMV := 0.0;
|
|
||||||
RETURN;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
// Calculate proportinal part
|
|
||||||
_rProportinal := rKp * _rError;
|
|
||||||
|
|
||||||
// Calculate controller output
|
|
||||||
rMV := _rProportinal + _rIntegral;
|
|
||||||
|
|
||||||
// Calculate integral for this step
|
|
||||||
IF rTn <> 0 THEN
|
|
||||||
_rDeltaIntegral := (rKp * _rT / rTn) * _rError;
|
|
||||||
ELSE
|
|
||||||
_rDeltaIntegral := 0;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
// Only add new integral part if we are going away from the upper or lower bound
|
|
||||||
IF (xSaturatedUpper AND (_rDeltaIntegral > 0.0)) THEN
|
|
||||||
_rDeltaIntegral := 0.0;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF (xSaturatedLower AND (_rDeltaIntegral < 0.0)) THEN
|
|
||||||
_rDeltaIntegral := 0.0;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
// Calculate integral part
|
|
||||||
_rIntegral := _rIntegral + _rDeltaIntegral;
|
|
||||||
|
|
||||||
// Reset integral with deactivated integral time
|
|
||||||
IF (rTn = 0.0) AND (_rIntegral <> 0) THEN
|
|
||||||
_rIntegral := 0.0;
|
|
||||||
END_IF]]></ST>
|
|
||||||
</Implementation>
|
|
||||||
</POU>
|
|
||||||
</TcPlcObject>
|
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PMLa" Id="{16746b45-38ff-4f58-95c8-eb6734adb976}">
|
<DUT Name="ST_PMLa" Id="{16746b45-38ff-4f58-95c8-eb6734adb976}">
|
||||||
<Declaration><![CDATA[TYPE ST_PMLa :
|
<Declaration><![CDATA[{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PMLa :
|
||||||
STRUCT
|
STRUCT
|
||||||
astProductData : ARRAY[0..(GVL_PackML_Conf.MAX_PRODUCT_DATA-1)] OF ST_PackML_ProductData;
|
astProductData : ARRAY[0..(GVL_PackML_Conf.MAX_PRODUCT_DATA-1)] OF ST_PackML_ProductData;
|
||||||
diStopReason : DINT;
|
diStopReason : DINT;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PMLc" Id="{5cf4c850-57ba-42f8-9986-b146207e1b2f}">
|
<DUT Name="ST_PMLc" Id="{5cf4c850-57ba-42f8-9986-b146207e1b2f}">
|
||||||
<Declaration><![CDATA[TYPE ST_PMLc :
|
<Declaration><![CDATA[{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PMLc :
|
||||||
STRUCT
|
STRUCT
|
||||||
eUnitMode : E_PackMLUnitMode;
|
eUnitMode : E_PackMLUnitMode;
|
||||||
xUnitModeChangeRequest : BOOL;
|
xUnitModeChangeRequest : BOOL;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PMLs" Id="{dace328e-4599-42b5-ac3b-2a705ec8e2f3}">
|
<DUT Name="ST_PMLs" Id="{dace328e-4599-42b5-ac3b-2a705ec8e2f3}">
|
||||||
<Declaration><![CDATA[TYPE ST_PMLs :
|
<Declaration><![CDATA[{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PMLs :
|
||||||
STRUCT
|
STRUCT
|
||||||
eUnitModeCurrent : E_PackMLUnitMode;
|
eUnitModeCurrent : E_PackMLUnitMode;
|
||||||
eStateCurrent : E_PackMLState;
|
eStateCurrent : E_PackMLState;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PackMLPI" Id="{e7198eb6-2cd3-41c0-be59-e7dbcf10a569}">
|
<DUT Name="ST_PackMLPI" Id="{e7198eb6-2cd3-41c0-be59-e7dbcf10a569}">
|
||||||
<Declaration><![CDATA[TYPE ST_PackMLPI :
|
<Declaration><![CDATA[{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PackMLPI :
|
||||||
STRUCT
|
STRUCT
|
||||||
astParameterReal : ARRAY[0..(GVL_PackML_Conf.MAX_PARAMS-1)] OF ST_PackMLParamREAL;
|
astParameterReal : ARRAY[0..(GVL_PackML_Conf.MAX_PARAMS-1)] OF ST_PackMLParamREAL;
|
||||||
astParameterString : ARRAY[0..(GVL_PackML_Conf.MAX_PARAMS-1)] OF ST_PackMLParamSTRING;
|
astParameterString : ARRAY[0..(GVL_PackML_Conf.MAX_PARAMS-1)] OF ST_PackMLParamSTRING;
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PackMLParamDINT" Id="{f9801bf5-a73d-450f-b9fc-a5d8229e4946}">
|
<DUT Name="ST_PackMLParamDINT" Id="{f9801bf5-a73d-450f-b9fc-a5d8229e4946}">
|
||||||
<Declaration><![CDATA[TYPE ST_PackMLParamDINT :
|
<Declaration><![CDATA[{attribute 'naming' := 'off'}
|
||||||
|
{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PackMLParamDINT :
|
||||||
STRUCT
|
STRUCT
|
||||||
diID : DINT;
|
ID : DINT;
|
||||||
sName : STRING;
|
Name : STRING;
|
||||||
sUnit : STRING(6);
|
Unit : STRING(6);
|
||||||
Value : DINT;
|
Value : DINT;
|
||||||
END_STRUCT
|
END_STRUCT
|
||||||
END_TYPE
|
END_TYPE
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PackMLParamLREAL" Id="{195fabe8-44c0-43ec-8434-75e38b68efb7}">
|
<DUT Name="ST_PackMLParamLREAL" Id="{195fabe8-44c0-43ec-8434-75e38b68efb7}">
|
||||||
<Declaration><![CDATA[TYPE ST_PackMLParamLREAL :
|
<Declaration><![CDATA[{attribute 'naming' := 'off'}
|
||||||
|
{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PackMLParamLREAL :
|
||||||
STRUCT
|
STRUCT
|
||||||
diID : DINT;
|
ID : DINT;
|
||||||
sName : STRING;
|
Name : STRING;
|
||||||
sUnit : STRING(6);
|
Unit : STRING(6);
|
||||||
Value : LREAL;
|
Value : LREAL;
|
||||||
END_STRUCT
|
END_STRUCT
|
||||||
END_TYPE
|
END_TYPE
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PackMLParamREAL" Id="{373303ba-9979-4979-a439-c899a36baa12}">
|
<DUT Name="ST_PackMLParamREAL" Id="{373303ba-9979-4979-a439-c899a36baa12}">
|
||||||
<Declaration><![CDATA[TYPE ST_PackMLParamREAL :
|
<Declaration><![CDATA[{attribute 'naming' := 'off'}
|
||||||
|
{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PackMLParamREAL :
|
||||||
STRUCT
|
STRUCT
|
||||||
diID : DINT;
|
ID : DINT;
|
||||||
sName : STRING;
|
Name : STRING;
|
||||||
sUnit : STRING(6);
|
Unit : STRING(6);
|
||||||
Value : REAL;
|
Value : REAL;
|
||||||
END_STRUCT
|
END_STRUCT
|
||||||
END_TYPE
|
END_TYPE
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PackMLParamSTRING" Id="{85353d3e-e4c9-4e83-857e-8ce7ed43abaf}">
|
<DUT Name="ST_PackMLParamSTRING" Id="{85353d3e-e4c9-4e83-857e-8ce7ed43abaf}">
|
||||||
<Declaration><![CDATA[TYPE ST_PackMLParamSTRING :
|
<Declaration><![CDATA[{attribute 'naming' := 'off'}
|
||||||
|
{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PackMLParamSTRING :
|
||||||
STRUCT
|
STRUCT
|
||||||
diID : DINT;
|
ID : DINT;
|
||||||
sName : STRING;
|
Name : STRING;
|
||||||
sUnit : STRING(6);
|
Unit : STRING(6);
|
||||||
Value : STRING;
|
Value : STRING;
|
||||||
END_STRUCT
|
END_STRUCT
|
||||||
END_TYPE
|
END_TYPE
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PackMLRecipe" Id="{b453a4b5-bb40-4669-97f2-8d8ab8d3dc26}">
|
<DUT Name="ST_PackMLRecipe" Id="{b453a4b5-bb40-4669-97f2-8d8ab8d3dc26}">
|
||||||
<Declaration><![CDATA[TYPE ST_PackMLRecipe :
|
<Declaration><![CDATA[{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PackMLRecipe :
|
||||||
STRUCT
|
STRUCT
|
||||||
diID : DINT;
|
diID : DINT;
|
||||||
sName : STRING;
|
sName : STRING;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<DUT Name="ST_PackML_ProductData" Id="{2af30e31-0927-41d2-9df4-7ed222070c13}">
|
<DUT Name="ST_PackML_ProductData" Id="{2af30e31-0927-41d2-9df4-7ed222070c13}">
|
||||||
<Declaration><![CDATA[TYPE ST_PackML_ProductData :
|
<Declaration><![CDATA[{attribute 'analysis' := '-33'}
|
||||||
|
TYPE ST_PackML_ProductData :
|
||||||
STRUCT
|
STRUCT
|
||||||
diProcessedCount : DINT;
|
diProcessedCount : DINT;
|
||||||
diDefectiveCount : DINT;
|
diDefectiveCount : DINT;
|
||||||
|
|||||||
@@ -4,14 +4,14 @@
|
|||||||
<Declaration><![CDATA[TYPE ST_PackMLStateMachineConfig :
|
<Declaration><![CDATA[TYPE ST_PackMLStateMachineConfig :
|
||||||
STRUCT
|
STRUCT
|
||||||
xClearingDisabled : BOOL;
|
xClearingDisabled : BOOL;
|
||||||
// xStoppedDisabled : BOOL;
|
// xStoppedDisabled required state
|
||||||
xStartingDisabled : BOOL;
|
xStartingDisabled : BOOL;
|
||||||
// xIdleDisabled : BOOL;
|
// xIdleDisabled required state
|
||||||
xSuspededDisabled : BOOL;
|
xSuspededDisabled : BOOL;
|
||||||
// xExecuteDisabled : BOOL;
|
// xExecuteDisabled required state
|
||||||
xStoppingDisabled : BOOL;
|
xStoppingDisabled : BOOL;
|
||||||
xAbortingDisabled : BOOL;
|
xAbortingDisabled : BOOL;
|
||||||
// xAbortedDisabled : BOOL;
|
// xAbortedDisabled required state
|
||||||
xHoldingDisabled : BOOL;
|
xHoldingDisabled : BOOL;
|
||||||
xHeldDisabled : BOOL;
|
xHeldDisabled : BOOL;
|
||||||
xUnholdingDisabled : BOOL;
|
xUnholdingDisabled : BOOL;
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<GVL Name="GVL_PackML_Conf" Id="{b46d8e14-5a19-467d-bb78-56321e43ef47}">
|
<GVL Name="GVL_PackML_Conf" Id="{b46d8e14-5a19-467d-bb78-56321e43ef47}">
|
||||||
<Declaration><![CDATA[{attribute 'qualified_only'}
|
<Declaration><![CDATA[{attribute 'qualified_only'}
|
||||||
|
{attribute 'naming' := 'off'}
|
||||||
|
{attribute 'analysis' := '-43'}
|
||||||
VAR_GLOBAL CONSTANT
|
VAR_GLOBAL CONSTANT
|
||||||
MAX_PARAMS : UINT := 10;
|
MAX_PARAMS : UINT := 10;
|
||||||
MAX_PRODUCT_DATA : UINT := 10;
|
MAX_PRODUCT_DATA : UINT := 10;
|
||||||
|
|||||||
@@ -28,9 +28,6 @@ VAR
|
|||||||
// Internal unit mode
|
// Internal unit mode
|
||||||
_eMode : E_PackMLUnitMode;
|
_eMode : E_PackMLUnitMode;
|
||||||
|
|
||||||
// Internal unit state
|
|
||||||
_eState : E_PackMLState;
|
|
||||||
|
|
||||||
// Last state
|
// Last state
|
||||||
_eLastState : E_PackMLState;
|
_eLastState : E_PackMLState;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<POU Name="FB_PackMLStateMachine" Id="{784ceb84-1721-424f-89d1-422a24198e57}" SpecialFunc="None">
|
<POU Name="FB_PackMLStateMachine" Id="{784ceb84-1721-424f-89d1-422a24198e57}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_PackMLStateMachine
|
<Declaration><![CDATA[{attribute 'analysis' := '-178'}
|
||||||
|
FUNCTION_BLOCK FB_PackMLStateMachine
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
eMode : E_PackMLUnitMode;
|
eMode : E_PackMLUnitMode;
|
||||||
eCmd : E_PackMLCmd;
|
eCmd : E_PackMLCmd;
|
||||||
@@ -419,6 +420,9 @@ END_VAR
|
|||||||
|
|
||||||
E_PackMLState.CLEARING:
|
E_PackMLState.CLEARING:
|
||||||
_eState := E_PackMLState.STOPPED;
|
_eState := E_PackMLState.STOPPED;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
;
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
eState := _eState;]]></ST>
|
eState := _eState;]]></ST>
|
||||||
|
|||||||
2585
PLC/PLC.plcproj
2585
PLC/PLC.plcproj
File diff suppressed because it is too large
Load Diff
312
PLC/PLC.tmc
312
PLC/PLC.tmc
File diff suppressed because one or more lines are too long
@@ -171,7 +171,7 @@
|
|||||||
</ArrayInfo>
|
</ArrayInfo>
|
||||||
</DataType>
|
</DataType>
|
||||||
<DataType>
|
<DataType>
|
||||||
<Name GUID="{18071995-0000-0000-0000-002000000006}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..5] OF BIT</Name>
|
<Name GUID="{18071995-0000-0000-0000-002000000006}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..5] OF BIT</Name>
|
||||||
<BitSize>6</BitSize>
|
<BitSize>6</BitSize>
|
||||||
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
||||||
<ArrayInfo>
|
<ArrayInfo>
|
||||||
@@ -326,7 +326,7 @@
|
|||||||
</ArrayInfo>
|
</ArrayInfo>
|
||||||
</DataType>
|
</DataType>
|
||||||
<DataType>
|
<DataType>
|
||||||
<Name GUID="{18071995-0000-0000-0000-002000000004}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..3] OF BIT</Name>
|
<Name GUID="{18071995-0000-0000-0000-002000000004}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..3] OF BIT</Name>
|
||||||
<BitSize>4</BitSize>
|
<BitSize>4</BitSize>
|
||||||
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
||||||
<ArrayInfo>
|
<ArrayInfo>
|
||||||
@@ -371,7 +371,7 @@
|
|||||||
</ArrayInfo>
|
</ArrayInfo>
|
||||||
</DataType>
|
</DataType>
|
||||||
<DataType>
|
<DataType>
|
||||||
<Name GUID="{18071995-0000-0000-0000-00200000000D}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..12] OF BIT</Name>
|
<Name GUID="{18071995-0000-0000-0000-00200000000D}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..12] OF BIT</Name>
|
||||||
<BitSize>13</BitSize>
|
<BitSize>13</BitSize>
|
||||||
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
||||||
<ArrayInfo>
|
<ArrayInfo>
|
||||||
@@ -380,7 +380,7 @@
|
|||||||
</ArrayInfo>
|
</ArrayInfo>
|
||||||
</DataType>
|
</DataType>
|
||||||
<DataType>
|
<DataType>
|
||||||
<Name GUID="{18071995-0000-0000-0000-00200000000E}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..13] OF BIT</Name>
|
<Name GUID="{18071995-0000-0000-0000-00200000000E}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..13] OF BIT</Name>
|
||||||
<BitSize>14</BitSize>
|
<BitSize>14</BitSize>
|
||||||
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
||||||
<ArrayInfo>
|
<ArrayInfo>
|
||||||
@@ -389,7 +389,7 @@
|
|||||||
</ArrayInfo>
|
</ArrayInfo>
|
||||||
</DataType>
|
</DataType>
|
||||||
<DataType>
|
<DataType>
|
||||||
<Name GUID="{18071995-0000-0000-0000-00200000000F}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..14] OF BIT</Name>
|
<Name GUID="{18071995-0000-0000-0000-00200000000F}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..14] OF BIT</Name>
|
||||||
<BitSize>15</BitSize>
|
<BitSize>15</BitSize>
|
||||||
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
||||||
<ArrayInfo>
|
<ArrayInfo>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.20" ClassName="CDevDpRamDef" SubType="121">
|
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.20" ClassName="CDevDpRamDef" SubType="121">
|
||||||
<Device Id="11" DevType="121">
|
<Device Id="11" Disabled="true" DevType="121">
|
||||||
<Name>__FILENAME__</Name>
|
<Name>__FILENAME__</Name>
|
||||||
<AddressInfo>
|
<AddressInfo>
|
||||||
<Pci>
|
<Pci>
|
||||||
|
|||||||
@@ -6,24 +6,24 @@
|
|||||||
<UnrestoredVarLinks ImportTime="2026-02-01T12:34:23">
|
<UnrestoredVarLinks ImportTime="2026-02-01T12:34:23">
|
||||||
<OwnerA Name="OutputSrc" Prefix="TIPC^PLC^PLC Instance" Type="2">
|
<OwnerA Name="OutputSrc" Prefix="TIPC^PLC^PLC Instance" Type="2">
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM01 (EX260-SEC1)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM01 (EX260-SEC1)">
|
||||||
<Link VarA="PRG_Main._fbEtcher2._xCloseDoor" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[1]" Size="1" RestoreInfo="ANotFound"/>
|
<Link VarA="PRG_Main._fbEtcher2.xCloseDoor" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[1]" Size="1" RestoreInfo="ANotFound"/>
|
||||||
<Link VarA="PRG_Main._fbEtcher2._xOpenDoor" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[0]" Size="1" RestoreInfo="ANotFound"/>
|
<Link VarA="PRG_Main._fbEtcher2.xOpenDoor" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[0]" Size="1" RestoreInfo="ANotFound"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
</UnrestoredVarLinks>
|
</UnrestoredVarLinks>
|
||||||
<UnrestoredVarLinks ImportTime="2026-02-04T18:53:56">
|
<UnrestoredVarLinks ImportTime="2026-02-04T18:53:56">
|
||||||
<OwnerA Name="InputDst" Prefix="TIPC^PLC^PLC Instance" Type="1">
|
<OwnerA Name="InputDst" Prefix="TIPC^PLC^PLC Instance" Type="1">
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
||||||
<Link VarA="PRG_Main._fbAligner._rXOffset" TypeA="REAL" InOutA="0" GuidA="{18071995-0000-0000-0000-00000000000D}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7" RestoreInfo="ANotFound"/>
|
<Link VarA="PRG_Main._fbAligner.rXOffset" TypeA="REAL" InOutA="0" GuidA="{18071995-0000-0000-0000-00000000000D}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7" RestoreInfo="ANotFound"/>
|
||||||
<Link VarA="PRG_Main._fbAligner._rYOffset" TypeA="REAL" InOutA="0" GuidA="{18071995-0000-0000-0000-00000000000D}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8" RestoreInfo="ANotFound"/>
|
<Link VarA="PRG_Main._fbAligner.rYOffset" TypeA="REAL" InOutA="0" GuidA="{18071995-0000-0000-0000-00000000000D}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8" RestoreInfo="ANotFound"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
</UnrestoredVarLinks>
|
</UnrestoredVarLinks>
|
||||||
<UnrestoredVarLinks ImportTime="2026-02-05T10:33:22">
|
<UnrestoredVarLinks ImportTime="2026-02-05T10:33:22">
|
||||||
<OwnerA Name="InputDst" Prefix="TIPC^PLC^PLC Instance" Type="1">
|
<OwnerA Name="InputDst" Prefix="TIPC^PLC^PLC Instance" Type="1">
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
||||||
<Link VarA="PRG_Main._fbAligner._udiXOffset" TypeA="UDINT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000008}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7" RestoreInfo="TypeMismatch" OldTypeA="UDINT" OldGuidA="{18071995-0000-0000-0000-000000000008}" NewTypeA="DINT" NewGuidA="{18071995-0000-0000-0000-000000000009}"/>
|
<Link VarA="PRG_Main._fbAligner.diXOffset" TypeA="UDINT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000008}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7" RestoreInfo="TypeMismatch" OldTypeA="UDINT" OldGuidA="{18071995-0000-0000-0000-000000000008}" NewTypeA="DINT" NewGuidA="{18071995-0000-0000-0000-000000000009}"/>
|
||||||
<Link VarA="PRG_Main._fbAligner._udiYOffset" TypeA="UDINT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000008}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8" RestoreInfo="TypeMismatch" OldTypeA="UDINT" OldGuidA="{18071995-0000-0000-0000-000000000008}" NewTypeA="DINT" NewGuidA="{18071995-0000-0000-0000-000000000009}"/>
|
<Link VarA="PRG_Main._fbAligner.diYOffset" TypeA="UDINT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000008}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8" RestoreInfo="TypeMismatch" OldTypeA="UDINT" OldGuidA="{18071995-0000-0000-0000-000000000008}" NewTypeA="DINT" NewGuidA="{18071995-0000-0000-0000-000000000009}"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
</UnrestoredVarLinks>
|
</UnrestoredVarLinks>
|
||||||
@@ -45,89 +45,45 @@
|
|||||||
<Mappings>
|
<Mappings>
|
||||||
<OwnerA>
|
<OwnerA>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._udiXOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner.diXOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._udiYOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner.diYOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 44 (EX260-SEC1)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 44 (EX260-SEC1)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseDoor1" VarB="Byte 0^Output[3]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester.xCloseDoor1" VarB="Byte 0^Output[3]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseDoor2" VarB="Byte 0^Output[1]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester.xCloseDoor2" VarB="Byte 0^Output[1]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xOpenDoor1" VarB="Byte 0^Output[2]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester.xOpenDoor1" VarB="Byte 0^Output[2]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xOpenDoor2" VarB="Byte 0^Output[0]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester.xOpenDoor2" VarB="Byte 0^Output[0]" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 7 (EX600-SEC#)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 7 (EX600-SEC#)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._xDisableVacuum" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner disable vacuum" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner.xActivateVacuum" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner enable vacuum" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._xEnableVacuum" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner enable vacuum" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner.xDeactivateVacuum" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner disable vacuum" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 47 (EL2004)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 47 (EL2004)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbHeatingPlate._xEnableHotplate" VarB="Channel 1^HotplateControl" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbHeatingPlate.xEnableHotplate" VarB="Channel 1^HotplateControl" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 48 (EL3202)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 48 (EL3202)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbHeatingPlate._fbTempSensor.iAnalogValue" VarB="RTD Inputs Channel 1^HOTPLATE_CurrentTemp"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbHeatingPlate._fbTempSensor.iAnalogValue" VarB="RTD Inputs Channel 1^HOTPLATE_CurrentTemp"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 49 (EL6021)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 49 (EL6021)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[0]" VarB="COM TxPDO-Map Inputs^Data In 0"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate.stStatus" VarB="COM TxPDO-Map Inputs^Status"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[10]" VarB="COM TxPDO-Map Inputs^Data In 10"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate.stCtrl" VarB="COM RxPDO-Map Outputs^Ctrl"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[11]" VarB="COM TxPDO-Map Inputs^Data In 11"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[12]" VarB="COM TxPDO-Map Inputs^Data In 12"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[13]" VarB="COM TxPDO-Map Inputs^Data In 13"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[14]" VarB="COM TxPDO-Map Inputs^Data In 14"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[15]" VarB="COM TxPDO-Map Inputs^Data In 15"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[16]" VarB="COM TxPDO-Map Inputs^Data In 16"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[17]" VarB="COM TxPDO-Map Inputs^Data In 17"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[18]" VarB="COM TxPDO-Map Inputs^Data In 18"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[19]" VarB="COM TxPDO-Map Inputs^Data In 19"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[1]" VarB="COM TxPDO-Map Inputs^Data In 1"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[20]" VarB="COM TxPDO-Map Inputs^Data In 20"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[21]" VarB="COM TxPDO-Map Inputs^Data In 21"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[2]" VarB="COM TxPDO-Map Inputs^Data In 2"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[3]" VarB="COM TxPDO-Map Inputs^Data In 3"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[4]" VarB="COM TxPDO-Map Inputs^Data In 4"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[5]" VarB="COM TxPDO-Map Inputs^Data In 5"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[6]" VarB="COM TxPDO-Map Inputs^Data In 6"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[7]" VarB="COM TxPDO-Map Inputs^Data In 7"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[8]" VarB="COM TxPDO-Map Inputs^Data In 8"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[9]" VarB="COM TxPDO-Map Inputs^Data In 9"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._stStatus" VarB="COM TxPDO-Map Inputs^Status"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[0]" VarB="COM RxPDO-Map Outputs^Data Out 0"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[10]" VarB="COM RxPDO-Map Outputs^Data Out 10"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[11]" VarB="COM RxPDO-Map Outputs^Data Out 11"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[12]" VarB="COM RxPDO-Map Outputs^Data Out 12"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[13]" VarB="COM RxPDO-Map Outputs^Data Out 13"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[14]" VarB="COM RxPDO-Map Outputs^Data Out 14"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[15]" VarB="COM RxPDO-Map Outputs^Data Out 15"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[16]" VarB="COM RxPDO-Map Outputs^Data Out 16"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[17]" VarB="COM RxPDO-Map Outputs^Data Out 17"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[18]" VarB="COM RxPDO-Map Outputs^Data Out 18"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[19]" VarB="COM RxPDO-Map Outputs^Data Out 19"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[1]" VarB="COM RxPDO-Map Outputs^Data Out 1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[20]" VarB="COM RxPDO-Map Outputs^Data Out 20"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[21]" VarB="COM RxPDO-Map Outputs^Data Out 21"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[2]" VarB="COM RxPDO-Map Outputs^Data Out 2"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[3]" VarB="COM RxPDO-Map Outputs^Data Out 3"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[4]" VarB="COM RxPDO-Map Outputs^Data Out 4"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[5]" VarB="COM RxPDO-Map Outputs^Data Out 5"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[6]" VarB="COM RxPDO-Map Outputs^Data Out 6"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[7]" VarB="COM RxPDO-Map Outputs^Data Out 7"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[8]" VarB="COM RxPDO-Map Outputs^Data Out 8"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[9]" VarB="COM RxPDO-Map Outputs^Data Out 9"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._stCtrl" VarB="COM RxPDO-Map Outputs^Ctrl"/>
|
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL07 (EL2008)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL07 (EL2008)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseChamber1" VarB="Channel 6^HV Hot_CloseChamber" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester.xCloseChamber1" VarB="Channel 6^HV Hot_CloseChamber" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseChamber2" VarB="Channel 3^HV Cold_CloseChamber" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester.xCloseChamber2" VarB="Channel 3^HV Cold_CloseChamber" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xOpenChamber1" VarB="Channel 5^HV Hot_OpenChamber" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester.xOpenChamber1" VarB="Channel 5^HV Hot_OpenChamber" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xOpenChamber2" VarB="Channel 2^HV Cold_OpenChamber" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester.xOpenChamber2" VarB="Channel 2^HV Cold_OpenChamber" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL02 (EL1018)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL02 (EL1018)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Safety._xRequestOpenDoor" VarB="Channel 4^MainDoorUnlock" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Safety.xRequestOpenDoor" VarB="Channel 4^MainDoorUnlock" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL04 (EL1018)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL04 (EL1018)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._xVacuumOk" VarB="Channel 7^Input" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner.xVacuumOk" VarB="Channel 7^Input" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A1 (EP1018-0001)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A1 (EP1018-0001)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._xVacuumOk" VarB="Channel 1^ChuckVacuumOn" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1.xVacuumOk" VarB="Channel 1^ChuckVacuumOn" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A2 (EP1018-0001)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A2 (EP1018-0001)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectBack.xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectBack.xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
|
||||||
@@ -150,12 +106,12 @@
|
|||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._xDisableVacuum" VarB="Byte 0^Output[2]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1.xDisableVacuum" VarB="Byte 0^Output[2]" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A1 (EP1018-0001)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A1 (EP1018-0001)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._xVacuumOk" VarB="Channel 1^ChuckVacuumOn" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2.xVacuumOk" VarB="Channel 1^ChuckVacuumOn" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A2 (EP1018-0001)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A2 (EP1018-0001)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectBack.xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectBack.xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
|
||||||
@@ -178,34 +134,34 @@
|
|||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._xDisableVacuum" VarB="Byte 0^Output[2]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2.xDisableVacuum" VarB="Byte 0^Output[2]" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^PC_K01_KL01 (EK1100)^PC_K01_KL02 (EL1918)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^PC_K01_KL01 (EK1100)^PC_K01_KL02 (EL1918)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Safety._xComStartup" VarB="StandardInputs^Standard Out Var 12" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Safety.xComStartup" VarB="StandardInputs^Standard Out Var 12" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Safety._xErrorAck" VarB="StandardOutputs^Standard In Var 212" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Safety.xErrorAck" VarB="StandardOutputs^Standard In Var 212" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Safety._xLockDoor" VarB="StandardOutputs^Standard In Var 192" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Safety.xLockDoor" VarB="StandardOutputs^Standard In Var 192" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^RobotMain">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^RobotMain">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._abMirrorToolsAndPositions" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 4 (Greifer/Drehteller/Positionen)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.abyMirrorToolsAndPositions" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 4 (Greifer/Drehteller/Positionen)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._asiMotorTemps1To4" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 8 (Motor Temp)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.asiMotorTemps1To4" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 8 (Motor Temp)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._asiMotorTemps5To8" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 9 (Motor Temp)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.asiMotorTemps5To8" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 9 (Motor Temp)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._awJobStatesFromRobot" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 2 (JobAktiv/JobEnde)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.awJobStatesFromRobot" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 2 (JobAktiv/JobEnde)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._diMirrorOffsetPosX" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 5 (Offset X)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.diMirrorOffsetPosX" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 5 (Offset X)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._diMirrorOffsetPosY" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 6 (Offset Y)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.diMirrorOffsetPosY" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 6 (Offset Y)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._diMirrorThickness" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 7 (Thickness)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.diMirrorThickness" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 7 (Thickness)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._dwErrorBits" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 1 (Errorbits)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.dwErrorBits" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 1 (Errorbits)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._eJobForPLC" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 3 (JobForPLC)" Size="16"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.eJobForPLC" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 3 (JobForPLC)" Size="16"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._uState" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 0 (Status)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot.stState" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 0 (Status)" Size="16"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._abToolsAndPositions" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 2 (Greifer/Drehteller/Positionen)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.abyToolsAndPositions" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 2 (Greifer/Drehteller/Positionen)"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._diOffsetPosX" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 3 (Offset X)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diOffsetPosX" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 3 (Offset X)"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._diOffsetPosY" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 4 (Offset Y)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diOffsetPosY" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 4 (Offset Y)"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._diThickness" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^ Output DWORD 5 (Thickness)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diThickness" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^ Output DWORD 5 (Thickness)"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._uCtrl" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 0 (CMDs)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.stCtrl" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 0 (CMDs)"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._uJobs" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 1 (JobNr/PLCJobNr)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.stJobs" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 1 (JobNr/PLCJobNr)"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 2 (Profinet Controller)^vs-0001">
|
<OwnerB Name="TIID^Device 2 (Profinet Controller)^vs-0001">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._stCamResult" VarB="API^Term 4 (Result Data 128Byte)^Subterm 6 (Result Data 128Byte)^Inputs^Result Data" Size="264" OffsB="224"/>
|
<Link VarA="PlcTask Inputs^PRG_Main.stCamResult" VarB="API^Term 4 (Result Data 128Byte)^Subterm 6 (Result Data 128Byte)^Inputs^Result Data" Size="264" OffsB="224"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._xTriggerCamera" VarB="API^Term 10 (Control)^Subterm 12 (Control)^Outputs^Control Register[0]^Trigger" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main.xTriggerCamera" VarB="API^Term 10 (Control)^Subterm 12 (Control)^Outputs^Control Register[0]^Trigger" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerXAxis">
|
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerXAxis">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._fbXAxis._fbAxis.NcToPlc" VarB="Outputs^ToPlc"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._fbXAxis._fbAxis.NcToPlc" VarB="Outputs^ToPlc"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user