﻿<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://www.plcopen.org/xml/tc6_0200">
  <fileHeader companyName="Rexroth" productName="ctrlX PLC Engineering" productVersion="ctrlX PLC 4.6.1" creationDateTime="2026-06-25T18:33:34.9690414" />
  <contentHeader name="SyncMotion_Workshop_Cam_4V06b.project" modificationDateTime="2026-06-25T18:31:02.8348881">
    <coordinateInfo>
      <fbd>
        <scaling x="1" y="1" />
      </fbd>
      <ld>
        <scaling x="1" y="1" />
      </ld>
      <sfc>
        <scaling x="1" y="1" />
      </sfc>
    </coordinateInfo>
    <addData>
      <data name="http://www.3s-software.com/plcopenxml/projectinformation" handleUnknown="implementation">
        <ProjectInformation />
      </data>
    </addData>
  </contentHeader>
  <types>
    <dataTypes>
      <dataType name="AxSyncType">
        <baseType>
          <enum>
            <values>
              <value name="GEAR_IN_POS" value="0" />
              <value name="CAM" value="1" />
              <value name="FLEX_PROF" value="2" />
            </values>
          </enum>
        </baseType>
        <addData>
          <data name="http://www.3s-software.com/plcopenxml/objectid" handleUnknown="discard">
            <ObjectId>6289b20a-528c-4144-9c98-8d2e1598423c</ObjectId>
          </data>
        </addData>
      </dataType>
      <dataType name="ProbeShotType">
        <baseType>
          <enum>
            <values>
              <value name="SINGLE_SHOT" value="0" />
              <value name="CONTINUOUS" value="1" />
            </values>
          </enum>
        </baseType>
        <addData>
          <data name="http://www.3s-software.com/plcopenxml/objectid" handleUnknown="discard">
            <ObjectId>f62b64d6-1185-4cb3-b190-76ed48c49da2</ObjectId>
          </data>
        </addData>
      </dataType>
      <dataType name="ProbeSignalSelect">
        <baseType>
          <enum>
            <values>
              <value name="UNDEFINED" value="0" />
              <value name="ENCODER_1" value="1" />
              <value name="ENCODER_2" value="2" />
              <value name="FINE_TIME" value="3" />
              <value name="IPO_POS" value="4" />
              <value name="ACT_POS" value="5" />
              <value name="MOTION_INTERNAL_DATA" value="6" />
            </values>
          </enum>
        </baseType>
        <addData>
          <data name="http://www.3s-software.com/plcopenxml/objectid" handleUnknown="discard">
            <ObjectId>2df6a6eb-7ea9-4816-92cd-91b57f670dd3</ObjectId>
          </data>
        </addData>
      </dataType>
      <dataType name="ProbeSignalSelectEx">
        <baseType>
          <enum>
            <values>
              <value name="NONE" value="0" />
              <value name="MASTER_AXIS_POSITION" value="1" />
              <value name="RESULTING_MASTER_AXIS_POSITION" value="2" />
              <value name="EFFECTIVE_MASTER_AXIS_POSITION" value="3" />
            </values>
          </enum>
        </baseType>
        <addData>
          <data name="http://www.3s-software.com/plcopenxml/enumvaluedocumentation" handleUnknown="implementation">
            <EnumValueDocumentation>
              <EnumValue>
                <Name>MASTER_AXIS_POSITION</Name>
                <Documentation>
                  <xhtml xmlns="http://www.w3.org/1999/xhtml">equivalent to P-0-0053</xhtml>
                </Documentation>
              </EnumValue>
              <EnumValue>
                <Name>RESULTING_MASTER_AXIS_POSITION</Name>
                <Documentation>
                  <xhtml xmlns="http://www.w3.org/1999/xhtml">equivalent to P-0-0775</xhtml>
                </Documentation>
              </EnumValue>
              <EnumValue>
                <Name>EFFECTIVE_MASTER_AXIS_POSITION</Name>
                <Documentation>
                  <xhtml xmlns="http://www.w3.org/1999/xhtml">equivalent to P-0-0776</xhtml>
                </Documentation>
              </EnumValue>
            </EnumValueDocumentation>
          </data>
          <data name="http://www.3s-software.com/plcopenxml/objectid" handleUnknown="discard">
            <ObjectId>6f4f203a-4915-4554-b76a-b6be0a87b67c</ObjectId>
          </data>
        </addData>
      </dataType>
    </dataTypes>
    <pous>
      <pou name="FB_ConfigureProbe" pouType="functionBlock">
        <interface>
          <inputVars>
            <variable name="Execute">
              <type>
                <BOOL />
              </type>
            </variable>
            <variable name="SignalSelect">
              <type>
                <derived name="ProbeSignalSelect" />
              </type>
              <initialValue>
                <simpleValue value="ACT_POS" />
              </initialValue>
              <documentation>
                <xhtml xmlns="http://www.w3.org/1999/xhtml">signal to be captured</xhtml>
              </documentation>
            </variable>
            <variable name="SignalSelectEx">
              <type>
                <derived name="ProbeSignalSelectEx" />
              </type>
              <initialValue>
                <simpleValue value="NONE" />
              </initialValue>
              <documentation>
                <xhtml xmlns="http://www.w3.org/1999/xhtml">master position from the calculcation pipeline (only relevent if SignalSelect = MOTION_INTERNAL_DATA)</xhtml>
              </documentation>
            </variable>
            <variable name="ShotType">
              <type>
                <derived name="ProbeShotType" />
              </type>
              <initialValue>
                <simpleValue value="CONTINUOUS" />
              </initialValue>
              <documentation>
                <xhtml xmlns="http://www.w3.org/1999/xhtml">continuous or single shot</xhtml>
              </documentation>
            </variable>
            <variable name="SyncType">
              <type>
                <derived name="AxSyncType" />
              </type>
              <documentation>
                <xhtml xmlns="http://www.w3.org/1999/xhtml"> FALSE = gear_in_pos, TRUE = cam_in</xhtml>
              </documentation>
            </variable>
            <variable name="PositiveEdgeDeadtime">
              <type>
                <LREAL />
              </type>
            </variable>
            <variable name="NegativeEdgeDeadtime">
              <type>
                <LREAL />
              </type>
            </variable>
            <variable name="PositiveEdgeEnable">
              <type>
                <BOOL />
              </type>
              <initialValue>
                <simpleValue value="TRUE" />
              </initialValue>
            </variable>
            <variable name="NegativeEdgeEnable">
              <type>
                <BOOL />
              </type>
            </variable>
            <variable name="ExpectationWindowEnable">
              <type>
                <BOOL />
              </type>
            </variable>
            <variable name="ExpectationWindowStart">
              <type>
                <LREAL />
              </type>
            </variable>
            <variable name="ExpectationWindowEnd">
              <type>
                <LREAL />
              </type>
            </variable>
            <variable name="MarkerFailureEnable">
              <type>
                <BOOL />
              </type>
            </variable>
            <variable name="MarkerFailureMax">
              <type>
                <DINT />
              </type>
            </variable>
            <variable name="ExternalProbeIndex">
              <type>
                <derived name="ML_ProbeIndex" />
              </type>
              <documentation>
                <xhtml xmlns="http://www.w3.org/1999/xhtml">not relevent unless ExternalProbeAxis is specified</xhtml>
              </documentation>
            </variable>
            <variable name="ExternalProbeAxis">
              <type>
                <derived name="AXIS_REF" />
              </type>
              <documentation>
                <xhtml xmlns="http://www.w3.org/1999/xhtml">leave empty unless probe input comes from a different drive than specified by Axis</xhtml>
              </documentation>
            </variable>
            <variable name="ProbeIndex">
              <type>
                <derived name="ML_ProbeIndex" />
              </type>
              <initialValue>
                <simpleValue value="PROBE_1" />
              </initialValue>
            </variable>
            <variable name="Axis">
              <type>
                <derived name="AXIS_REF" />
              </type>
              <initialValue>
                <structValue>
                  <value member="AxisName">
                    <simpleValue value="'Axis_1'" />
                  </value>
                </structValue>
              </initialValue>
            </variable>
          </inputVars>
          <outputVars>
            <variable name="Done">
              <type>
                <BOOL />
              </type>
            </variable>
            <variable name="Error">
              <type>
                <BOOL />
              </type>
            </variable>
            <variable name="ErrorText">
              <type>
                <string />
              </type>
            </variable>
          </outputVars>
          <localVars>
            <variable name="stSignalSelect">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stSignalSelectEx">
              <type>
                <string length="120" />
              </type>
            </variable>
            <variable name="stShotType">
              <type>
                <string />
              </type>
            </variable>
            <variable name="DL_WriteNode_SignalSelect">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_SignalSelectEx">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_Source">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_SourceInfo">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_ShotType">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_PositiveEdgeDeadtime">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_NegativeEdgeDeadtime">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_PositiveEdgeEnable">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_NegativeEdgeEnable">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_ExpectationWindowEnable">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_ExpectationWindowStart">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_ExpectationWindowEnd">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_MarkerFailureEnable">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="DL_WriteNode_MarkerFailureMax">
              <type>
                <derived name="DL_WriteNode" />
              </type>
            </variable>
            <variable name="String1">
              <type>
                <string />
              </type>
              <initialValue>
                <simpleValue value="'motion/axs/'" />
              </initialValue>
            </variable>
            <variable name="String2">
              <type>
                <string />
              </type>
              <initialValue>
                <simpleValue value="'/cfg/functions/probe/probe1/signal/select'" />
              </initialValue>
            </variable>
            <variable name="stSignalSelectNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stSourceNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stSourceInfoNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stSignalSelectExNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stShotTypeNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stProbeString">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stExternalProbeString">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stPosEdgeEnableNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stNegEdgeEnableNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stPosEdgeDeadtimeNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stNegEdgeDeadtimeNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stExpectationWindowEnableNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stExpectationWindowStartNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stExpectationWindowEndNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stMarkerFailureEnableNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="stMarkerFailureMaxNode">
              <type>
                <string />
              </type>
            </variable>
            <variable name="bDLError">
              <type>
                <BOOL />
              </type>
            </variable>
            <variable name="bExternalSourceActive">
              <type>
                <BOOL />
              </type>
            </variable>
          </localVars>
        </interface>
        <body>
          <ST>
            <xhtml xmlns="http://www.w3.org/1999/xhtml">
	CASE SignalSelect OF
		ProbeSignalSelect.UNDEFINED: stSignalSelect := 'UNDEFINE';
		ProbeSignalSelect.ENCODER_1: stSignalSelect := 'ENCODER_1';
		ProbeSignalSelect.ENCODER_2: stSignalSelect := 'ENCODER_2';
		ProbeSignalSelect.FINE_TIME: stSignalSelect := 'FINE_TIME';
		ProbeSignalSelect.IPO_POS: stSignalSelect := 'IPO_POS';
		ProbeSignalSelect.ACT_POS: stSignalSelect := 'ACT_POS';
		ProbeSignalSelect.MOTION_INTERNAL_DATA: stSignalSelect := 'MOTION_INTERNAL_DATA';
	END_CASE
	
	IF SyncType = AxSyncType.GEAR_IN_POS THEN
		CASE SignalSelectEx OF
			ProbeSignalSelectEx.NONE: stSignalSelectEx := '';
			ProbeSignalSelectEx.MASTER_AXIS_POSITION: 			stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/gear_in_pos/steps/1/inputs[0]'));
			ProbeSignalSelectEx.RESULTING_MASTER_AXIS_POSITION: stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/gear_in_pos/steps/4/inputs[0]'));
			ProbeSignalSelectEx.EFFECTIVE_MASTER_AXIS_POSITION: stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/gear_in_pos/steps/5/inputs[0]'));
		END_CASE
	
	ELSIF SyncType = AxSyncType.CAM THEN
		CASE SignalSelectEx OF
			ProbeSignalSelectEx.MASTER_AXIS_POSITION: 		    stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/cam_in/steps/1/inputs[0]'));
			ProbeSignalSelectEx.RESULTING_MASTER_AXIS_POSITION: stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/cam_in/steps/4/inputs[0]'));
			ProbeSignalSelectEx.EFFECTIVE_MASTER_AXIS_POSITION: stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/cam_in/steps/5/inputs[0]'));
		END_CASE
	
	ELSIF SyncType = AxSyncType.FLEX_PROF THEN
		CASE SignalSelectEx OF
			ProbeSignalSelectEx.MASTER_AXIS_POSITION: 		    stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/flexprofile/steps/1/inputs[0]'));
			ProbeSignalSelectEx.RESULTING_MASTER_AXIS_POSITION: stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/flexprofile/steps/4/inputs[0]'));
			ProbeSignalSelectEx.EFFECTIVE_MASTER_AXIS_POSITION: stSignalSelectEx := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/state/functions/coupling/sync-motion/calculation-pipeline/flexprofile/steps/5/inputs[0]'));
		END_CASE
	
	END_IF
	
	CASE ShotType OF
		ProbeShotType.SINGLE_SHOT: stShotType := 'SINGLE_SHOT';
		ProbeShotType.CONTINUOUS: stShotType := 'CONTINUOUS';
	END_CASE;
	
	IF ProbeIndex = PROBE_2 THEN
		stProbeString := 'probe2';
	ELSE
		stProbeString := 'probe1';
	END_IF
	
	IF ExternalProbeAxis.AxisName = '' THEN
		bExternalSourceActive := FALSE;
	ELSE
		bExternalSourceActive := TRUE;
	END_IF
	
	
    IF ExternalProbeIndex = PROBE_1 AND bExternalSourceActive THEN 
		stExternalProbeString := 'probe1';
	ELSIF ExternalProbeIndex = PROBE_2 AND bExternalSourceActive THEN 
		stExternalProbeString := 'probe2';
	ELSE stExternalProbeString := '';
	END_IF
	
	
	//stSignalSelectNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/cfg/functions/probe/probe1/signal/select'));
	stSignalSelectNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/signal/select'))));
	stSignalSelectExNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/signal/select-info'))));
	stSourceNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/signal/source'))));
	stSourceInfoNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/signal/source-info'))));
	stShotTypeNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/signal/shot-type'))));
	stPosEdgeDeadtimeNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/dead-time/pos'))));
	stNegEdgeDeadtimeNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/dead-time/neg'))));
	stPosEdgeEnableNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/edge/pos-edge'))));
	stNegEdgeEnableNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/edge/neg-edge'))));
	stExpectationWindowEnableNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/expt-window/enable'))));
	stExpectationWindowStartNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/expt-window/start'))));
	stExpectationWindowEndNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/expt-window/end'))));
	stMarkerFailureEnableNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/marker-failure/enable'))));
	stMarkerFailureMaxNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,CONCAT('/cfg/functions/probe/',CONCAT(stProbeString,'/marker-failure/max-num'))));
	
