﻿<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE DeviceDescription[
<!ENTITY standardparameters SYSTEM "StandardParametersVirtual.xml">
]>
<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" xsi:schemaLocation="http://www.3s-software.com/schemas/DeviceDescription-1.0.xsd">
  <Types namespace="localTypes">
  </Types>
  <Files namespace="local">
    <Language lang="en">
      <File fileref="local" identifier="DriveIcon">
        <LocalFile>SoftMotion_Virtual_Small.ico</LocalFile>
      </File>
    </Language>
  </Files>
  <Device>
    <DeviceIdentification>
      <Type>1150</Type>
      <Id>FFFF 0001</Id>
      <Version>4.0.0.0</Version>
    </DeviceIdentification>
    <CompatibleVersions>
      <Version>4.*.*.*</Version>
      <Version>3.5.*.*</Version>
      <Version>3.4.*.*</Version>
    </CompatibleVersions>
    <DeviceInfo>
      <Name name="localStrings:TypeName">Axis</Name>
      <Description name="localStrings:TypeDescription">LC Pulser Axis</Description>
      <Vendor name="localStrings:_3S">Suzhou Lingchen Acquisition Computer Co.Ltd.</Vendor>
      <OrderNumber>0x17da 0021 C617</OrderNumber>
      <Icon name="local:DriveIcon">SoftMotion_Virtual_Small.ico</Icon>
    </DeviceInfo>
    <!--
    <Connector connectorId="1" moduleType="1248" interface="Common.SoftMotion.Logical" role="parent" explicit="false" hostpath="0" initialStatusFlag="241">
      <InterfaceName name="local:InterfaceName">SM_Drive_Logical:</InterfaceName>
      <Var />
    </Connector>
	-->
    <Connector role="child" connectorId="0" interface="Local.Pulser" moduleType="1150" explicit="false">
      <InterfaceName name="localStrings:InterfaceName">Axis:</InterfaceName>
      <Slot count="1" allowEmpty="false" />
      <HostParameterSet>
        <ParameterSection>
          <Name name="local:AXIS_REF">AXIS_REF: Standard</Name>
          <Parameter ParameterId="1021" type="std:WORD">
            <Attributes download="true" functional="false" />
            <Default>0</Default>
            <Name name="x">wDriveID</Name>
            <Description name="x">Unique ID of the drive</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="71000" type="std:BOOL">
            <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
            <Name name="local:Axis_P_Enable">Axis_P_Enable</Name>
            <Description name="local:Axis_P_Enable">Axis_P_Enable</Description>
            <Default>TRUE</Default>
          </Parameter>
          <Parameter ParameterId="71020" type="std:BYTE">
            <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
            <Name name="local:HomingMethods">HomingMethods</Name>
            <Description name="local:HomingMethods">HomingMethods</Description>
            <Default>35</Default>
          </Parameter>
          <Parameter ParameterId="71021" type="std:LREAL">
            <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
            <Name name="local:HomingVel">HomingVel</Name>
            <Description name="local:HomingVel">HomingVel</Description>
            <Default>1000</Default>
          </Parameter>
          <Parameter ParameterId="71022" type="std:LREAL">
            <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
            <Name name="local:HomingCrawlVel">HomingCrawlVel</Name>
            <Description name="local:HomingCrawlVel">HomingCrawlVel</Description>
            <Default>100</Default>
          </Parameter>
          <Parameter ParameterId="71023" type="std:BYTE">
            <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
            <Name name="local:PositionMethods">PositionMethods</Name>
            <Description name="local:PositionMethods">PositionMethods</Description>
            <Default>0</Default>
          </Parameter>
          <Parameter ParameterId="71024" type="std:LREAL">
            <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
            <Name name="local:HomingAcc">HomingAcc</Name>
            <Description name="local:HomingAcc">HomingAcc</Description>
            <Default>1000</Default>
          </Parameter>
          <Parameter ParameterId="71025" type="std:UDINT">
            <Attributes channel="none" download="true" functional="false" offlineaccess="readwrite" onlineaccess="read" />
            <Name name="local:HomingTimeLimit">HomingTimeLimit</Name>
            <Description name="local:HomingTimeLimit">HomingTimeLimit</Description>
            <Default>50000</Default>
          </Parameter>
          <Parameter ParameterId="5000" type="std:UDINT">
            <Default>1</Default>
            <Name name="localStrings:numerator">numerator</Name>
            <Description name="local:Scalings">脉冲数pluse=numerator/denominator * 移动距离(用户单位unit)</Description>
          </Parameter>
          <!-- <Parameter ParameterId="5001" type="std:DINT">
            <Default>1</Default>
            <Name name="localStrings:ScalingMotorTurns1">ScalingEncoderTurns1</Name>
          </Parameter> -->
          <!-- <Parameter ParameterId="5002" type="std:DINT">
            <Default>1</Default>
            <Name name="localStrings:ScalingMotorTurns2">ScalingEncoderTurns2</Name>
          </Parameter> -->
          <Parameter ParameterId="5005" type="std:LREAL">
            <Default>1</Default>
            <Name name="localStrings:denominator">denominator</Name>
            <Description name="local:Scalings">脉冲数pluse=numerator/denominator * 移动距离(用户单位unit)</Description>
          </Parameter>
          <!-- <Parameter ParameterId="5006" type="std:BOOL">
            <Default>FALSE</Default>
            <Name name="localStrings:InvertDirection">InvertDirection</Name>
          </Parameter> -->
          <Parameter ParameterId="1040" type="std:BOOL">
            <Attributes download="true" functional="false" offlineaccess="read" />
            <Default>TRUE</Default>
            <Name name="localStrings:AXIS_REF.bVirtual">bVirtual</Name>
            <Description name="localStrings:AXIS_REF.bVirtual.Desc">drive is simulated</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1060" type="std:INT">
            <Attributes download="true" functional="false" />
            <Default>1</Default>
            <Name name="x">iMovementType</Name>
            <Description name="x">Movement type: 0: modulo, 1: finite</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1061" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>360.0</Default>
            <Name name="x">fPositionPeriod</Name>
            <Description name="x">Modulo period value for modulo drives [u]</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1205" type="std:BOOL">
            <Attributes download="true" functional="false" />
            <Default>FALSE</Default>
            <Name name="x">bSWLimitEnable</Name>
            <Description name="x">Activate/deactivate software limits</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1201" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>0.0</Default>
            <Name name="x">fSWLimitNegative</Name>
            <Description name="x">Software limit in negative direction</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1200" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>1000.0</Default>
            <Name name="x">fSWLimitPositive</Name>
            <Description name="x">Software limit in positive direction</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1062" type="std:INT">
            <Attributes download="true" functional="false" />
            <Default>0</Default>
            <Name name="x">eRampType</Name>
            <Description name="x">The velocity ramp used for trajectories.</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1144" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>0</Default>
            <Name name="x">fRampJerk</Name>
            <Description name="x">Jerk used for bringing acceleration to 0 when sin² ramp is interrupted.</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1113" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>200000</Default>
            <Name name="x">fSWMaxVelocity</Name>
            <Description name="x">Maximum velocity magnitude (software limit)</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1123" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>1000000</Default>
            <Name name="x">fSWMaxAcceleration</Name>
            <Description name="x">Maximum acceleration magnitude (software limit)</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1133" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>1000000</Default>
            <Name name="x">fSWMaxDeceleration</Name>
            <Description name="x">Maximum deceleration magnitude (software limit)</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1143" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>10000000</Default>
            <Name name="x">fSWMaxJerk</Name>
            <Description name="x">Maximum jerk magnitude (software limit)</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1203" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>0</Default>
            <Name name="x">fSWLimitDeceleration</Name>
            <Description name="x">Deceleration for  stop on software error [u/s²]</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1250" type="std:LREAL">
            <Attributes download="true" functional="false" />
            <Default>0</Default>
            <Name name="x">fSWErrorMaxDistance</Name>
            <Description name="x">Maximum distance that may be travelled for ramping down after a software error has been detected [u]</Description>
            <Custom />
          </Parameter>
        </ParameterSection>
        <!-- <ParameterSection>
          <Name name="local:StandardDriverSettings">AXIS_REF: scaling settings</Name>
          <Parameter ParameterId="1051" type="std:DWORD">
            <Attributes download="true" functional="false" />
            <Default>1</Default>
            <Name name="localStrings:AXIS_REF.dwRatioTechUnitsDenom">dwRatioTechUnitsDenom</Name>
            <Description name="localStrings:AXIS_REF.dwRatioTechUnitsDenom.Desc">conversion inc./tech.units denominator</Description>
            <Custom />
          </Parameter>
          <Parameter ParameterId="1052" type="std:DINT">
            <Attributes download="true" functional="false" />
            <Default>1</Default>
            <Name name="localStrings:AXIS_REF.iRatioTechUnitsNum">iRatioTechUnitsNum</Name>
            <Description name="localStrings:AXIS_REF.iRatioTechUnitsNum.Desc">conversion inc./tech.units numerator</Description>
            <Custom />
          </Parameter>
        </ParameterSection> -->
      </HostParameterSet>
      <DriverInfo needsBusCycle="false">
        <RequiredLib libname="HighSpeedIO" placeholderlib="HighSpeedIO" vendor="Suzhou Lingchen Acquisition Computer Co.Ltd." version="20250322" identifier="HighSpeedIO">
          <FBInstance basename="$(DeviceName)" fbname="Axis" fbnamediag="Axis">
            <Initialize methodName="Initialize" />
            <CyclicCall methodname="BeforeReadInputs" task="#buscycletask" whentocall="beforeReadInputs" />
            <CyclicCall methodname="AfterReadInputs" task="#buscycletask" whentocall="afterReadInputs" />
            <CyclicCall methodname="BeforeWriteOutputs" task="#buscycletask" whentocall="beforeWriteOutputs" />
          </FBInstance>
        </RequiredLib>
      </DriverInfo>
    </Connector>
  </Device>
</DeviceDescription>