﻿<?xml version="1.0" encoding="utf-8"?>
<DeviceDescription xmlns="http://www.3s-software.com/schemas/DeviceDescription-1.0.xsd" xmlns:ts="http://www.3s-software.com/schemas/TargetSettings-0.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Types namespace="localTypes">
    <EnumType basetype="std:BYTE" name="DIPortType">
      <Enum identifier="I0">
        <Value>0</Value>
        <VisibleName name="local:I0">I0</VisibleName>
      </Enum>
      <Enum identifier="I1">
        <Value>1</Value>
        <VisibleName name="local:I1">I1</VisibleName>
      </Enum>
      <Enum identifier="I2">
        <Value>2</Value>
        <VisibleName name="local:I2">I2</VisibleName>
      </Enum>
      <Enum identifier="I3">
        <Value>3</Value>
        <VisibleName name="local:I3">I3</VisibleName>
      </Enum>
      <Enum identifier="I4">
        <Value>4</Value>
        <VisibleName name="local:I4">I4</VisibleName>
      </Enum>
      <Enum identifier="I5">
        <Value>5</Value>
        <VisibleName name="local:I5">I5</VisibleName>
      </Enum>
      <Enum identifier="I6">
        <Value>6</Value>
        <VisibleName name="local:I6">I6</VisibleName>
      </Enum>
      <Enum identifier="I7">
        <Value>7</Value>
        <VisibleName name="local:I7">I7</VisibleName>
      </Enum>
    </EnumType>
    <EnumType basetype="std:BYTE" name="DOPortType">
      <Enum identifier="Q0">
        <Value>0</Value>
        <VisibleName name="local:Q0">Q0</VisibleName>
      </Enum>
      <Enum identifier="Q1">
        <Value>1</Value>
        <VisibleName name="local:Q1">Q1</VisibleName>
      </Enum>
      <Enum identifier="Q2">
        <Value>2</Value>
        <VisibleName name="local:Q2">Q2</VisibleName>
      </Enum>
      <Enum identifier="Q3">
        <Value>3</Value>
        <VisibleName name="local:Q3">Q3</VisibleName>
      </Enum>
      <Enum identifier="Q4">
        <Value>4</Value>
        <VisibleName name="local:Q4">Q4</VisibleName>
      </Enum>
      <Enum identifier="Q5">
        <Value>5</Value>
        <VisibleName name="local:Q5">Q5</VisibleName>
      </Enum>
      <Enum identifier="Q6">
        <Value>6</Value>
        <VisibleName name="local:Q6">Q6</VisibleName>
      </Enum>
      <Enum identifier="Q7">
        <Value>7</Value>
        <VisibleName name="local:Q7">Q7</VisibleName>
      </Enum>
    </EnumType>
    <EnumType basetype="std:BYTE" name="CounterType">
      <Enum identifier="type0">
        <Value>0</Value>
        <VisibleName name="local:type0">AB相一倍频计数</VisibleName>
      </Enum>
      <Enum identifier="type1">
        <Value>1</Value>
        <VisibleName name="local:type1">AB相二倍频计数</VisibleName>
      </Enum>
      <Enum identifier="type2">
        <Value>2</Value>
        <VisibleName name="local:type2">AB相四倍频计数</VisibleName>
      </Enum>
      <Enum identifier="type3">
        <Value>3</Value>
        <VisibleName name="local:type3">CW+CCW 正逻辑</VisibleName>
      </Enum>
      <Enum identifier="type4">
        <Value>4</Value>
        <VisibleName name="local:type4">脉冲+方向 正逻辑</VisibleName>
      </Enum>
      <Enum identifier="type5">
        <Value>5</Value>
        <VisibleName name="local:type5">单脉冲</VisibleName>
      </Enum>
    </EnumType>
    <EnumType basetype="std:BYTE" name="CounterRingMode">
      <Enum identifier="mode0">
        <Value>0</Value>
        <VisibleName name="local:mode0">线性计数</VisibleName>
      </Enum>
      <Enum identifier="mode1">
        <Value>1</Value>
        <VisibleName name="local:mode1">循环计数</VisibleName>
      </Enum>
    </EnumType>
    <EnumType basetype="std:BYTE" name="CounterDIStartValid">
      <Enum identifier="type0">
        <Value>0</Value>
        <VisibleName name="local:type0">无效-软件启动计数器</VisibleName>
      </Enum>
      <Enum identifier="type1">
        <Value>1</Value>
        <VisibleName name="local:type1">有效-DI启动计数器</VisibleName>
      </Enum>
    </EnumType>
    <EnumType basetype="std:BYTE" name="CounterDIStartMode">
      <Enum identifier="mode0">
        <Value>0</Value>
        <VisibleName name="local:mode0">DI上升沿启动</VisibleName>
      </Enum>
      <Enum identifier="mode1">
        <Value>1</Value>
        <VisibleName name="local:mode1">DI下降沿启动</VisibleName>
      </Enum>
    </EnumType>
    <EnumType basetype="std:BYTE" name="HardwareResetMode">
      <Enum identifier="mode0">
        <Value>0</Value>
        <VisibleName name="local:mode0">DI上升沿复位</VisibleName>
      </Enum>
      <Enum identifier="mode1">
        <Value>1</Value>
        <VisibleName name="local:mode1">DI下降沿复位</VisibleName>
      </Enum>
    </EnumType>
    <RangeType basetype="std:BYTE" name="CounterPortRange">
      <Min>0</Min>
      <Max>7</Max>
      <Default>0</Default>
    </RangeType>
    <RangeType basetype="std:BYTE" name="CounterIDRange">
      <Min>0</Min>
      <Max>3</Max>
      <Default>0</Default>
    </RangeType>
    <EnumType basetype="std:BYTE" name="CC_PresetCounterMode">
      <Enum identifier="mode0">
        <Value>0</Value>
        <VisibleName name="local:mode0">软Execute上升沿触发</VisibleName>
      </Enum>
      <Enum identifier="mode1">
        <Value>1</Value>
        <VisibleName name="local:mode1">比较一致输出时触发</VisibleName>
      </Enum>
      <Enum identifier="mode2">
        <Value>2</Value>
        <VisibleName name="local:mode2">DI上升沿触发</VisibleName>
      </Enum>
      <Enum identifier="mode3">
        <Value>3</Value>
        <VisibleName name="local:mode3">DI下降沿触发</VisibleName>
      </Enum>
      <Enum identifier="mode4">
        <Value>4</Value>
        <VisibleName name="local:mode4">DI上升沿/下降沿触发</VisibleName>
      </Enum>
    </EnumType>
    <EnumType basetype="std:BYTE" name="DITrigMode">
      <Enum identifier="mode0">
        <Value>0</Value>
        <VisibleName name="local:mode0">DI上升沿触发</VisibleName>
      </Enum>
      <Enum identifier="mode1">
        <Value>1</Value>
        <VisibleName name="local:mode1">DI下降沿触发</VisibleName>
      </Enum>
      <Enum identifier="mode2">
        <Value>2</Value>
        <VisibleName name="local:mode2">DI上升沿/下降沿触发</VisibleName>
      </Enum>
    </EnumType>
    <!-- Counter CC_PresetCounter begin -->
    <StructType name="CC_PresetCounter">
      <Component identifier="CC_PresetCounterEnable" type="std:BOOL">
        <VisibleName name="local:CC_PresetCounter Enable">CC_PresetCounter Enable</VisibleName>
        <Description name="local:CC_PresetCounter Enable">CC_PresetCounter Enable</Description>
        <Default>FALSE</Default>
      </Component>
      <Component identifier="CC_PresetCounterMode" type="localTypes:CC_PresetCounterMode">
        <VisibleName name="local:CC_PresetCounter Mode">CC_PresetCounter Mode</VisibleName>
        <Description name="local:CC_PresetCounter Mode">CC_PresetCounter Mode</Description>
        <Default>mode0</Default>
      </Component>
      <Component identifier="CC_PresetCounterDINum" type="localTypes:DIPortType">
        <VisibleName name="local:CC_PresetCounter DINum">CC_PresetCounter DINum</VisibleName>
        <Description name="local:CC_PresetCounter DINum">CC_PresetCounter DINum</Description>
        <Default>I0</Default>
      </Component>
    </StructType>
    <!-- Counter CC_PresetCounter end -->
    <!-- Counter CC_SetCompare begin -->
    <StructType name="CC_SetCompare">
      <Component identifier="CC_SetCompareEnable" type="std:BOOL">
        <VisibleName name="local:CC_SetCompare Enable">CC_SetCompare Enable</VisibleName>
        <Description name="local:CC_SetCompare Enable">CC_SetCompare Enable</Description>
        <Default>FALSE</Default>
      </Component>
      <Component identifier="CC_SetCompareDONum" type="localTypes:DOPortType">
        <VisibleName name="local:CC_SetCompare DONum">CC_SetCompare DONum</VisibleName>
        <Description name="local:CC_SetCompare DONum">CC_SetCompare DONum</Description>
        <Default>Q0</Default>
      </Component>
    </StructType>
    <!-- Counter CC_SetCompare end -->
    <!-- Counter CC_TouchProbe0 begin -->
    <StructType name="CC_TouchProbe0">
      <Component identifier="CC_TouchProbe0Enable" type="std:BOOL">
        <VisibleName name="local:CC_TouchProbe0 Enable">CC_TouchProbe0 Enable</VisibleName>
        <Description name="local:CC_TouchProbe0 Enable">CC_TouchProbe0 Enable</Description>
        <Default>FALSE</Default>
      </Component>
      <Component identifier="CC_TouchProbe0DINum" type="localTypes:DIPortType">
        <VisibleName name="local:CC_TouchProbe0 DINum">CC_TouchProbe0 DINum</VisibleName>
        <Description name="local:CC_TouchProbe0 DINum">CC_TouchProbe0 DINum</Description>
        <Default>I0</Default>
      </Component>
      <Component identifier="CC_TouchProbe0TrigMode" type="localTypes:DITrigMode">
        <VisibleName name="local:CC_TouchProbe0 TrigMode">CC_TouchProbe0 TrigMode</VisibleName>
        <Description name="local:CC_TouchProbe0 TrigMode">CC_TouchProbe0 TrigMode</Description>
        <Default>mode2</Default>
      </Component>
    </StructType>
    <!-- Counter CC_TouchProbe0 end -->
    <!-- Counter CC_TouchProbe1 begin -->
    <StructType name="CC_TouchProbe1">
      <Component identifier="CC_TouchProbe1Enable" type="std:BOOL">
        <VisibleName name="local:CC_TouchProbe1 Enable">CC_TouchProbe1 Enable</VisibleName>
        <Description name="local:CC_TouchProbe1 Enable">CC_TouchProbe1 Enable</Description>
        <Default>FALSE</Default>
      </Component>
      <Component identifier="CC_TouchProbe1DINum" type="localTypes:DIPortType">
        <VisibleName name="local:CC_TouchProbe1 DINum">CC_TouchProbe1 DINum</VisibleName>
        <Description name="local:CC_TouchProbe1 DINum">CC_TouchProbe1 DINum</Description>
        <Default>I0</Default>
      </Component>
      <Component identifier="CC_TouchProbe1TrigMode" type="localTypes:DITrigMode">
        <VisibleName name="local:CC_TouchProbe1 TrigMode">CC_TouchProbe1 TrigMode</VisibleName>
        <Description name="local:CC_TouchProbe1 TrigMode">CC_TouchProbe1 TrigMode</Description>
        <Default>mode2</Default>
      </Component>
    </StructType>
    <!-- Counter CC_TouchProbe1 end -->
    <EnumType basetype="std:BYTE" name="EnableInterruptMode">
      <Enum identifier="mode0">
        <Value>0</Value>
        <VisibleName name="local:mode0">DI触发</VisibleName>
      </Enum>
      <Enum identifier="mode1">
        <Value>1</Value>
        <VisibleName name="local:mode1">计数器比较输出触发</VisibleName>
      </Enum>
    </EnumType>
    <!-- EnableInterrupt begin 
    <StructType name="EnableInterrupt">
      <Component identifier="EnableInterruptEnable" type="std:BOOL">
        <VisibleName name="local:EnableInterrupt Enable">EnableInterrupt Enable</VisibleName>
        <Description name="local:EnableInterrupt Enable">EnableInterrupt Enable</Description>
        <Default>FALSE</Default>
      </Component>
      <Component identifier="ID" type="localTypes:CounterIDRange">
        <VisibleName name="local:EnableInterrupt ID">EnableInterrupt ID</VisibleName>
        <Description name="local:EnableInterrupt ID">EnableInterrupt ID</Description>
      </Component>
      <Component identifier="EnableInterruptMode" type="localTypes:EnableInterruptMode">
        <VisibleName name="local:EnableInterrupt Mode">EnableInterrupt Mode</VisibleName>
        <Description name="local:EnableInterrupt Mode">EnableInterrupt Mode</Description>
        <Default>mode0</Default>
      </Component>
      <Component identifier="EnableInterruptDINum" type="localTypes:DIPortType">
        <VisibleName name="local:EnableInterrupt DINum">EnableInterrupt DINum</VisibleName>
        <Description name="local:EnableInterrupt DINum">EnableInterrupt DINum</Description>
        <Default>I0</Default>
      </Component>      
      <Component identifier="EnableInterruptTrigMode" type="localTypes:DITrigMode">
        <VisibleName name="local:EnableInterrupt TrigMode">EnableInterrupt TrigMode</VisibleName>
        <Description name="local:EnableInterrupt TrigMode">EnableInterrupt TrigMode</Description>
        <Default>mode2</Default>
      </Component>
      <Component identifier="CompareEvent" type="localTypes:CounterIDRange">
        <VisibleName name="local:EnableInterrupt CompareEvent">EnableInterrupt CompareEvent</VisibleName>
        <Description name="local:EnableInterrupt CompareEvent">EnableInterrupt CompareEvent</Description>
      </Component>      
    </StructType>
	-->
    <!-- EnableInterrupt end -->
    <!-- Pwm begin 
    <StructType name="Pwm">
      <Component identifier="PwmEnable" type="std:BOOL">
        <VisibleName name="local:Pwm Enable">Pwm Enable</VisibleName>
        <Description name="local:Pwm Enable">Pwm Enable</Description>
        <Default>FALSE</Default>
      </Component>
      <Component identifier="ID" type="localTypes:CounterIDRange">
        <VisibleName name="local:Pwm ID">Pwm ID</VisibleName>
        <Description name="local:Pwm ID">Pwm ID</Description>
      </Component>
      <Component identifier="PwmDONum" type="localTypes:DOPortType">
        <VisibleName name="local:Pwm DONum">Pwm DONum</VisibleName>
        <Description name="local:Pwm DONum">Pwm DONum</Description>
        <Default>Y00</Default>
      </Component>
    
    </StructType>
	
	-->
    <!-- Pwm end -->
    <!-- Counter begin -->
    <StructType name="Counter">
      <Component identifier="CounterEnable" type="std:BOOL">
        <VisibleName name="local:Enable">Counter Enable</VisibleName>
        <Description name="local:Enable">Counter Enable</Description>
        <Default>FALSE</Default>
      </Component>
      <Component identifier="CounterID" type="localTypes:CounterIDRange">
        <VisibleName name="local:Counter ID">Counter ID</VisibleName>
        <Description name="local:Counter ID">Counter ID</Description>
      </Component>
      <Component identifier="CounterPort" type="localTypes:CounterPortRange">
        <VisibleName name="local:Counter Port">Counter Port</VisibleName>
        <Description name="local:Counter Port">Counter Port</Description>
      </Component>
      <Component identifier="CounterType" type="localTypes:CounterType">
        <VisibleName name="local:Counter Type">Counter Type</VisibleName>
        <Description name="local:Counter Type">Counter Type</Description>
        <Default>type2</Default>
      </Component>
      <Component identifier="CounterRingMode" type="localTypes:CounterRingMode">
        <VisibleName name="local:Counter RingMode">Counter RingMode</VisibleName>
        <Description name="local:Counter RingMode">Counter RingMode</Description>
        <Default>mode0</Default>
      </Component>
      <Component identifier="CC_PresetCounter" type="localTypes:CC_PresetCounter">
        <VisibleName name="local:CC_PresetCounter">CC_PresetCounter</VisibleName>
        <Description name="local:CC_PresetCounter">CC_PresetCounter</Description>
      </Component>
      <Component identifier="CC_SetCompare" type="localTypes:CC_SetCompare">
        <VisibleName name="local:CC_SetCompare">CC_SetCompare</VisibleName>
        <Description name="local:CC_SetCompare">CC_SetCompare</Description>
      </Component>
      <!--
      <Component identifier="CC_SetArrayCompare" type="localTypes:CC_SetArrayCompare">
        <VisibleName name="local:CC_SetArrayCompare">CC_SetArrayCompare</VisibleName>
        <Description name="local:CC_SetArrayCompare">CC_SetArrayCompare</Description>
      </Component>

      <Component identifier="CC_SetstepCompare" type="localTypes:CC_SetstepCompare">
        <VisibleName name="local:CC_SetstepCompare">CC_SetstepCompare</VisibleName>
        <Description name="local:CC_SetstepCompare">CC_SetstepCompare</Description>
      </Component>