//	stSignalSelectExNode := CONCAT('motion/axs/',CONCAT(Axis.AxisName,'/cfg/functions/probe/probe1/signal/select'));
	
	DL_WriteNode_SignalSelect(
		Execute := Execute,
		NodeName := stSignalSelectNode,
		Value := stSignalSelect);
		
	DL_WriteNode_SignalSelectEx(
		Execute := Execute,
		NodeName := stSignalSelectExNode,
		Value := stSignalSelectEx);
		
	DL_WriteNode_Source(
		Execute := Execute,
		NodeName := stSourceNode,
		Value := ExternalProbeAxis.AxisName);
		
	DL_WriteNode_SourceInfo(
		Execute := Execute,
		NodeName := stSourceInfoNode,
		Value := stExternalProbeString);
				
	DL_WriteNode_ShotType(
		Execute := Execute,
		NodeName := stShotTypeNode,
		Value := stShotType);
		
	DL_WriteNode_PositiveEdgeDeadtime(
		Execute := Execute,
		NodeName := stPosEdgeDeadtimeNode,
		Value := PositiveEdgeDeadtime);
		
	DL_WriteNode_NegativeEdgeDeadtime(
		Execute := Execute,
		NodeName := stNegEdgeDeadtimeNode,
		Value := NegativeEdgeDeadtime);
		
	DL_WriteNode_PositiveEdgeEnable(
		Execute := Execute,
		NodeName := stPosEdgeEnableNode,
		Value := PositiveEdgeEnable);
		
	DL_WriteNode_NegativeEdgeEnable(
		Execute := Execute,
		NodeName := stNegEdgeEnableNode,
		Value := NegativeEdgeEnable);
		
	DL_WriteNode_ExpectationWindowEnable(
		Execute := Execute,
		NodeName := stExpectationWindowEnableNode,
		Value := ExpectationWindowEnable);
		
	DL_WriteNode_ExpectationWindowStart(
		Execute := Execute,
		NodeName := stExpectationWindowStartNode,
		Value := ExpectationWindowStart);
		
	DL_WriteNode_ExpectationWindowEnd(
		Execute := Execute,
		NodeName := stExpectationWindowEndNode,
		Value := ExpectationWindowEnd);
		
	DL_WriteNode_MarkerFailureEnable(
		Execute := Execute,
		NodeName := stMarkerFailureEnableNode,
		Value := MarkerFailureEnable);
		
	DL_WriteNode_MarkerFailureMax(
		Execute := Execute,
		NodeName := stMarkerFailureMaxNode,
		Value := MarkerFailureMax);
		
	Done := DL_WriteNode_SignalSelect.Done AND DL_WriteNode_SignalSelectEx.Done AND DL_WriteNode_ShotType.Done AND DL_WriteNode_PositiveEdgeEnable.Done AND DL_WriteNode_NegativeEdgeEnable.Done AND DL_WriteNode_ExpectationWindowEnable.Done AND DL_WriteNode_ExpectationWindowStart.Done AND DL_WriteNode_ExpectationWindowEnd.Done AND DL_WriteNode_MarkerFailureEnable.Done AND DL_WriteNode_MarkerFailureMax.Done;
	Error := DL_WriteNode_SignalSelect.Error OR DL_WriteNode_SignalSelectEx.Error OR DL_WriteNode_ShotType.Error OR DL_WriteNode_PositiveEdgeEnable.Error OR DL_WriteNode_NegativeEdgeEnable.Error OR DL_WriteNode_ExpectationWindowEnable.Error OR DL_WriteNode_ExpectationWindowStart.Error OR DL_WriteNode_ExpectationWindowEnd.Error OR DL_WriteNode_MarkerFailureEnable.Error OR DL_WriteNode_MarkerFailureMax.Error;

	IF DL_WriteNode_SignalSelect.Error AND DL_WriteNode_SignalSelectEx.Error AND DL_WriteNode_ShotType.Error AND DL_WriteNode_PositiveEdgeEnable.Error AND DL_WriteNode_NegativeEdgeEnable.Error AND DL_WriteNode_ExpectationWindowEnable.Error AND DL_WriteNode_ExpectationWindowStart.Error AND DL_WriteNode_ExpectationWindowEnd.Error AND DL_WriteNode_MarkerFailureEnable.Error AND DL_WriteNode_MarkerFailureMax.Error THEN
		ErrorText := 'Axis does not exist';
		bDLError := TRUE;
	ELSE
		bDLError := FALSE;
	END_IF
	
	IF Error AND NOT bDLError THEN
		ErrorText := 'Probe is active, abort probe then retry';
	END_IF
	
	IF NOT Error THEN
		ErrorText := 'No error';
	END_IF
	
	IF NOT Execute THEN
		ExternalProbeAxis.AxisName := '';
	END_IF</xhtml>
          </ST>
        </body>
        <addData>
          <data name="http://www.3s-software.com/plcopenxml/objectid" handleUnknown="discard">
            <ObjectId>42a8c03d-e704-4cc0-a7fa-f86f16e377cd</ObjectId>
          </data>
        </addData>
      </pou>
    </pous>
  </types>
  <instances>
    <configurations />
  </instances>
  <addData>
    <data name="http://www.3s-software.com/plcopenxml/projectstructure" handleUnknown="discard">
      <ProjectStructure>
        <Folder Name="ProbeUtilities">
          <Object Name="AxSyncType" ObjectId="6289b20a-528c-4144-9c98-8d2e1598423c" />
          <Object Name="FB_ConfigureProbe" ObjectId="42a8c03d-e704-4cc0-a7fa-f86f16e377cd" />
          <Object Name="ProbeShotType" ObjectId="f62b64d6-1185-4cb3-b190-76ed48c49da2" />
          <Object Name="ProbeSignalSelect" ObjectId="2df6a6eb-7ea9-4816-92cd-91b57f670dd3" />
          <Object Name="ProbeSignalSelectEx" ObjectId="6f4f203a-4915-4554-b76a-b6be0a87b67c" />
        </Folder>
      </ProjectStructure>
    </data>
  </addData>
</project>