-->
      <Component identifier="CC_TouchProbe0" type="localTypes:CC_TouchProbe0">
        <VisibleName name="local:CC_TouchProbe0">CC_TouchProbe0</VisibleName>
        <Description name="local:CC_TouchProbe0">CC_TouchProbe0</Description>
      </Component>
      <Component identifier="CC_TouchProbe1" type="localTypes:CC_TouchProbe1">
        <VisibleName name="local:CC_TouchProbe1">CC_TouchProbe1</VisibleName>
        <Description name="local:CC_TouchProbe1">CC_TouchProbe1</Description>
      </Component>
      <!--
      <Component identifier="EnableInterrupt" type="localTypes:EnableInterrupt">
        <VisibleName name="local:EnableInterrupt">EnableInterrupt</VisibleName>
        <Description name="local:EnableInterrupt">EnableInterrupt</Description>
      </Component>  

      <Component identifier="Pwm" type="localTypes:Pwm">
        <VisibleName name="local:Pwm">Pwm</VisibleName>
        <Description name="local:Pwm">Pwm</Description>
      </Component>  
	-->
    </StructType>
    <!-- Counter end -->
  </Types>
  <Strings namespace="local">
    <Language lang="en">
      <String identifier="ModelName">Counter</String>
      <String identifier="DeviceDescription">SM300 Series High Speed IO Module——Local Counter
        Encoder</String>
      <String identifier="VendorName">Suzhou Lingchen Acquisition Computer Co.,Ltd.</String>
    </Language>
    <Language lang="zh-CHS">
      <String identifier="ModelName">Counter</String>
      <String identifier="DeviceDescription">SM300系列高速IO模块——本地高速计数器</String>
      <String identifier="VendorName">苏州市凌臣采集计算机有限公司</String>
    </Language>
  </Strings>
  <Device hideInCatalogue="false">
    <DeviceIdentification>
      <Type>33031</Type>
      <Id>17da 0031</Id>
      <Version>1.0.0.0</Version>
    </DeviceIdentification>
    <DeviceInfo>
      <Name name="local:ModelName">Counter</Name>
      <Description name="local:DeviceDescription">Counter</Description>
      <Vendor name="local:VendorName">Suzhou Lingchen Acquisition Computer Co.,Ltd.</Vendor>
      <OrderNumber>0x17da 0031 C6D7</OrderNumber>
    </DeviceInfo>
    <!-- Child connector. The moduleType of the connector is evaluated by the IO driver. The
    interface must be of the same name as in the parent connector -->
    <Connector moduleType="33032" interface="Local.Counter" role="parent" connectorId="2" hostpath="-1" hideInStatusPage="true">
      <InterfaceName name="local:InterfaceName">Encoder</InterfaceName>
      <Var max="1">
      </Var>
    </Connector>
    <Connector moduleType="33031" alwaysmapping="true" interface="Local.LocalCounterRoot_SM300" role="child" explicit="false" connectorId="1" hostpath="-1" hideInStatusPage="false">
      <Slot count="1" allowEmpty="false">
      </Slot>
      <InterfaceName name="localStrings:InterfaceName">Counter</InterfaceName>
      <HostParameterSet>
        <!-- <Parameter ParameterId="71100" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:CounterEnable">CounterEnable</Name>
          <Description name="local:CounterEnable">CounterEnable</Description>
          <Default>FALSE</Default>
        </Parameter> -->
        <Parameter ParameterId="71101" type="localTypes:CounterIDRange">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:CounterID">CounterID</Name>
          <Description name="local:CounterID">CounterID</Description>
        </Parameter>
        <Parameter ParameterId="71102" type="localTypes:CounterPortRange">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:CounterPort">CounterPort</Name>
          <Description name="local:CounterPort">CounterPort</Description>
        </Parameter>
        <Parameter ParameterId="71103" type="localTypes:CounterType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:CounterType">CounterType</Name>
          <Description name="local:CounterType">CounterType</Description>
          <Default>type2</Default>
        </Parameter>
        <!-- <Parameter ParameterId="71104" type="localTypes:CounterRingMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:CounterRingMode">CounterRingMode</Name>
          <Description name="local:CounterRingMode">CounterRingMode</Description>
          <Default>mode0</Default>
        </Parameter> -->
        <!-- <Parameter ParameterId="71105" type="localTypes:CounterDIStartValid">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:CounterDIStartValid">CounterDIStartValid</Name>
          <Description name="local:CounterDIStartValid">CounterDIStartValid</Description>
          <Default>type0</Default>
        </Parameter>       -->
        <!-- <Parameter ParameterId="71106" type="localTypes:CounterDIStartMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:CounterDIStartMode">CounterDIStartMode</Name>
          <Description name="local:CounterDIStartMode">CounterDIStartMode</Description>
          <Default>mode0</Default>
        </Parameter>  -->
        <Parameter ParameterId="71107" type="localTypes:DIPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:CounterDIStartNum">CounterDIStartNum</Name>
          <Description name="local:CounterDIStartNum">CounterDIStartNum</Description>
          <Default>I0</Default>
        </Parameter>
        <Parameter ParameterId="71108" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:PresetCounterEnable">PresetCounterEnable</Name>
          <Description name="local:PresetCounterEnable">PresetCounterEnable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <!-- <Parameter ParameterId="71109" type="localTypes:CC_PresetCounterMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:PresetCounterMode">PresetCounterMode</Name>
          <Description name="local:PresetCounterMode">PresetCounterMode</Description>
          <Default>mode0</Default>
        </Parameter> -->
        <Parameter ParameterId="71110" type="localTypes:DIPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:PresetCounterDINum">PresetCounterDINum</Name>
          <Description name="local:PresetCounterDINum">PresetCounterDINum</Description>
          <Default>I0</Default>
        </Parameter>
        <Parameter ParameterId="71111" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:SetCompareEnable">SetCompareEnable</Name>
          <Description name="local:SetCompareEnable">SetCompareEnable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71112" type="localTypes:DOPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:SetCompareDONum">SetCompareDONum</Name>
          <Description name="local:SetCompareDONum">SetCompareDONum</Description>
          <Default>Q0</Default>
        </Parameter>
        <!--
        <Parameter ParameterId="71113" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
            onlineaccess="read" />
          <Name name="local:SetArrayCompareEnable">SetArrayCompareEnable</Name>
          <Description name="local:SetArrayCompareEnable">SetArrayCompareEnable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71114" type="localTypes:DOPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
            onlineaccess="read" />
          <Name name="local:SetArrayCompareDONum">SetArrayCompareDONum</Name>
          <Description name="local:SetArrayCompareDONum">SetArrayCompareDONum</Description>
          <Default>Q0</Default>
        </Parameter>

        <Parameter ParameterId="71115" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
            onlineaccess="read" />
          <Name name="local:SetstepCompareEnable">SetstepCompareEnable</Name>
          <Description name="local:SetstepCompareEnable">SetstepCompareEnable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71116" type="localTypes:DOPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
            onlineaccess="read" />
          <Name name="local:SetstepCompareDONum">SetstepCompareDONum</Name>
          <Description name="local:SetstepCompareDONum">SetstepCompareDONum</Description>
          <Default>Q0</Default>
        </Parameter>
-->
        <Parameter ParameterId="71117" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:TouchProbe0Enable">TouchProbe0Enable</Name>
          <Description name="local:TouchProbe0Enable">TouchProbe0Enable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71118" type="localTypes:DIPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:TouchProbe0DINum">TouchProbe0DINum</Name>
          <Description name="local:TouchProbe0DINum">TouchProbe0DINum</Description>
          <Default>I0</Default>
        </Parameter>
        <!-- <Parameter ParameterId="71119" type="localTypes:DITrigMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:TouchProbe0TrigMode">TouchProbe0TrigMode</Name>
          <Description name="local:TouchProbe0TrigMode">TouchProbe0TrigMode</Description>
          <Default>mode0</Default>
        </Parameter> -->
        <Parameter ParameterId="71120" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:TouchProbe1Enable">TouchProbe1Enable</Name>
          <Description name="local:TouchProbe1Enable">TouchProbe1Enable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71121" type="localTypes:DIPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:TouchProbe1DINum">TouchProbe1DINum</Name>
          <Description name="local:TouchProbe1DINum">TouchProbe1DINum</Description>
          <Default>I0</Default>
        </Parameter>
        <!-- <Parameter ParameterId="71122" type="localTypes:DITrigMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:TouchProbe1TrigMode">TouchProbe1TrigMode</Name>
          <Description name="local:TouchProbe1TrigMode">TouchProbe1TrigMode</Description>
          <Default>mode0</Default>
        </Parameter> -->
        <!-- <Parameter ParameterId="71123" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:EnableInterruptEnable">EnableInterruptEnable</Name>
          <Description name="local:EnableInterruptEnable">EnableInterruptEnable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71124" type="localTypes:CounterIDRange">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:EnableInterruptID">EnableInterruptID</Name>
          <Description name="local:EnableInterruptID">EnableInterruptID</Description>
        </Parameter>
        <Parameter ParameterId="71125" type="localTypes:EnableInterruptMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:EnableInterruptMode">EnableInterruptMode</Name>
          <Description name="local:EnableInterruptMode">EnableInterruptMode</Description>
          <Default>mode0</Default>
        </Parameter>
        <Parameter ParameterId="71126" type="localTypes:DIPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:EnableInterruptDINum">EnableInterruptDINum</Name>
          <Description name="local:EnableInterruptDINum">EnableInterruptDINum</Description>
          <Default>I0</Default>
        </Parameter> -->
        <!-- <Parameter ParameterId="71127" type="localTypes:DITrigMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:EnableInterruptTrigMode">EnableInterruptTrigMode</Name>
          <Description name="local:EnableInterruptTrigMode">EnableInterruptTrigMode</Description>
          <Default>mode0</Default>
        </Parameter> -->
        <!-- <Parameter ParameterId="71128" type="localTypes:CounterIDRange">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:EnableInterruptCompareEvent">EnableInterruptCompareEvent</Name>
          <Description name="local:EnableInterruptCompareEvent">EnableInterruptCompareEvent</Description>
        </Parameter> -->
        <!-- <Parameter ParameterId="71129" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:PwmEnable">PwmEnable</Name>
          <Description name="local:PwmEnable">PwmEnable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71130" type="localTypes:CounterIDRange">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:PwmID">PwmID</Name>
          <Description name="local:PwmID">PwmID</Description>
        </Parameter>
        <Parameter ParameterId="71131" type="localTypes:DOPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:PwmDONum">PwmDONum</Name>
          <Description name="local:PwmDONum">PwmDONum</Description>
          <Default>Y00</Default>
        </Parameter> -->
        <Parameter ParameterId="71132" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:HardwareResetEnable">HardwareResetEnable</Name>
          <Description name="local:HardwareResetEnable">HardwareResetEnable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71133" type="localTypes:DIPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:HardwareResetDINum">HardwareResetDINum</Name>
          <Description name="local:HardwareResetDINum">HardwareResetDINum</Description>
          <Default>I0</Default>
        </Parameter>
        <Parameter ParameterId="71134" type="localTypes:HardwareResetMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:HardwareResetMode">HardwareResetMode</Name>
          <Description name="local:HardwareResetMode">HardwareResetMode</Description>
          <Default>mode0</Default>
        </Parameter>
        <Parameter ParameterId="71135" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:VirtualTouchProbe0Enable">VirtualTouchProbe0Enable</Name>
          <Description name="local:VirtualTouchProbe0Enable">VirtualTouchProbe0Enable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71136" type="localTypes:DIPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:VirtualTouchProbe0DINum">VirtualTouchProbe0DINum</Name>
          <Description name="local:VirtualTouchProbe0DINum">VirtualTouchProbe0DINum</Description>
          <Default>I0</Default>
        </Parameter>
        <!-- <Parameter ParameterId="71137" type="localTypes:DITrigMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:VirtualTouchProbe0TrigMode">VirtualTouchProbe0TrigMode</Name>
          <Description name="local:VirtualTouchProbe0TrigMode">VirtualTouchProbe0TrigMode</Description>
          <Default>mode0</Default>
        </Parameter> -->
        <Parameter ParameterId="71138" type="std:BOOL">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:VirtualTouchProbe1Enable">VirtualTouchProbe1Enable</Name>
          <Description name="local:VirtualTouchProbe1Enable">VirtualTouchProbe1Enable</Description>
          <Default>FALSE</Default>
        </Parameter>
        <Parameter ParameterId="71139" type="localTypes:DIPortType">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
          <Name name="local:VirtualTouchProbe1DINum">VirtualTouchProbe1DINum</Name>
          <Description name="local:VirtualTouchProbe1DINum">VirtualTouchProbe1DINum</Description>
          <Default>I0</Default>
        </Parameter>
        <!-- <Parameter ParameterId="71140" type="localTypes:DITrigMode">
          <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite"
        onlineaccess="read" />
          <Name name="local:VirtualTouchProbe1TrigMode">VirtualTouchProbe1TrigMode</Name>
          <Description name="local:VirtualTouchProbe1TrigMode">VirtualTouchProbe1TrigMode</Description>
          <Default>mode0</Default>
        </Parameter> -->
        <!-- PDO -->
        <Parameter ParameterId="1000" type="std:DINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CounterValue">Counter Value</Name>
          <Description name="local:CounterValue">Counter Value</Description>
        </Parameter>
        <Parameter ParameterId="1001" type="std:DINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CcTouchProbe0RisingPos">CcTouchProbe0 Rising Pos</Name>
          <Description name="local:CcTouchProbe0RisingPos">CcTouchProbe0 Rising Pos</Description>
        </Parameter>
        <Parameter ParameterId="1002" type="std:DINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CcTouchProbe0FallingPos">CcTouchProbe0 Falling Pos</Name>
          <Description name="local:CcTouchProbe0FallingPos">CcTouchProbe0 Falling Pos</Description>
        </Parameter>
        <Parameter ParameterId="1003" type="std:UDINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CcTouchProbe0RisingTime">CcTouchProbe0 Rising Time</Name>
          <Description name="local:CcTouchProbe0RisingTime">CcTouchProbe0 Rising Time</Description>
        </Parameter>
        <Parameter ParameterId="1004" type="std:UDINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CcTouchProbe0FallingTime">CcTouchProbe0 Falling Time</Name>
          <Description name="local:CcTouchProbe0FallingTime">CcTouchProbe0 Falling Time</Description>
        </Parameter>
        <Parameter ParameterId="1005" type="std:DINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CcTouchProbe1RisingPos">CcTouchProbe1 Rising Pos</Name>
          <Description name="local:CcTouchProbe1RisingPos">CcTouchProbe1 Rising Pos</Description>
        </Parameter>
        <Parameter ParameterId="1006" type="std:DINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CcTouchProbe1FallingPos">CcTouchProbe1 Falling Pos</Name>
          <Description name="local:CcTouchProbe1FallingPos">CcTouchProbe1 Falling Pos</Description>
        </Parameter>
        <Parameter ParameterId="1007" type="std:UDINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CcTouchProbe1RisingTime">CcTouchProbe1 Rising Time</Name>
          <Description name="local:CcTouchProbe1RisingTime">CcTouchProbe1 Rising Time</Description>
        </Parameter>
        <Parameter ParameterId="1008" type="std:UDINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:CcTouchProbe1FallingTime">CcTouchProbe1 Falling Time</Name>
          <Description name="local:CcTouchProbe1FallingTime">CcTouchProbe1 Falling Time</Description>
        </Parameter>
        <!-- <Parameter ParameterId="1009" type="std:DINT">
          <Attributes channel="input"/>
          <Default>0</Default>
          <Name name="local:VirtualTouchProbe0RisingPos">VirtualTouchProbe0 Rising Pos</Name>
        </Parameter>
        <Parameter ParameterId="1010" type="std:DINT">
          <Attributes channel="input"/>
          <Default>0</Default>
          <Name name="local:VirtualTouchProbe0FallingPos">VirtualTouchProbe0 Falling Pos</Name>
        </Parameter>     -->
        <Parameter ParameterId="1011" type="std:UDINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:VirtualTouchProbe0RisingTime">VirtualTouchProbe0 Rising Time</Name>
          <Description name="local:VirtualTouchProbe0RisingTime">VirtualTouchProbe0 Rising Time</Description>
        </Parameter>
        <Parameter ParameterId="1012" type="std:UDINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:VirtualTouchProbe0FallingTime">VirtualTouchProbe0 Falling Time</Name>
          <Description name="local:VirtualTouchProbe0FallingTime">VirtualTouchProbe0 Falling Time</Description>
        </Parameter>
        <!-- <Parameter ParameterId="1013" type="std:DINT">
          <Attributes channel="input"/>
          <Default>0</Default>
          <Name name="local:VirtualTouchProbe1RisingPos">VirtualTouchProbe1 Rising Pos</Name>
        </Parameter>
        <Parameter ParameterId="1014" type="std:DINT">
          <Attributes channel="input"/>
          <Default>0</Default>
          <Name name="local:VirtualTouchProbe1FallingPos">VirtualTouchProbe1 Falling Pos</Name>
        </Parameter>     -->
        <Parameter ParameterId="1015" type="std:UDINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:VirtualTouchProbe1RisingTime">VirtualTouchProbe1 Rising Time</Name>
          <Description name="local:VirtualTouchProbe1RisingTime">VirtualTouchProbe1 Rising Time</Description>
        </Parameter>
        <Parameter ParameterId="1016" type="std:UDINT">
          <Attributes channel="input" />
          <Default>0</Default>
          <Name name="local:VirtualTouchProbe1FallingTime">VirtualTouchProbe1 Falling Time</Name>
          <Description name="local:VirtualTouchProbe1FallingTime">VirtualTouchProbe1 Falling Time</Description>
        </Parameter>
        <!-- <Parameter ParameterId="2000" type="std:DWORD">
        <Attributes channel="output"/>
        <Default>17</Default>
        <Name name="local:out1">out1</Name>
        </Parameter>
        <Parameter ParameterId="2001" type="std:BYTE">
        <Attributes channel="output"/>
        <Default/>
        <Name name="local:out2">out2</Name>
        </Parameter> -->
      </HostParameterSet>
      <DriverInfo needsBusCycle="false" needsBusCycleBeforeReadInputs="true">
        <RequiredLib libname="HighSpeedIO" placeholderlib="HighSpeedIO" vendor="Suzhou Lingchen Acquisition Computer Co.Ltd." version="20250322" identifier="HighSpeedIO">
          <FBInstance basename="$(DeviceName)" fbname="CounterDrive" fbnamediag="CounterDevice">
            <Initialize methodName="Initialize" />
          </FBInstance>
        </RequiredLib>
      </DriverInfo>
    </Connector>
  </Device>
</DeviceDescription>