From 19d71a3c3debdeeed15947e9ac3b022596dcb314 Mon Sep 17 00:00:00 2001
From: lhiven <236881222@qq.com>
Date: Tue, 6 Jun 2023 19:19:59 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E5=9B=BA=E9=AB=98?=
=?UTF-8?q?=E8=84=89=E5=86=B2=E5=8D=A1=E7=9A=84=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Rs.Motion/GugaoPulse/GugaoPulseAxis.cs | 1533 +++++++++++++++++
Rs.Motion/GugaoPulse/GugaoPulseCard.cs | 111 ++
Rs.Motion/GugaoPulse/GugaoPulseCardManager.cs | 87 +
Rs.Motion/GugaoPulse/IO.cs | 127 ++
Rs.Motion/Invoke/GugaoPulse/gts.cs | 1265 ++++++++++++++
Rs.Motion/Rs.Motion.csproj | 5 +
6 files changed, 3128 insertions(+)
create mode 100644 Rs.Motion/GugaoPulse/GugaoPulseAxis.cs
create mode 100644 Rs.Motion/GugaoPulse/GugaoPulseCard.cs
create mode 100644 Rs.Motion/GugaoPulse/GugaoPulseCardManager.cs
create mode 100644 Rs.Motion/GugaoPulse/IO.cs
create mode 100644 Rs.Motion/Invoke/GugaoPulse/gts.cs
diff --git a/Rs.Motion/GugaoPulse/GugaoPulseAxis.cs b/Rs.Motion/GugaoPulse/GugaoPulseAxis.cs
new file mode 100644
index 0000000..58af361
--- /dev/null
+++ b/Rs.Motion/GugaoPulse/GugaoPulseAxis.cs
@@ -0,0 +1,1533 @@
+using GTN;
+using gts;
+using Rs.Framework;
+using Rs.Motion.Base;
+using Rs.Motion.Base.Config;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Rs.Motion.GugaoPulse
+{
+ public class GugaoPulseAxis:IAxis
+ {
+ public GugaoPulseAxis(AxisConfig config)
+ {
+ Config = config;
+ }
+
+ private GugaoPulseCardManager cardManager = GugaoPulseCardManager.Instance;
+ private short apiResult = 0;
+ private double m_dfCommandPosition = 0.0;
+ private object m_objLocker = new object();
+
+
+ ///
+ /// 轴初始化,设置轴参数
+ ///
+ ///
+ public override ErrorCode Init()
+ {
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ HomeStatus = EHomeStatus.NotStart;
+ if (Config.EnableAlarm == 0)
+ mc_pulse.GT_AlarmOff((short)Config.CardId, (short)Config.AxisId);
+ else if (Config.EnableAlarm == 1)
+ mc_pulse.GT_AlarmOn((short)Config.CardId, (short)Config.AxisId);
+
+ //先判断正限位
+
+
+ if((Config.EnableEL & 0x01)==0)//禁用正限位
+ {
+ mc_pulse.GT_LmtsOff((short)Config.CardId, (short)Config.AxisId, 0);
+ }
+ else if((Config.EnableEL & 0x01) == 1)
+ {
+ mc_pulse.GT_LmtsOn((short)Config.CardId, (short)Config.AxisId,0);
+ }
+ //先判断负限位
+ if (((Config.EnableEL>>1) & 0x01) == 0)
+ {
+ mc_pulse.GT_LmtsOff((short)Config.CardId, (short)Config.AxisId, 1);
+ }
+ else if (((Config.EnableEL>>1) & 0x01) == 1)
+ {
+ mc_pulse.GT_LmtsOn((short)Config.CardId, (short)Config.AxisId, 1);
+ }
+
+ mc_pulse.GT_EncSns((short)Config.CardId, 0);
+
+ mc_pulse.GT_SetCaptureSense((short)Config.CardId, (short)Config.AxisId, mc_pulse.CAPTURE_HOME, (short)Config.HomeOrgLogic);
+
+
+
+ IsInitialized = true;
+ return Enable();
+ }
+
+ ///
+ /// 反初始化轴,停止轴
+ ///
+ ///
+ public override ErrorCode Deinit()
+ {
+ IsInitialized = false;
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ else
+ {
+ Stop();
+ Disable();
+ return ErrorCode.Ok;
+ }
+ }
+
+ ///
+ /// 毫米转脉冲
+ /// 总长度/电机转一圈走的长度*电机转一圈的脉冲数
+ ///
+ ///
+ ///
+ ///
+ public override ErrorCode MmToPulse(double mm, out double pulse)
+ {
+ pulse = 0;
+
+ if (Config.DistOneRound == 0.0)
+ {
+ return ErrorCode.UndefineDistanceOneRound;
+ }
+ else
+ {
+ pulse = mm / Config.DistOneRound * (double)Config.PulseOneRound;
+ return ErrorCode.Ok;
+ }
+ }
+
+ ///
+ /// 脉冲转毫米
+ /// 总脉冲数/电机转一圈的脉冲数*电机转一圈走的长度
+ ///
+ ///
+ ///
+ ///
+ public override ErrorCode PulseToMm(double pulse, out double mm)
+ {
+ mm = 0;
+ if (Config.PulseOneRound == 0)
+ {
+ return ErrorCode.UndefinePulseOneRound;
+ }
+ else
+ {
+ mm = pulse / (double)Config.PulseOneRound * Config.DistOneRound;
+ return ErrorCode.Ok;
+ }
+ }
+
+ ///
+ /// 使能电机
+ ///
+ ///
+ public override ErrorCode Enable()
+ {
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ else
+ {
+ apiResult = mc_pulse.GT_ClrSts((short)Config.CardId, (short)Config.AxisId, 1);
+ if (apiResult != 0)
+ return ErrorCode.Fail;
+ apiResult = mc_pulse.GT_AxisOn((short)Config.CardId, (short)Config.AxisId);
+ if (apiResult != 0)
+ return ErrorCode.Fail;
+ else
+ return ErrorCode.Ok;
+ }
+ }
+
+ ///
+ /// 去使能
+ ///
+ ///
+ public override ErrorCode Disable()
+ {
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ apiResult = mc_pulse.GT_AxisOff((short)Config.CardId, (short)Config.AxisId);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 停止运动
+ ///
+ ///
+ public override ErrorCode Stop()
+ {
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ //int axes = 1 << m_axis_config.AxisId;
+ //int option = 1 << m_axis_config.AxisId;
+ apiResult = mc_pulse.GT_Stop((short)Config.CardId, 1 << Config.AxisId - 1, 1 << Config.AxisId - 1);//option 对应位1表示紧急停止 0 为平滑停止
+ if (apiResult != 0)
+ return ErrorCode.Fail;
+ else
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 运动控制卡回零
+ ///
+ ///
+ public override ErrorCode Default_Home_Move()
+ {
+ //if (!m_motion_card.IsInitialized)
+ //{
+ // return ErrorCode.CARD_NOT_INIT;
+ //}
+ //if (!m_bIsInitialized)
+ //{
+ // return ErrorCode.AXIS_NOT_INIT;
+ //}
+ //ErrorCode err = MmToPulse(m_axis_config.HomeOffset, out double dfHome_offset);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //err = MmToPulse(1.0, out double dfPulseRaio);
+ //m_LastErrorCode = ZTM.ZT_SetHomePol(m_axis_config.CardMc, (short)m_axis_config.AxisId, (short)m_axis_config.HomeOrgLogic);
+ //if (m_LastErrorCode != 0)
+ //{
+ // return ErrorCode.FAIL;
+ //}
+ //MmToPulse(m_axis_config.HomeSpeed, out double homeSpeedPulse);
+
+ ////acc vel/s mm/s pulse/s pulse/ms mm
+ //MmToPulse(m_axis_config.MaxSpeed, out double maxSpeedPulse);
+
+ //m_LastErrorCode = ZTM.ZT_SetHomeParam(m_axis_config.CardMc,
+ // (short)m_axis_config.AxisId,
+ // (short)m_axis_config.HomeDir,
+ // (short)m_axis_config.HomeMode,
+ // (float)((double)(homeSpeedPulse / 4) / 1000.0),
+ // (float)((double)homeSpeedPulse / 1000.0),
+ // (float)((maxSpeedPulse / 1000.0) / (m_axis_config.AccTime * 1000.0)),
+ // (int)dfHome_offset, 0);
+ //if (m_LastErrorCode != 0)
+ //{
+ // return ErrorCode.FAIL;
+ //}
+ ////int axes = SetBit(0, (int)m_axis_config.AxisId, 1);
+ ////m_LastErrorCode = ZTM.ZT_Home(m_axis_config.CardMc, (uint)axes);
+ //if (m_LastErrorCode != 0)
+ //{
+ // return ErrorCode.MOVE_FAIL;
+ //}
+ //else
+ //{
+ // return ErrorCode.OK;
+ //}
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 绝对位置运动
+ ///
+ ///
+ ///
+ ///
+ ///
+ public override ErrorCode MovePos(double dfPosVal, int nSpeedPercent = 100, bool bypassEL = false)
+ {
+ if (!cardManager.IsInitialized)
+ return ErrorCode.CardNotInit;
+ if (!IsInitialized)
+ return ErrorCode.AxisNotInit;
+
+ nSpeedPercent = nSpeedPercent <= 0 ? 10 : nSpeedPercent;
+ nSpeedPercent = nSpeedPercent > 100 ? 100 : nSpeedPercent;
+ if (HomeStatus != EHomeStatus.Finished)
+ return ErrorCode.AxisNotHome;
+ //bool isNotSafe = !bypassEL
+ // && (dfPosVal > m_axis_config.PelSoftwarePosition || dfPosVal < m_axis_config.NelSoftwarePosition)
+ // && m_axis_config.PelSoftwarePosition != m_axis_config.NelSoftwarePosition;
+ //if (isNotSafe)
+ // return ErrorCode.POSITION_OUT_OF_RANGE;
+ ErrorCode err = GetEmgStatus(out bool bEmg);
+ if (err > ErrorCode.Ok)
+ return err;
+ if (bEmg)
+ return ErrorCode.Emergency;
+ err = GetAlarmStatus(out bool bAlarm);
+ if (err > ErrorCode.Ok)
+ return err;
+ if (bAlarm)
+ return ErrorCode.Alarm;
+ err = IsEnable(out bool bEnable);
+ if (err > ErrorCode.Ok)
+ return err;
+ if (!bEnable)
+ return ErrorCode.ServoOff;
+ err = IsStop(out bool bStop);
+ if (err > ErrorCode.Ok)
+ return err;
+ if (!bStop)
+ return ErrorCode.Moving;
+ err = MmToPulse(dfPosVal, out double dfPos);
+ if (err > ErrorCode.Ok)
+ return err;
+ double dfPercent = (double)nSpeedPercent / 100.0;
+
+ MmToPulse(Config.MaxSpeed, out double maxSpeedPulse);
+ MmToPulse(Config.MinSpeed, out double minSpeedPulse);
+ MmToPulse(Config.StopSpeed, out double stopSpeedPulse);
+
+ float fMaxVel = (float)(maxSpeedPulse * dfPercent / 1000.0);//pulse/ms
+ float fAcc = (float)(maxSpeedPulse / Config.AccTime / 1000000.0);
+ float fDec = (float)(maxSpeedPulse / Config.DecTime / 1000000.0);
+ float fStart = (float)(minSpeedPulse / 1000.0);
+ float fStop = (float)(stopSpeedPulse / 1000.0);
+ apiResult = mc_pulse.GT_PrfTrap((short)Config.CardId, (short)Config.AxisId);//设置运动模式为点位运动
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_GetTrapPrm((short)Config.CardId, (short)Config.AxisId, out mc_pulse.TTrapPrm trapPrm);//获取点位运动参数
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ trapPrm.acc = fAcc;
+ trapPrm.dec = fDec;
+ trapPrm.velStart = fStart;
+ apiResult = mc_pulse.GT_SetTrapPrm((short)Config.CardId, (short)Config.AxisId, ref trapPrm);//设置点位运动参数
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_SetPos((short)Config.CardId, (short)Config.AxisId, (int)dfPos);//设置目标位置
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_SetVel((short)Config.CardId, (short)Config.AxisId, fMaxVel);//设置目标速度
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_Update((short)Config.CardId, (1 << Config.AxisId - 1));
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ else
+ {
+ return ErrorCode.Ok;
+ }
+ }
+
+ ///
+ /// 相对当前位置运动
+ ///
+ ///
+ ///
+ ///
+ ///
+ public override ErrorCode MoveOffset(double dfDistVal, int nSpeedPercent = 100, bool bypassEL = false)
+ {
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ if (!IsInitialized)
+ {
+ return ErrorCode.AxisNotInit;
+ }
+ nSpeedPercent = nSpeedPercent <= 0 ? 10 : nSpeedPercent;
+ nSpeedPercent = nSpeedPercent > 100 ? 100 : nSpeedPercent;
+ double curPos = 0.0;
+ ErrorCode err;
+ //if(m_axis_config.EnableEncoder==1)
+ //{
+ // err = GetEncoderPosition(out curPos);
+ // if (err > ErrorCode.OK)
+ // {
+ // return err;
+ // }
+ //}
+ //else
+ {
+ err = GetPrfPosition(out curPos);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ }
+ double dstPos = curPos + dfDistVal;
+ //bool isNotSafe = !bypassEL && (dstPos > Config.PelSoftwarePosition || dstPos < Config.NelSoftwarePosition)
+ // && Config.PelSoftwarePosition != Config.NelSoftwarePosition;
+ //if (isNotSafe)
+ //{
+ // return ErrorCode.POSITION_OUT_OF_RANGE;
+ //}
+
+ err = GetEmgStatus(out bool bEmg);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (bEmg)
+ {
+ return ErrorCode.Emergency;
+ }
+ err = GetAlarmStatus(out bool bAlarm);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (bAlarm)
+ {
+ return ErrorCode.Alarm;
+ }
+ err = IsEnable(out bool bEnable);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (!bEnable)
+ {
+ return ErrorCode.ServoOff;
+ }
+ err = IsStop(out bool bStop);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (!bStop)
+ {
+ return ErrorCode.Moving;
+ }
+ //return MovePos(dstPos, nSpeedPercent, bypassEL);
+ err = MmToPulse(dstPos, out double dfPos);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ double dfPercent = (double)nSpeedPercent / 100.0;
+ MmToPulse(Config.MaxSpeed, out double maxSpeedPulse);
+ MmToPulse(Config.MinSpeed, out double minSpeedPulse);
+ MmToPulse(Config.StopSpeed, out double stopSpeedPulse);
+
+ float fMaxVel = (float)(maxSpeedPulse * dfPercent / 1000.0);//pulse/ms
+ float fAcc = (float)(maxSpeedPulse / Config.AccTime / 1000000.0);//pulse/ms2
+ float fDec = (float)(maxSpeedPulse / Config.DecTime / 1000000.0);//pulse/ms2
+ float fStart = (float)(minSpeedPulse / 1000.0);//pulse/ms
+ float fStop = (float)(stopSpeedPulse / 1000.0);//pulse/ms
+
+
+ apiResult = mc_pulse.GT_PrfTrap((short)Config.CardId, (short)Config.AxisId);//设置运动模式为点位运动
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_GetTrapPrm((short)Config.CardId, (short)Config.AxisId, out mc_pulse.TTrapPrm trapPrm);//获取点位运动参数
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ trapPrm.acc = fAcc;
+ trapPrm.dec = fDec;
+ trapPrm.velStart = fStart;
+ apiResult = mc_pulse.GT_SetTrapPrm((short)Config.CardId, (short)Config.AxisId, ref trapPrm);//设置点位运动参数
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_SetPos((short)Config.CardId, (short)Config.AxisId, (int)dfPos);//设置目标位置
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_SetVel((short)Config.CardId, (short)Config.AxisId, fMaxVel);//设置目标速度
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_Update((short)Config.CardId, (1 << Config.AxisId - 1));
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ else
+ {
+ m_dfCommandPosition = dstPos;
+ return ErrorCode.Ok;
+ }
+ }
+
+ public override ErrorCode MoveJog(short dir, int nSpeedPercent = 10)
+ {
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ if (!IsInitialized)
+ {
+ return ErrorCode.AxisNotInit;
+ }
+
+ nSpeedPercent = nSpeedPercent <= 0 ? 10 : nSpeedPercent;
+ nSpeedPercent = nSpeedPercent > 100 ? 100 : nSpeedPercent;
+ ErrorCode err = IsEnable(out bool bEnable);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (!bEnable)
+ {
+ return ErrorCode.ServoOff;
+ }
+ err = IsStop(out bool bStop);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (!bStop)
+ {
+ return ErrorCode.Moving;
+ }
+ err = GetEmgStatus(out bool bEmg);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (bEmg)
+ {
+ return ErrorCode.Emergency;
+ }
+ err = GetAlarmStatus(out bool bAlarm);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (bAlarm)
+ {
+ return ErrorCode.Alarm;
+ }
+ else
+ {
+ double dfPercent = (double)nSpeedPercent / 100.0;
+
+ MmToPulse(Config.MaxSpeed, out double maxSpeedPulse);
+ MmToPulse(Config.MinSpeed, out double minSpeedPulse);
+ MmToPulse(Config.StopSpeed, out double stopSpeedPulse);
+
+ float fMaxVel = (float)(maxSpeedPulse * dfPercent / 1000.0);//pulse/ms
+ float fAcc = (float)(maxSpeedPulse / Config.AccTime / 1000000.0);
+ float fDec = (float)(maxSpeedPulse / Config.DecTime / 1000000.0);
+ float fStart = (float)(minSpeedPulse / 1000.0);
+ float fStop = (float)(stopSpeedPulse / 1000.0);
+
+
+ apiResult = mc_pulse.GT_PrfJog((short)Config.CardId, (short)Config.AxisId);//设置运动模式为JOG运动模式
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_GetJogPrm((short)Config.CardId, (short)Config.AxisId, out mc_pulse.TJogPrm jogPrm);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ jogPrm.acc = fAcc;
+ jogPrm.dec = fDec;
+ apiResult = mc_pulse.GT_SetJogPrm((short)Config.CardId, (short)Config.AxisId, ref jogPrm);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ if (dir == 0)
+ {
+ fMaxVel = -1 * fMaxVel;
+ }
+ apiResult = mc_pulse.GT_SetVel((short)Config.CardId, (short)Config.AxisId, fMaxVel);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_Update((short)Config.CardId, 1< m_axis_config.PelSoftwarePosition || dfNewPosVal < m_axis_config.NelSoftwarePosition)
+ // && m_axis_config.PelSoftwarePosition != m_axis_config.NelSoftwarePosition;
+ //if (isNotSafe)
+ //{
+ // return ErrorCode.POSITION_OUT_OF_RANGE;
+ //}
+ //ErrorCode err = GetEmgStatus(out bool bEmg);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //if (bEmg)
+ //{
+ // return ErrorCode.EMERGENCY;
+ //}
+ //err = GetAlarmStatus(out bool bAlarm);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //if (bAlarm)
+ //{
+ // return ErrorCode.ALARM;
+ //}
+ //err = IsEnable(out bool bEnable);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //if (bEnable)
+ //{
+ // return ErrorCode.SERVO_OFF;
+ //}
+ //err = MmToPulse(dfNewPosVal, out double dfPos);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //else
+ //{
+ // m_dfCommandPosition = dfNewPosVal;
+ // bool flag19 = m_LastErrorCode != 0;
+ // if (flag19)
+ // {
+ // return ErrorCode.FAIL;
+ // }
+ // else
+ // {
+ // return ErrorCode.OK;
+ // }
+ //}
+ return ErrorCode.Ok;
+ }
+
+ // Token: 0x06000256 RID: 598 RVA: 0x0000373C File Offset: 0x0000193C
+ public override ErrorCode ChangeSpeed(double dfNewSpeed)
+ {
+ //if (!m_motion_card.IsInitialized)
+ //{
+ // return ErrorCode.CARD_NOT_INIT;
+ //}
+ //if (!m_bIsInitialized)
+ //{
+ // return ErrorCode.AXIS_NOT_INIT;
+ //}
+ //if (dfNewSpeed <= m_axis_config.MinSpeed)
+ //{
+ // dfNewSpeed = m_axis_config.MinSpeed;
+ //}
+ //if (dfNewSpeed >= m_axis_config.MaxSpeed)
+ //{
+ // dfNewSpeed = m_axis_config.MaxSpeed;
+ //}
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 判断轴是否使能
+ ///
+ ///
+ ///
+ public override ErrorCode IsEnable(out bool bIsEable)
+ {
+ bIsEable = false;
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ apiResult = mc_pulse.GT_GetSts((short)Config.CardId, (short)Config.AxisId, out int pSts, 1, out uint pClock);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ else
+ {
+ bIsEable = ((pSts >> 9) & 0x01) == 1;
+ return ErrorCode.Ok;
+ }
+ }
+
+ ///
+ /// 判断轴是否回零
+ ///
+ ///
+ ///
+ public override ErrorCode IsHomed(out bool bIsHomed)
+ {
+ bIsHomed = false;
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ if (HomeStatus == EHomeStatus.Finished)
+ {
+ bIsHomed = true;
+ }
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 判断轴是否已停止
+ ///
+ ///
+ ///
+ public override ErrorCode IsStop(out bool bIsStop)
+ {
+ bIsStop = false;
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ apiResult = mc_pulse.GT_GetSts((short)Config.CardId, (short)Config.AxisId, out int pSts, 1, out uint pClock);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ bIsStop = ((pSts >> 10) & 0x01) == 0;
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 判断运动是否到位
+ ///
+ ///
+ ///
+ public override ErrorCode IsInPosition(out bool bIsInPosition)
+ {
+ bIsInPosition = false;
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ if (0 == Config.EnableEncoder)//步进
+ {
+ return IsStop(out bIsInPosition);
+ }
+ bool bIsStop = false;
+ ErrorCode err = IsStop(out bIsStop);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (!bIsStop)
+ {
+ return ErrorCode.Ok;
+ }
+ bool bINP = false;
+ err = GetInpStatus(out bINP);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ if (!bINP)
+ {
+ return ErrorCode.Ok;
+ }
+ double dfCurrentTorlance = 0.0;
+ double dfTorlance = Math.Abs(Config.Tolerance);
+ err = GetTolerance(out dfCurrentTorlance);
+ if (Math.Abs(dfCurrentTorlance) <= dfTorlance)
+ {
+ bIsInPosition = true;
+ }
+ return err;
+ }
+
+ ///
+ /// 获取规划位置
+ ///
+ ///
+ ///
+ public override ErrorCode GetPrfPosition(out double dfCmdPos)
+ {
+ dfCmdPos = 0.0;
+ ErrorCode err = ErrorCode.Fail;
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ try
+ {
+ lock (m_objLocker)
+ {
+ apiResult = mc_pulse.GT_GetPrfPos((short)Config.CardId, (short)Config.AxisId, out double pValue, 1, out uint pClock);
+ //apiResult = mc_ecat.GTN_ReadAuEncPos(core, (short)Config.AxisId, out double pValue, 1);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ err = PulseToMm(pValue, out dfCmdPos);
+ }
+ }
+ catch
+ {
+ }
+ return err;
+ }
+
+ ///
+ /// 获取编码器位置
+ ///
+ ///
+ ///
+ public override ErrorCode GetEncoderPosition(out double dfEncPos)
+ {
+ dfEncPos = 0.0;
+ ErrorCode err = ErrorCode.Fail;
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ if (0 == Config.EnableEncoder)
+ {
+ return GetPrfPosition(out dfEncPos);
+ }
+ try
+ {
+ lock (m_objLocker)
+ {
+ apiResult = mc_pulse.GT_GetEncPos((short)Config.CardId, (short)Config.AxisId, out double pValue, 1, out uint pClock);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ err = PulseToMm(pValue, out dfEncPos);
+ }
+ }
+ catch
+ {
+ }
+ return err;
+ }
+
+ public override ErrorCode GetAuEncoderPosition(out double dfCmdPos)
+ {
+ dfCmdPos = 0.0;
+ ErrorCode err = ErrorCode.Fail;
+ //if (!cardManager.IsInitialized)
+ //{
+ // return ErrorCode.CardNotInit;
+ //}
+ //try
+ //{
+ // lock (m_objLocker)
+ // {
+ // apiResult = mc_ecat.GTN_ReadAuEncPos(core, (short)Config.AxisId, out double pValue, 1);
+ // if (apiResult != 0)
+ // {
+ // return ErrorCode.Fail;
+ // }
+ // err = PulseToMm(pValue, out dfCmdPos);
+ // }
+ //}
+ //catch
+ //{
+ //}
+ return err;
+ }
+
+
+ ///
+ /// 获取编码器位置
+ ///
+ ///
+ ///
+ public override ErrorCode GetDriverPosition(out double dfDriverPos)
+ {
+ dfDriverPos = 0.0;
+ ErrorCode err = ErrorCode.Fail;
+ //if (!cardManager.IsInitialized)
+ //{
+ // return ErrorCode.CardNotInit;
+ //}
+ //try
+ //{
+ // lock (m_objLocker)
+ // {
+ // apiResult = mc_ecat.GTN_GetEcatEncPos(core, (short)Config.AxisId, out int pValue);// ZTM.ZT_GetPosEncoder(m_axis_config.CardMc, (short)m_axis_config.AxisId, ref iPos);
+ // if (apiResult != 0)
+ // {
+ // return ErrorCode.Fail;
+ // }
+ // err = PulseToMm(pValue, out dfDriverPos);
+ // }
+ //}
+ //catch
+ //{
+ //}
+ return err;
+ }
+
+ ///
+ /// 获取轴允许的公差值
+ ///
+ ///
+ ///
+ public override ErrorCode GetTolerance(out double dfTolerance)
+ {
+ dfTolerance = 0.0;
+ ErrorCode err;
+ if (0 == Config.EnableEncoder)
+ {
+ return ErrorCode.Ok;
+ }
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ err = GetPrfPosition(out double dfTargetPos);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ err = GetEncoderPosition(out double dfCurrentPos);
+ if (err > ErrorCode.Ok)
+ {
+ return err;
+ }
+ dfTolerance = dfCurrentPos - dfTargetPos;
+ double dfTolerance2 = dfCurrentPos - m_dfCommandPosition;
+ if (Math.Abs(dfTolerance) < Math.Abs(dfTolerance2))
+ {
+ dfTolerance = dfTolerance2;
+ }
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 获取正限位状态
+ ///
+ ///
+ ///
+ public override ErrorCode GetPelStatus(out bool bIsOn)
+ {
+ bIsOn = false;
+ //apiResult = mc_pulse.GT_GetDi((short)Config.CardId, mc_ecat.MC_LIMIT_POSITIVE, out int pValue);
+ apiResult = mc_pulse.GT_GetSts((short)Config.CardId, (short)Config.AxisId, out int pSts, 1, out uint pClock);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ bIsOn = (pSts >> 5 & 0x01) == 1;
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 获取负限位状态
+ ///
+ ///
+ ///
+ public override ErrorCode GetNelStatus(out bool bIsOn)
+ {
+ bIsOn = false;
+ apiResult = mc_pulse.GT_GetSts((short)Config.CardId, (short)Config.AxisId, out int pSts, 1, out uint pClock);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ bIsOn = (pSts >> 6 & 0x01) == 1;
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 获取原点的状态
+ ///
+ ///
+ ///
+ public override ErrorCode GetOrgStatus(out bool bIsOn)
+ {
+ bIsOn = false;
+ apiResult = mc_pulse.GT_GetDi((short)Config.CardId, mc_ecat.MC_HOME, out int pValue);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ bIsOn = (pValue >> (Config.AxisId-1) & 0x01) == 1;
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 获取报警状态
+ ///
+ ///
+ ///
+ public override ErrorCode GetAlarmStatus(out bool bIsOn)
+ {
+ bIsOn = false;
+ apiResult = mc_pulse.GT_GetDi((short)Config.CardId, mc_ecat.MC_ALARM, out int pValue);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ bIsOn = ((pValue >> Config.AxisId - 1) & 0x01) == 1;
+ if (bIsOn)
+ {
+ HomeStatus = EHomeStatus.NotStart;
+ }
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 获取EMG状态
+ ///
+ ///
+ ///
+ public override ErrorCode GetEmgStatus(out bool bIsOn)
+ {
+ bIsOn = false;
+ apiResult = mc_pulse.GT_GetSts((short)Config.CardId, (short)Config.AxisId, out int pSts, 1, out uint pClock);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ bIsOn = ((pSts >> 8) & 0x01) == 1;
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 获取到位信号
+ ///
+ ///
+ ///
+ public override ErrorCode GetInpStatus(out bool bIsOn)
+ {
+ bIsOn = false;
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ apiResult = mc_pulse.GT_GetSts((short)Config.CardId, (short)Config.AxisId, out int pSts, 1, out uint pClock);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ bIsOn = ((pSts >> 11) & 0x01) == 1;
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 获取EZ状态
+ ///
+ ///
+ ///
+ public override ErrorCode GetEzStatus(out bool bIsOn)
+ {
+ bIsOn = false;
+ return ErrorCode.Ok;
+ }
+
+ ///
+ /// 轴回原
+ ///
+ ///
+ ///
+ public override ErrorCode Home()
+ {
+ if (HomeStatus == EHomeStatus.Homing || HomeStatus == EHomeStatus.Start)
+ {
+ return ErrorCode.Ok;
+ }
+ //if (!m_bIsInitialized)
+ //{
+ // return ErrorCode.AXIS_NOT_INIT;
+ //}
+ //ErrorCode err = GetEmgStatus(out bool bEmg);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //if (bEmg)
+ //{
+ // return ErrorCode.EMERGENCY;
+ //}
+ //err = GetAlarmStatus(out bool bAlarm);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //if (bAlarm)
+ //{
+ // return ErrorCode.ALARM;
+ //}
+ //err = IsEnable(out bool bEnable);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //if (!bEnable)
+ //{
+ // return ErrorCode.SERVO_OFF;
+ //}
+ //err = IsStop(out bool bStop);
+ //if (err > ErrorCode.OK)
+ //{
+ // return err;
+ //}
+ //if (!bStop)
+ //{
+ // return ErrorCode.NOT_STOP;
+ //}
+ Thread t = t = new Thread(new ParameterizedThreadStart(CaptureHome));
+ HomeStatus = EHomeStatus.Start;
+ t.Name = Config.AxisName + " homing thread";
+ t.Start(this);
+ return ErrorCode.Ok;
+ }
+
+ ///
+ ///
+ ///
+ //protected void AutoHomeMode(object obj)
+ //{
+ // bool bIsStop = false;
+ // int searchDistance = 1000;//回原搜索距离
+ // double searchPulse = 0;
+ // double curPos = 0.0;
+ // //固高板块的回原点,可以用捕获回原,如果是步进电机采用直接回原的方式
+
+
+ // int pValue = 0;
+ // if (Config.HomeDir == 0)
+ // {
+ // searchDistance *= -1;
+ // }
+ // MmToPulse(searchDistance, out searchPulse);
+
+ // MmToPulse(Config.HomeSpeed, out double homeSpeedPulse);
+ // MmToPulse(Config.MinSpeed, out double minSpeedPulse);
+ // MmToPulse(Config.StopSpeed, out double stopSpeedPulse);
+
+ // float fMaxVel = (float)(homeSpeedPulse / 1000.0);//pulse/ms
+ // float fAcc = (float)(homeSpeedPulse / Config.AccTime / 1000000.0);//pulse/ms2
+ // float fDec = (float)(homeSpeedPulse / Config.DecTime / 1000000.0);//pulse/ms2
+ // float fStart = (float)(minSpeedPulse / 1000.0);//pulse/ms
+ // float fStop = (float)(stopSpeedPulse / 1000.0);//pulse/ms
+
+
+ // mc_pulse.GT_HomeInit((short)Config.CardId);
+ // mc_pulse.GT_Home(apiResult, (short)Config.AxisId, (int)searchPulse, fMaxVel, fAcc, 0);
+ // while(true)
+ // {
+ // mc_pulse.GT_HomeSts((short)Config.CardId,(short)Config.AxisId, out ushort pStatus);
+ // if(pStatus==1)
+ // {
+ // ClearAlarm();
+ // HomeStatus = EHomeStatus.Finished;
+ // break;
+ // }
+ // }
+ //}
+
+ ///
+ ///
+ ///
+ ///
+ protected void CaptureHome(object obj)
+ {
+ if(HomeJudge())
+ {
+ bool bIsStop = false;
+ int searchDistance = 1000;//回原搜索距离
+ double searchPulse = 0;
+ double curPos = 0.0;
+ //固高板块的回原点,可以用捕获回原,如果是步进电机采用直接回原的方式
+
+ short pStatus = 0;
+ int pValue = 0;
+ if (Config.HomeDir == 0)
+ {
+ searchDistance *= -1;
+ }
+ MmToPulse(searchDistance, out searchPulse);
+ //启动捕获回原
+ mc_pulse.GT_SetEncPos(0, 1, 0);
+ mc_pulse.GT_SetPrfPos(0, 1, 0);
+ if (Config.EnableEncoder == 1)
+ {
+ mc_pulse.GT_GetEncPos(0, 1, out curPos, 1, out uint pClock);
+ }
+ else
+ {
+ mc_pulse.GT_GetPrfPos(0, 1, out curPos, 1, out uint pClock);
+ }
+ apiResult = mc_pulse.GT_SetCaptureMode((short)Config.CardId, (short)Config.AxisId, mc_pulse.CAPTURE_HOME);
+ if (apiResult != 0)
+ {
+ return;
+ }
+
+ double targetPos = curPos + searchPulse;
+ MmToPulse(Config.HomeSpeed, out double homeSpeedPulse);
+ MmToPulse(Config.MinSpeed, out double minSpeedPulse);
+ MmToPulse(Config.StopSpeed, out double stopSpeedPulse);
+
+ float fMaxVel = (float)(homeSpeedPulse / 1000.0);//pulse/ms
+ float fAcc = (float)(homeSpeedPulse / Config.AccTime / 1000000.0);//pulse/ms2
+ float fDec = (float)(homeSpeedPulse / Config.DecTime / 1000000.0);//pulse/ms2
+ float fStart = (float)(minSpeedPulse / 1000.0);//pulse/ms
+ float fStop = (float)(stopSpeedPulse / 1000.0);//pulse/ms
+
+
+ apiResult = mc_pulse.GT_PrfTrap((short)Config.CardId, (short)Config.AxisId);//设置运动模式为点位运动
+ if (apiResult != 0)
+ {
+ return;// ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_GetTrapPrm((short)Config.CardId, (short)Config.AxisId, out mc_pulse.TTrapPrm trapPrm);//获取点位运动参数
+ if (apiResult != 0)
+ {
+ return;// ErrorCode.Fail;
+ }
+ trapPrm.acc = fAcc;
+ trapPrm.dec = fDec;
+ trapPrm.velStart = fStart;
+ apiResult = mc_pulse.GT_SetTrapPrm((short)Config.CardId, (short)Config.AxisId, ref trapPrm);//设置点位运动参数
+ if (apiResult != 0)
+ {
+ return;// ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_SetPos((short)Config.CardId, (short)Config.AxisId, (int)targetPos);//设置目标位置
+ if (apiResult != 0)
+ {
+ return;// ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_SetVel((short)Config.CardId, (short)Config.AxisId, fMaxVel);//设置目标速度
+ if (apiResult != 0)
+ {
+ return;// ErrorCode.Fail;
+ }
+ apiResult = mc_pulse.GT_Update((short)Config.CardId, (1 << Config.AxisId - 1));
+ if (apiResult != 0)
+ {
+ return;// ErrorCode.Fail;
+ }
+ do
+ {
+ //获取捕获状态
+ apiResult = mc_pulse.GT_GetCaptureStatus((short)Config.CardId, (short)Config.AxisId, out pStatus, out pValue, 1, out uint pClock);
+ IsStop(out bIsStop);
+ if (bIsStop)
+ {
+ HomeStatus = EHomeStatus.Fail;
+ return;
+ }
+ } while (pStatus == 0);
+
+ MmToPulse(Config.HomeOffset, out double offsetPulse);
+ targetPos = pValue + (int)offsetPulse;
+ apiResult = mc_pulse.GT_SetPos((short)Config.CardId, (short)Config.AxisId, (int)targetPos);//设置目标位置
+ apiResult = mc_pulse.GT_Update((short)Config.CardId, (1 << Config.AxisId - 1));
+ do
+ {
+ IsStop(out bIsStop);
+ } while (!bIsStop && HomeStatus != EHomeStatus.Abort);
+ Thread.Sleep(500);
+ Zero(0);
+ HomeStatus = EHomeStatus.Finished;
+ }
+ }
+
+ protected bool HomeJudge()
+ {
+ int persent = (int)((Config.HomeSpeed / Config.MaxSpeed) * 100);
+ if (persent <= 0)
+ persent = 2;
+ bool bIsOrg = false;
+ bool bIsPel = false;
+ bool bIsNel = false;
+ int homeStep = 0;
+ while(homeStep>=0 && HomeStatus!= EHomeStatus.Abort)
+ {
+ switch (homeStep)
+ {
+ case 0://判断是否在原点,在原点,就先离开原点
+ GetOrgStatus(out bIsOrg);
+ if(bIsOrg)
+ {
+ //离开原点
+ if(Config.HomeDir==0)
+ {
+ MoveJog(1, persent);
+ }
+ else
+ {
+ MoveJog(0, persent);
+ }
+ do
+ {
+ GetOrgStatus(out bIsOrg);
+ } while (bIsOrg && HomeStatus!= EHomeStatus.Abort);
+ Stop();
+ Thread.Sleep(100);
+ homeStep = -1;
+ }
+ else
+ homeStep = 1;
+ break;
+ case 1://判断是否在正限位
+ GetPelStatus(out bIsPel);
+ if( bIsPel)
+ {
+ //先去找原点
+ MoveJog(0, persent);
+ do
+ {
+ GetOrgStatus(out bIsOrg);
+ } while (!bIsOrg && HomeStatus != EHomeStatus.Abort);
+ Stop();
+ ClearAlarm();
+ Thread.Sleep(100);
+ homeStep = 0;
+ }
+ else
+ homeStep = 2;
+ break;
+ case 2://判断是否在负限位
+ GetNelStatus(out bIsNel);
+ if( bIsNel )
+ {
+ MoveJog(1, persent);
+ do
+ {
+ GetOrgStatus(out bIsOrg);
+ } while (!bIsOrg && HomeStatus != EHomeStatus.Abort);
+ Stop();
+ ClearAlarm();
+ Thread.Sleep(100);
+ homeStep = 0;
+ }
+ homeStep = 3;
+ break;
+ case 3://不在原点,也不在限位上,先朝回原方向搜索
+ if(Config.HomeDir==0)
+ {
+ MoveJog(0, persent);
+
+ }
+ else
+ {
+ MoveJog(1, persent);
+ }
+ //搜索的过程中,可能碰到原点,也可能碰到限位,碰到任何一个就停下来
+ do
+ {
+ GetOrgStatus(out bIsOrg);
+ if (bIsOrg)
+ {
+ homeStep = 0;
+ }
+ GetPelStatus(out bIsPel);
+ if (bIsPel)
+ {
+ homeStep = 1;
+ }
+ GetNelStatus(out bIsNel);
+ if (bIsNel)
+ {
+ homeStep = 2;
+ }
+ } while (!bIsOrg && !bIsPel && !bIsNel && HomeStatus != EHomeStatus.Abort);
+ Stop();
+ Thread.Sleep(100);
+ break;
+ default:
+ break;
+ }
+ }
+
+ if(HomeStatus!= EHomeStatus.Abort)
+ {
+ return true;
+ }
+ return false;
+ }
+
+ ///
+ /// 回原完成
+ ///
+ ///
+ ///
+ public override ErrorCode Zero(int iOrig)
+ {
+ if (!cardManager.IsInitialized)
+ {
+ return ErrorCode.CardNotInit;
+ }
+ if(!IsInitialized)
+ {
+ return ErrorCode.AxisNotInit;
+ }
+ apiResult = mc_pulse.GT_SetPrfPos((short)Config.CardId, (short)Config.AxisId, 0);
+ if(apiResult!=0)
+ {
+ return ErrorCode.Fail;
+ }
+ if(Config.EnableEncoder==1)
+ {
+ apiResult = mc_pulse.GT_SetEncPos((short)Config.CardId, (short)Config.AxisId, 0);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ }
+ return ErrorCode.Ok;
+ }
+
+
+ public void SetHomeFinished()
+ {
+ Zero(0);
+ //base.Set_Home_Finished();
+ }
+
+
+ ///
+ /// 获取运动的目标位置
+ ///
+ ///
+ ///
+ public override ErrorCode Get_Target_Position(out double dfTargetPos)
+ {
+ dfTargetPos = m_dfCommandPosition;
+ return ErrorCode.Ok;
+ }
+
+ public override ErrorCode SetPosCompare(ushort channel, double[] postions)
+ {
+
+ //apiResult = mc_pulse.GT_PosCompareStatus(core, (short)channel, out mc_ecat.TPosCompareStatus pstatus);
+
+
+ //ClearCompare(channel);
+ ////apiResult = mc_ecat.GTN_PosCompareClear(core, (short)channel);
+ ////if(apiResult!=0)
+ ////return ErrorCode.Fail;
+ //short permit = 0x02;
+ //apiResult = mc_ecat.GTN_SetTerminalPermitEx(core,0, mc_ecat.MC_HSO, ref permit,0x01,0x01);
+ ////if (apiResult != 0)
+ // //return ErrorCode.Fail;
+ ////apiResult = mc_ecat.GTN_SetTerminalPermit(core, 0, mc_ecat.MC_HSO, (ushort)(1 << channel));
+ ////if (apiResult != 0)
+ // // return ErrorCode.Fail;
+ //mc_ecat.TPosCompareMode cmpMode;
+ //apiResult = mc_ecat.GTN_GetPosCompareMode(core, (short)channel, out cmpMode);
+ //if (apiResult != 0)
+ // return ErrorCode.Fail;
+ //cmpMode.dimension = 1;
+ //cmpMode.mode = 0;
+ //cmpMode.outputMode = 0;
+ //cmpMode.outputPulseWidth = ushort.MaxValue;
+ //cmpMode.sourceMode = 2;
+ //cmpMode.sourceX = (short)Config.AxisId;
+ //apiResult = mc_ecat.GTN_SetPosCompareMode(core, (short)channel ,ref cmpMode);
+ //if (apiResult != 0)
+ // return ErrorCode.Fail;
+ //List posPulse = new List();
+
+ //foreach (var data in postions)
+ //{
+ // GetEncoderPosition(out double curPos);
+ // //double targetPos = curPos + data;
+ // //double offset = data - curPos;
+ // MmToPulse(data, out double pulse);
+ // posPulse.Add(pulse);
+ //}
+ //uint seg = 0;
+
+ //foreach (double data in posPulse)
+ //{
+ // mc_ecat.TPosCompareData cmpData = new mc_ecat.TPosCompareData();
+ // cmpData.hso = 0x01;
+ // cmpData.gpo = 0x01;
+ // cmpData.pos = (int)data;
+ // cmpData.segmentNumber = seg++;
+ // mc_ecat.GTN_PosCompareData(1, 1, ref cmpData);
+ //}
+
+ //apiResult = mc_ecat.GTN_PosCompareStart(core, (short)channel);
+ //if(apiResult!=0)
+ // return ErrorCode.Fail;
+ //mc_ecat.GTN_PosCompareSpace(core, (short)channel, out short space);
+ return ErrorCode.Ok;
+ }
+
+ public override ErrorCode ClearCompare(ushort uChannel)
+ {
+ //apiResult = mc_ecat.GTN_PosCompareStop(core, (short)uChannel);
+ //if (apiResult != 0)
+ //{
+ // return ErrorCode.Fail;
+ //}
+
+ //apiResult = mc_ecat.GTN_PosCompareClear(core, (short)uChannel);
+ //if(apiResult!=0)
+ //{
+ // return ErrorCode.Fail;
+ //}
+
+ return ErrorCode.Ok;
+ }
+
+ public override ErrorCode ClearAlarm()
+ {
+ apiResult = mc_pulse.GT_ClrSts((short)Config.CardId, (short)Config.AxisId, 1);//清除轴状态
+ if(apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ return ErrorCode.Ok;
+ }
+
+ }
+}
diff --git a/Rs.Motion/GugaoPulse/GugaoPulseCard.cs b/Rs.Motion/GugaoPulse/GugaoPulseCard.cs
new file mode 100644
index 0000000..30f4a68
--- /dev/null
+++ b/Rs.Motion/GugaoPulse/GugaoPulseCard.cs
@@ -0,0 +1,111 @@
+using Rs.Framework;
+using Rs.Motion.Base;
+using Rs.Motion.Base.Config;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace Rs.Motion.GugaoPulse
+{
+ public class GugaoPulseCard:ICard
+ {
+ public GugaoPulseCard(ushort cardID,ushort axisCount,string cfgName)
+ {
+ CardID= cardID;
+ AxisCount= axisCount;
+ CfgName= cfgName;
+ Config = new CardConfig();
+ }
+
+ private ushort _CardID;
+
+ ///
+ /// 卡编号
+ ///
+ [XmlIgnore]
+ public ushort CardID
+ {
+ get { return _CardID; }
+ set { _CardID = value; }
+ }
+
+
+ private ushort _AxisCount;
+ [XmlIgnore]
+ public ushort AxisCount
+ {
+ get { return _AxisCount; }
+ set { _AxisCount = value; }
+ }
+
+ private string _CfgName;
+ [XmlIgnore]
+ public string CfgName
+ {
+ get { return _CfgName; }
+ set { _CfgName = value; }
+ }
+
+ public override ErrorCode Init()
+ {
+ string baseDir = AppDomain.CurrentDomain.BaseDirectory;
+ string filePath=Path.Combine(baseDir,"Config","Motion", CfgName);
+ //检测文件夹是否存在,不存在则创建
+ if(!Directory.Exists(Path.GetDirectoryName(filePath)))
+ {
+ Directory.CreateDirectory(Path.GetDirectoryName(filePath));
+ }
+ //判断文件是否存在,如果不存在配置文件,则生成配置文件
+ if(!File.Exists(filePath))
+ {
+ Config.Init(CardID, AxisCount,1);
+ bool suc = XmlSerializerHelper.Instance.Serialize(filePath, Config);
+ if(!suc)
+ {
+ return ErrorCode.CardLoadConfigFail;
+ }
+ }
+ else
+ {
+ bool suc = XmlSerializerHelper.Instance.Deserialize(filePath ,out CardConfig config);
+ Config=config;
+
+ }
+ InitAxis();
+ return ErrorCode.Ok;
+ }
+
+ public override ErrorCode Save()
+ {
+ if(Config != null)
+ {
+ string baseDir = AppDomain.CurrentDomain.BaseDirectory;
+ string filePath = Path.Combine(baseDir, "Config", "Motion", CfgName);
+ if (File.Exists(filePath))
+ {
+ File.Delete(filePath);
+ XmlSerializerHelper.Instance.Serialize(filePath, Config);
+ return ErrorCode.Ok;
+ }
+ }
+ return ErrorCode.CardNotInit;
+ }
+
+ private ErrorCode InitAxis()
+ {
+ for(int i=0; i
+ /// 固高脉冲卡
+ ///
+ public class GugaoPulseCardManager : ICardManager
+ {
+ ///
+ /// 执行底层接口的返回值
+ ///
+ private short apiResult = 0;
+ private short core = 1;
+ ///
+ /// 保存一共有多少张卡
+ ///
+ Dictionary cardDic= new Dictionary();
+ private GugaoPulseCardManager() {
+
+ }
+
+ private static GugaoPulseCardManager instance;
+ public static GugaoPulseCardManager Instance
+ {
+ get
+ {
+ if(instance==null)
+ {
+ instance = new GugaoPulseCardManager();
+ }
+
+ return instance;
+ }
+ }
+
+ ///
+ /// 同一类卡统一初始化
+ ///
+ ///
+ public override ErrorCode Init()
+ {
+
+ //打开运动控制卡
+ apiResult = mc_pulse.GT_Open(0, 0, 1);
+ if(apiResult!= 0)
+ {
+ return ErrorCode.CardInitFail;
+ }
+ //清楚报警和限位
+ apiResult = mc_pulse.GT_ClrSts(0, 1, 8);
+ if (apiResult != 0)
+ {
+ return ErrorCode.Fail;
+ }
+ IsInitialized = true;
+ return ErrorCode.Ok;
+ }
+
+ public ICard GetCard(ushort cardID)
+ {
+ if(cardDic.ContainsKey(cardID)) return cardDic[cardID];
+ else
+ {
+ if(cardID==0)
+ {
+ ICard card = new GugaoPulseCard(cardID, 8, "gugao0.xml");
+ card.Init();
+ cardDic.Add(cardID, card);
+ return card;
+ }
+ }
+ return null;
+ }
+
+ }
+}
diff --git a/Rs.Motion/GugaoPulse/IO.cs b/Rs.Motion/GugaoPulse/IO.cs
new file mode 100644
index 0000000..7aeca7d
--- /dev/null
+++ b/Rs.Motion/GugaoPulse/IO.cs
@@ -0,0 +1,127 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace Rs.Motion.GugaoPulse
+{
+ public class IIOCard
+ {
+ [XmlElement]
+ public List DIn { get; set; } = new List();
+ [XmlElement]
+ public List DOut { get; set; } = new List();
+
+ ///
+ /// 0glink 1总线
+ ///
+ public int CardType { get; set; } = 0;
+
+ public string Name { get; set; } = "本地IO";
+ ///
+ /// 厂家
+ ///
+ public string Vender { get; set; } = "Gugao";
+
+ ///
+ /// 是否采用EtherCat通信
+ ///
+ public bool IsEtherCat { get; set; } = true;
+
+ public virtual void Init(ushort inCount, ushort outCount, ushort slaveNo)
+ {
+
+ }
+ }
+ ///
+ /// 总线卡
+ ///
+ [Serializable]
+ [XmlInclude(typeof(IO))]
+ public class ECatIOCard: IIOCard
+ {
+
+ public ECatIOCard()
+ {
+
+ }
+
+ public override void Init(ushort inCount, ushort outCount, ushort slaveNo)
+ {
+ ushort i = 0;
+ for (; i < outCount; i++)
+ {
+ IO io = new IO();
+ io.SlaveNo = slaveNo;
+ io.Offset = 0;
+ io.Index = i;
+ io.Name = "Out" + i+"_"+slaveNo;
+ DOut.Add(io);
+ }
+ for (; i < outCount + inCount; i++)
+ {
+ IO io = new IO();
+ io.SlaveNo = slaveNo;
+ io.Offset = 0;
+ io.Index = i;
+ io.Name = "In" + i + "_" + slaveNo;
+ DIn.Add(io);
+ }
+ }
+ }
+
+ ///
+ /// GLink卡
+ ///
+ [XmlInclude(typeof(GLinkIO))]
+ public class GLinkIOCard: IIOCard
+ {
+ public override void Init(ushort inCount, ushort outCount, ushort slaveNo)
+ {
+ for (ushort i = 0; i < outCount; i++)
+ {
+ GLinkIO io = new GLinkIO();
+ io.Name = "Out" + i+ "_"+ slaveNo;
+ io.Index = i;
+ DOut.Add(io);
+ }
+ for (ushort i = 0; i < inCount; i++)
+ {
+ GLinkIO io = new GLinkIO();
+ io.Name = "In" + i + "_" + slaveNo;
+ io.Index = i;
+ DIn.Add(io);
+ }
+ }
+ }
+
+
+ public class IIO
+ {
+
+ public ushort Index { get; set; }
+
+ public string Name { get; set; }
+
+ public bool IsReverse { get; set; } = false;
+ [XmlIgnore]
+ public IIOCard Card { get; set; }
+ }
+ public class GLinkIO:IIO
+ {
+
+ }
+
+ public class IO:IIO
+ {
+ [XmlElement]
+ public short Core { get; set; } = 1;
+ [XmlElement]
+ public ushort SlaveNo { get; set; }
+ [XmlElement]
+ public ushort Offset { get; set; }
+
+ }
+}
diff --git a/Rs.Motion/Invoke/GugaoPulse/gts.cs b/Rs.Motion/Invoke/GugaoPulse/gts.cs
new file mode 100644
index 0000000..5b6462d
--- /dev/null
+++ b/Rs.Motion/Invoke/GugaoPulse/gts.cs
@@ -0,0 +1,1265 @@
+using System.Runtime.InteropServices;
+
+namespace gts
+{
+ public class mc_pulse
+ {
+ public const short DLL_VERSION_0 = 2;
+ public const short DLL_VERSION_1 = 1;
+ public const short DLL_VERSION_2 = 0;
+
+ public const short DLL_VERSION_3 = 1;
+ public const short DLL_VERSION_4 = 5;
+ public const short DLL_VERSION_5 = 0;
+ public const short DLL_VERSION_6 = 6;
+ public const short DLL_VERSION_7 = 0;
+ public const short DLL_VERSION_8 = 7;
+
+ public const short MC_NONE = -1;
+
+ public const short MC_LIMIT_POSITIVE = 0;
+ public const short MC_LIMIT_NEGATIVE = 1;
+ public const short MC_ALARM = 2;
+ public const short MC_HOME = 3;
+ public const short MC_GPI = 4;
+ public const short MC_ARRIVE = 5;
+ public const short MC_MPG = 6;
+
+ public const short MC_ENABLE = 10;
+ public const short MC_CLEAR = 11;
+ public const short MC_GPO = 12;
+
+ public const short MC_DAC = 20;
+ public const short MC_STEP = 21;
+ public const short MC_PULSE = 22;
+ public const short MC_ENCODER = 23;
+ public const short MC_ADC = 24;
+
+ public const short MC_AXIS = 30;
+ public const short MC_PROFILE = 31;
+ public const short MC_CONTROL = 32;
+
+ public const short CAPTURE_HOME = 1;
+ public const short CAPTURE_INDEX = 2;
+ public const short CAPTURE_PROBE = 3;
+ public const short CAPTURE_HSIO0 = 6;
+ public const short CAPTURE_HSIO1 = 7;
+ public const short CAPTURE_HOME_GPI = 8;
+
+ public const short PT_MODE_STATIC = 0;
+ public const short PT_MODE_DYNAMIC = 1;
+
+ public const short PT_SEGMENT_NORMAL = 0;
+ public const short PT_SEGMENT_EVEN = 1;
+ public const short PT_SEGMENT_STOP = 2;
+
+ public const short GEAR_MASTER_ENCODER = 1;
+ public const short GEAR_MASTER_PROFILE = 2;
+ public const short GEAR_MASTER_AXIS = 3;
+
+ public const short FOLLOW_MASTER_ENCODER = 1;
+ public const short FOLLOW_MASTER_PROFILE = 2;
+ public const short FOLLOW_MASTER_AXIS = 3;
+
+ public const short FOLLOW_EVENT_START = 1;
+ public const short FOLLOW_EVENT_PASS = 2;
+
+ public const short GEAR_EVENT_START = 1;
+ public const short GEAR_EVENT_PASS = 2;
+ public const short GEAR_EVENT_AREA = 5;
+
+ public const short FOLLOW_SEGMENT_NORMAL = 0;
+ public const short FOLLOW_SEGMENT_EVEN = 1;
+ public const short FOLLOW_SEGMENT_STOP = 2;
+ public const short FOLLOW_SEGMENT_CONTINUE = 3;
+
+ public const short INTERPOLATION_AXIS_MAX = 4;
+ public const short CRD_FIFO_MAX = 4096;
+ public const short FIFO_MAX = 2;
+ public const short CRD_MAX = 2;
+ public const short CRD_OPERATION_DATA_EXT_MAX = 2;
+
+ public const short CRD_OPERATION_TYPE_NONE = 0;
+ public const short CRD_OPERATION_TYPE_BUF_IO_DELAY = 1;
+ public const short CRD_OPERATION_TYPE_LASER_ON = 2;
+ public const short CRD_OPERATION_TYPE_LASER_OFF = 3;
+ public const short CRD_OPERATION_TYPE_BUF_DA = 4;
+ public const short CRD_OPERATION_TYPE_LASER_CMD = 5;
+ public const short CRD_OPERATION_TYPE_LASER_FOLLOW = 6;
+ public const short CRD_OPERATION_TYPE_LMTS_ON = 7;
+ public const short CRD_OPERATION_TYPE_LMTS_OFF = 8;
+ public const short CRD_OPERATION_TYPE_SET_STOP_IO = 9;
+ public const short CRD_OPERATION_TYPE_BUF_MOVE = 10;
+ public const short CRD_OPERATION_TYPE_BUF_GEAR = 11;
+ public const short CRD_OPERATION_TYPE_SET_SEG_NUM = 12;
+ public const short CRD_OPERATION_TYPE_STOP_MOTION = 13;
+ public const short CRD_OPERATION_TYPE_SET_VAR_VALUE = 14;
+ public const short CRD_OPERATION_TYPE_JUMP_NEXT_SEG = 15;
+ public const short CRD_OPERATION_TYPE_SYNCH_PRF_POS = 16;
+ public const short CRD_OPERATION_TYPE_VIRTUAL_TO_ACTUAL = 17;
+ public const short CRD_OPERATION_TYPE_SET_USER_VAR = 18;
+ public const short CRD_OPERATION_TYPE_SET_DO_BIT_PULSE = 19;
+ public const short CRD_OPERATION_TYPE_BUF_COMPAREPULSE = 20;
+ public const short CRD_OPERATION_TYPE_LASER_ON_EX = 21;
+ public const short CRD_OPERATION_TYPE_LASER_OFF_EX = 22;
+ public const short CRD_OPERATION_TYPE_LASER_CMD_EX = 23;
+ public const short CRD_OPERATION_TYPE_LASER_FOLLOW_RATIO_EX = 24;
+ public const short CRD_OPERATION_TYPE_LASER_FOLLOW_MODE = 25;
+ public const short CRD_OPERATION_TYPE_LASER_FOLLOW_OFF = 26;
+ public const short CRD_OPERATION_TYPE_LASER_FOLLOW_OFF_EX = 27;
+ public const short CRD_OPERATION_TYPE_LASER_FOLLOW_SPLINE = 28;
+ public const short CRD_OPERATION_TYPE_MOTION_DATA = 29;
+
+ public const short INTERPOLATION_MOTION_TYPE_LINE = 0;
+ public const short INTERPOLATION_MOTION_TYPE_CIRCLE = 1;
+ public const short INTERPOLATION_MOTION_TYPE_HELIX = 2;
+ public const short INTERPOLATION_MOTION_TYPE_CIRCLE_3D = 3;
+
+ public const short INTERPOLATION_CIRCLE_PLAT_XY = 0;
+ public const short INTERPOLATION_CIRCLE_PLAT_YZ = 1;
+ public const short INTERPOLATION_CIRCLE_PLAT_ZX = 2;
+
+ public const short INTERPOLATION_HELIX_CIRCLE_XY_LINE_Z = 0;
+ public const short INTERPOLATION_HELIX_CIRCLE_YZ_LINE_X = 1;
+ public const short INTERPOLATION_HELIX_CIRCLE_ZX_LINE_Y = 2;
+
+ public const short INTERPOLATION_CIRCLE_DIR_CW = 0;
+ public const short INTERPOLATION_CIRCLE_DIR_CCW = 1;
+
+ public const short COMPARE_PORT_HSIO = 0;
+ public const short COMPARE_PORT_GPO = 1;
+
+ public const short COMPARE2D_MODE_2D = 1;
+ public const short COMPARE2D_MODE_1D = 0;
+
+ public const short INTERFACEBOARD20 = 2;
+ public const short INTERFACEBOARD30 = 3;
+
+ public const short AXIS_LASER = 7;
+ public const short AXIS_LASER_EX = 8;
+
+ public const short LASER_CTRL_MODE_PWM1 = 0;
+ public const short LASER_CTRL_FREQUENCY = 1;
+ public const short LASER_CTRL_VOLTAGE = 2;
+ public const short LASER_CTRL_MODE_PWM2 = 3;
+
+ public struct TTrapPrm
+ {
+ public double acc;
+ public double dec;
+ public double velStart;
+ public short smoothTime;
+ }
+
+ public struct TJogPrm
+ {
+ public double acc;
+ public double dec;
+ public double smooth;
+ }
+
+ public struct TPid
+ {
+ public double kp;
+ public double ki;
+ public double kd;
+ public double kvff;
+ public double kaff;
+
+ public int integralLimit;
+ public int derivativeLimit;
+ public short limit;
+ }
+
+ public struct TThreadSts
+ {
+ public short run;
+ public short error;
+ public double result;
+ public short line;
+ }
+
+ public struct TVarInfo
+ {
+ public short id;
+ public short dataType;
+ public double dumb0;
+ public double dumb1;
+ public double dumb2;
+ public double dumb3;
+ }
+ public struct TCompileInfo
+ {
+ public string pFileName;
+ public short pLineNo1;
+ public short pLineNo2;
+ public string pMessage;
+ }
+ public struct TCrdPrm
+ {
+ public short dimension;
+ public short profile1;
+ public short profile2;
+ public short profile3;
+ public short profile4;
+ public short profile5;
+ public short profile6;
+ public short profile7;
+ public short profile8;
+
+ public double synVelMax;
+ public double synAccMax;
+ public short evenTime;
+ public short setOriginFlag;
+ public int originPos1;
+ public int originPos2;
+ public int originPos3;
+ public int originPos4;
+ public int originPos5;
+ public int originPos6;
+ public int originPos7;
+ public int originPos8;
+ }
+
+ public struct TCrdBufOperation
+ {
+ public short flag;
+ public ushort delay;
+ public short doType;
+ public ushort doMask;
+ public ushort doValue;
+ public ushort dataExt1;
+ public ushort dataExt2;
+ }
+
+ public struct TCrdData
+ {
+ public short motionType;
+ public short circlePlat;
+ public int posX;
+ public int posY;
+ public int posZ;
+ public int posA;
+ public double radius;
+ public short circleDir;
+ public double lCenterX;
+ public double lCenterY;
+ public double lCenterZ;
+ public double vel;
+ public double acc;
+ public short velEndZero;
+ public TCrdBufOperation operation;
+
+ public double cosX;
+ public double cosY;
+ public double cosZ;
+ public double cosA;
+ public double velEnd;
+ public double velEndAdjust;
+ public double r;
+ }
+
+ public struct TTrigger
+ {
+ public short encoder;
+ public short probeType;
+ public short probeIndex;
+ public short offset;
+ public short windowOnly;
+ public int firstPosition;
+ public int lastPosition;
+ }
+
+ public struct TTriggerStatus
+ {
+ public short execute;
+ public short done;
+ public int position;
+ }
+
+ public struct T2DCompareData
+ {
+ public int px;
+ public int py;
+ }
+
+ public struct T2DComparePrm
+ {
+ public short encx;
+ public short ency;
+ public short source;
+ public short outputType;
+ public short startLevel;
+ public short time;
+ public short maxerr;
+ public short threshold;
+ }
+ [DllImport("gts.dll")]
+ public static extern short GT_GetDllVersion(short cardNum,out string pDllVersion);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCardNo(short cardNum,short index);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCardNo(short cardNum,out short index);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetVersion(short cardNum,out string pVersion);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetInterfaceBoardSts(short cardNum,out short pStatus);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetInterfaceBoardSts(short cardNum,short type);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_Open(short cardNum,short channel,short param);
+ [DllImport("gts.dll")]
+ public static extern short GT_Close(short cardNum);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_LoadConfig(short cardNum,string pFile);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_AlarmOff(short cardNum,short axis);
+ [DllImport("gts.dll")]
+ public static extern short GT_AlarmOn(short cardNum,short axis);
+ [DllImport("gts.dll")]
+ public static extern short GT_LmtsOn(short cardNum,short axis, short limitType);
+ [DllImport("gts.dll")]
+ public static extern short GT_LmtsOff(short cardNum,short axis, short limitType);
+ [DllImport("gts.dll")]
+ public static extern short GT_ProfileScale(short cardNum,short axis, short alpha, short beta);
+ [DllImport("gts.dll")]
+ public static extern short GT_EncScale(short cardNum,short axis, short alpha, short beta);
+ [DllImport("gts.dll")]
+ public static extern short GT_StepDir(short cardNum,short step);
+ [DllImport("gts.dll")]
+ public static extern short GT_StepPulse(short cardNum,short step);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetMtrBias(short cardNum,short dac, short bias);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetMtrBias(short cardNum,short dac, out short pBias);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetMtrLmt(short cardNum,short dac, short limit);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetMtrLmt(short cardNum,short dac, out short pLimit);
+ [DllImport("gts.dll")]
+ public static extern short GT_EncSns(short cardNum,ushort sense);
+ [DllImport("gts.dll")]
+ public static extern short GT_EncOn(short cardNum,short encoder);
+ [DllImport("gts.dll")]
+ public static extern short GT_EncOff(short cardNum,short encoder);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPosErr(short cardNum,short control, int error);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPosErr(short cardNum,short control, out int pError);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetStopDec(short cardNum,short profile, double decSmoothStop, double decAbruptStop);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetStopDec(short cardNum,short profile, out double pDecSmoothStop, out double pDecAbruptStop);
+ [DllImport("gts.dll")]
+ public static extern short GT_LmtSns(short cardNum,ushort sense);
+ [DllImport("gts.dll")]
+ public static extern short GT_CtrlMode(short cardNum,short axis, short mode);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetStopIo(short cardNum,short axis, short stopType, short inputType, short inputIndex);
+ [DllImport("gts.dll")]
+ public static extern short GT_GpiSns(short cardNum,ushort sense);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetAdcFilter(short cardNum,short adc,short filterTime);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetAxisPrfVelFilter(short cardNum,short axis,short filterNumExp);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisPrfVelFilter(short cardNum,short axis,out short pFilterNumExp);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetAxisEncVelFilter(short cardNum,short axis,short filterNumExp);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisEncVelFilter(short cardNum,short axis,out short pFilterNumExp);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetAxisInputShaping(short cardNum,short axis, short enable, short count, double k);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetDo(short cardNum,short doType,int value);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetDoBit(short cardNum,short doType,short doIndex,short value);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetDo(short cardNum,short doType,out int pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetDoBitReverse(short cardNum,short doType,short doIndex,short value,short reverseTime);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetDoMask(short cardNum,short doType,ushort doMask,int value);
+ [DllImport("gts.dll")]
+ public static extern short GT_EnableDoBitPulse(short cardNum,short doType,short doIndex,ushort highLevelTime,ushort lowLevelTime,int pulseNum,short firstLevel);
+ [DllImport("gts.dll")]
+ public static extern short GT_DisableDoBitPulse(short cardNum,short doType, short doIndex);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetDi(short cardNum,short diType,out int pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetDiReverseCount(short cardNum,short diType,short diIndex,out uint reverseCount,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetDiReverseCount(short cardNum,short diType,short diIndex,ref uint reverseCount,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetDiRaw(short cardNum,short diType,out int pValue);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetDac(short cardNum,short dac,ref short value,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetDac(short cardNum,short dac,out short value,short count,out uint pClock);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAdc(short cardNum,short adc,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAdcValue(short cardNum,short adc,out short pValue,short count,out uint pClock);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetEncPos(short cardNum,short encoder,int encPos);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetEncPos(short cardNum,short encoder,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetEncPosPre(short cardNum,short encoder,out double pValue,short count,uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetEncVel(short cardNum,short encoder,out double pValue,short count,out uint pClock);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCaptureMode(short cardNum,short encoder,short mode);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCaptureMode(short cardNum,short encoder,out short pMode,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCaptureStatus(short cardNum,short encoder,out short pStatus,out int pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCaptureSense(short cardNum,short encoder, short mode,short sense);
+ [DllImport("gts.dll")]
+ public static extern short GT_ClearCaptureStatus(short cardNum,short encoder);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCaptureRepeat(short cardNum,short encoder,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCaptureRepeatStatus(short cardNum,short encoder,out short pCount);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCaptureRepeatPos(short cardNum,short encoder, out int pValue, short startNum, short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCaptureEncoder(short cardNum,short trigger,short encoder);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCaptureWidth(short cardNum,short trigger,out short pWidth,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCaptureHomeGpi(short cardNum,short trigger,out short pHomeSts,out short pHomePos,out short pGpiSts,out short pGpiPos,short count);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_Reset(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetClock(short cardNum,out uint pClock,out uint pLoop);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetClockHighPrecision(short cardNum,out uint pClock);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetSts(short cardNum,short axis,out int pSts,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_ClrSts(short cardNum,short axis,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_AxisOn(short cardNum,short axis);
+ [DllImport("gts.dll")]
+ public static extern short GT_AxisOff(short cardNum,short axis);
+ [DllImport("gts.dll")]
+ public static extern short GT_Stop(short cardNum,int mask,int option);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPrfPos(short cardNum,short profile,int prfPos);
+ [DllImport("gts.dll")]
+ public static extern short GT_SynchAxisPos(short cardNum,int mask);
+ [DllImport("gts.dll")]
+ public static extern short GT_ZeroPos(short cardNum,short axis,short count);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetSoftLimit(short cardNum,short axis,int positive,int negative);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetSoftLimit(short cardNum,short axis,out int pPositive,out int pNegative);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetAxisBand(short cardNum,short axis,int band,int time);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisBand(short cardNum,short axis,out int pBand,out int pTime);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetBacklash(short cardNum,short axis,int compValue,double compChangeValue,int compDir);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetBacklash(short cardNum,short axis,out int pCompValue,out double pCompChangeValue,out int pCompDir);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetLeadScrewComp(short cardNum,short axis,short n,int startPos,int lenPos,out int pCompPos,out int pCompNeg);
+ [DllImport("gts.dll")]
+ public static extern short GT_EnableLeadScrewComp(short cardNum,short axis,short mode);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCompensate(short cardNum,short axis, out double pPitchError, out double pCrossError, out double pBacklashError, out double pEncPos, out double pPrfPos);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_EnableGantry(short cardNum,short gantryMaster,short gantrySlave,double masterKp,double slaveKp);
+ [DllImport("gts.dll")]
+ public static extern short GT_DisableGantry(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetGantryErrLmt(short cardNum,int gantryErrLmt);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetGantryErrLmt(short cardNum,out int pGantryErrLmt);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPrfPos(short cardNum,short profile,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPrfVel(short cardNum,short profile,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPrfAcc(short cardNum,short profile,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPrfMode(short cardNum,short profile,out int pValue,short count,out uint pClock);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisPrfPos(short cardNum,short axis,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisPrfVel(short cardNum,short axis,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisPrfAcc(short cardNum,short axis,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisEncPos(short cardNum,short axis,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisEncVel(short cardNum,short axis,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisEncAcc(short cardNum,short axis,out double pValue,short count,out uint pClock);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisError(short cardNum,short axis,out double pValue,short count,out uint pClock);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetLongVar(short cardNum,short index,int value);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetLongVar(short cardNum,short index,out int pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetDoubleVar(short cardNum,short index,double pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetDoubleVar(short cardNum,short index, out double pValue);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetControlFilter(short cardNum,short control,short index);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetControlFilter(short cardNum,short control,out short pIndex);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPid(short cardNum,short control,short index,ref TPid pPid);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPid(short cardNum,short control,short index,out TPid pPid);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetKvffFilter(short cardNum,short control,short index,short kvffFilterExp,double accMax);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetKvffFilter(short cardNum,short control, short index, out short pKvffFilterExp, out double pAccMax);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_Update(short cardNum,int mask);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPos(short cardNum,short profile,int pos);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPos(short cardNum,short profile,out int pPos);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetVel(short cardNum,short profile,double vel);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetVel(short cardNum,short profile,out double pVel);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_PrfTrap(short cardNum,short profile);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetTrapPrm(short cardNum,short profile,ref TTrapPrm pPrm);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetTrapPrm(short cardNum,short profile,out TTrapPrm pPrm);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_PrfJog(short cardNum,short profile);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetJogPrm(short cardNum,short profile,ref TJogPrm pPrm);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetJogPrm(short cardNum,short profile,out TJogPrm pPrm);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_PrfPt(short cardNum,short profile,short mode);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPtLoop(short cardNum,short profile,int loop);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPtLoop(short cardNum,short profile,out int pLoop);
+ [DllImport("gts.dll")]
+ public static extern short GT_PtSpace(short cardNum,short profile,out short pSpace,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_PtData(short cardNum,short profile,double pos,int time,short type,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_PtDataWN(short cardNum,short profile,double pos,int time,short type,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_PtClear(short cardNum,short profile,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_PtStart(short cardNum,int mask,int option);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPtMemory(short cardNum,short profile,short memory);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPtMemory(short cardNum,short profile,out short pMemory);
+ [DllImport("gts.dll")]
+ public static extern short GT_PtGetSegNum(short cardNum,short profile, out int pSegNum);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_PrfGear(short cardNum,short profile,short dir);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetGearMaster(short cardNum,short profile,short masterIndex,short masterType,short masterItem);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetGearMaster(short cardNum,short profile,out short pMasterIndex,out short pMasterType,out short pMasterItem);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetGearRatio(short cardNum,short profile,int masterEven,int slaveEven,int masterSlope);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetGearRatio(short cardNum,short profile,out int pMasterEven,out int pSlaveEven,out int pMasterSlope);
+ [DllImport("gts.dll")]
+ public static extern short GT_GearStart(short cardNum,int mask);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetGearEvent(short cardNum,short profile,short gearEvent,int startPara0,int startPara1);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetGearEvent(short cardNum,short profile, out short pEvent,out int pStartPara0, out int pStartPara1);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_PrfFollow(short cardNum,short profile,short dir);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetFollowMaster(short cardNum,short profile,short masterIndex,short masterType,short masterItem);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetFollowMaster(short cardNum,short profile,out short pMasterIndex,out short pMasterType,out short pMasterItem);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetFollowLoop(short cardNum,short profile,int loop);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetFollowLoop(short cardNum,short profile,out int pLoop);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetFollowEvent(short cardNum,short profile,short followEvent,short masterDir,int pos);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetFollowEvent(short cardNum,short profile,out short pFollowEvent,out short pMasterDir,out int pPos);
+ [DllImport("gts.dll")]
+ public static extern short GT_FollowSpace(short cardNum,short profile,out short pSpace,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_FollowData(short cardNum,short profile,int masterSegment,double slaveSegment,short type,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_FollowClear(short cardNum,short profile,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_FollowStart(short cardNum,int mask,int option);
+ [DllImport("gts.dll")]
+ public static extern short GT_FollowSwitch(short cardNum,int mask);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetFollowMemory(short cardNum,short profile,short memory);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetFollowMemory(short cardNum,short profile,out short memory);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetFollowStatus(short cardNum,short profile, out short pFifoNum, out short pSwitchStatus);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetFollowPhasing(short cardNum,short profile, short profilePhasing);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetFollowPhasing(short cardNum,short profile, out short pProfilePhasing);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_Compile(short cardNum,string pFileName, out TCompileInfo pWrongInfo);
+ [DllImport("gts.dll")]
+ public static extern short GT_Download(short cardNum,string pFileName);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetFunId(short cardNum,string pFunName,out short pFunId);
+ [DllImport("gts.dll")]
+ public static extern short GT_Bind(short cardNum,short thread,short funId, short page);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_RunThread(short cardNum,short thread);
+ [DllImport("gts.dll")]
+ public static extern short GT_StopThread(short cardNum,short thread);
+ [DllImport("gts.dll")]
+ public static extern short GT_PauseThread(short cardNum,short thread);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetThreadSts(short cardNum,short thread,out TThreadSts pThreadSts);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_GetVarId(short cardNum,string pFunName,string pVarName,out TVarInfo pVarInfo);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetVarValue(short cardNum,short page,ref TVarInfo pVarInfo,ref double pValue,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetVarValue(short cardNum,short page,ref TVarInfo pVarInfo,out double pValue,short count);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCrdPrm(short cardNum,short crd, ref TCrdPrm pCrdPrm);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCrdPrm(short cardNum,short crd,out TCrdPrm pCrdPrm);
+ [DllImport("gts.dll")]
+ public static extern short GT_CrdSpace(short cardNum,short crd,out int pSpace,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_CrdData(short cardNum,short crd,System.IntPtr pCrdData,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_CrdDataCircle(short cardNum,short crd, ref TCrdData pCrdData, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXY(short cardNum,short crd, int x, int y, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZ(short cardNum,short crd, int x, int y, int z, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZA(short cardNum,short crd, int x, int y, int z, int a, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYG0(short cardNum,short crd, int x, int y, double synVel, double synAcc, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZG0(short cardNum,short crd, int x, int y, int z, double synVel, double synAcc, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZAG0(short cardNum,short crd, int x, int y, int z, int a, double synVel, double synAcc, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYR(short cardNum,short crd, int x, int y, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYC(short cardNum,short crd, int x, int y, double xCenter, double yCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcYZR(short cardNum,short crd, int y, int z, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcYZC(short cardNum,short crd, int y, int z, double yCenter, double zCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcZXR(short cardNum,short crd, int z, int x, double radius, short circleDir, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcZXC(short cardNum,short crd, int z, int x, double zCenter, double xCenter, short circleDir, double synVel, double synAcc, double velEnd, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYZ(short cardNum,short crd,int x,int y,int z,double interX,double interY,double interZ,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYOverride2(short cardNum,short crd,int x,int y,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZOverride2(short cardNum,short crd,int x,int y,int z,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZAOverride2(short cardNum,short crd,int x,int y,int z,int a,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYG0Override2(short cardNum,short crd,int x,int y,double synVel,double synAcc,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZG0Override2(short cardNum,short crd,int x,int y,int z,double synVel,double synAcc,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZAG0Override2(short cardNum,short crd,int x,int y,int z,int a,double synVel,double synAcc,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYROverride2(short cardNum,short crd,int x,int y,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYCOverride2(short cardNum,short crd,int x,int y,double xCenter,double yCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcYZROverride2(short cardNum,short crd,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcYZCOverride2(short cardNum,short crd,int y,int z,double yCenter,double zCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcZXROverride2(short cardNum,short crd,int z,int x,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcZXCOverride2(short cardNum,short crd,int z,int x,double zCenter,double xCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixXYRZ(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixXYCZ(short cardNum,short crd,int x,int y,int z,double xCenter,double yCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixYZRX(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixYZCX(short cardNum,short crd,int x,int y,int z,double yCenter,double zCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixZXRY(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixZXCY(short cardNum,short crd,int x,int y,int z,double zCenter,double xCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixXYRZOverride2(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixXYCZOverride2(short cardNum,short crd,int x,int y,int z,double xCenter,double yCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixYZRXOverride2(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixYZCXOverride2(short cardNum,short crd,int x,int y,int z,double yCenter,double zCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixZXRYOverride2(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixZXCYOverride2(short cardNum,short crd,int x,int y,int z,double zCenter,double xCenter,short circleDir,double synVel,double synAcc,double velEnd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYWN(short cardNum,short crd,int x,int y,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZWN(short cardNum,short crd,int x,int y,int z,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZAWN(short cardNum,short crd,int x,int y,int z,int a,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYG0WN(short cardNum,short crd,int x,int y,double synVel,double synAcc,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZG0WN(short cardNum,short crd,int x,int y,int z,double synVel,double synAcc,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZAG0WN(short cardNum,short crd,int x,int y,int z,int a,double synVel,double synAcc,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYRWN(short cardNum,short crd,int x,int y,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYCWN(short cardNum,short crd,int x,int y,double xCenter,double yCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcYZRWN(short cardNum,short crd,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcYZCWN(short cardNum,short crd,int y,int z,double yCenter,double zCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcZXRWN(short cardNum,short crd,int z,int x,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcZXCWN(short cardNum,short crd,int z,int x,double zCenter,double xCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYZWN(short cardNum,short crd,int x,int y,int z,double interX,double interY,double interZ,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYOverride2WN(short cardNum,short crd,int x,int y,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZOverride2WN(short cardNum,short crd,int x,int y,int z,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZAOverride2WN(short cardNum,short crd,int x,int y,int z,int a,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYG0Override2WN(short cardNum,short crd,int x,int y,double synVel,double synAcc,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZG0Override2WN(short cardNum,short crd,int x,int y,int z,double synVel,double synAcc,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_LnXYZAG0Override2WN(short cardNum,short crd,int x,int y,int z,int a,double synVel,double synAcc,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYROverride2WN(short cardNum,short crd,int x,int y,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcXYCOverride2WN(short cardNum,short crd,int x,int y,double xCenter,double yCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcYZROverride2WN(short cardNum,short crd,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcYZCOverride2WN(short cardNum,short crd,int y,int z,double yCenter,double zCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcZXROverride2WN(short cardNum,short crd,int z,int x,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_ArcZXCOverride2WN(short cardNum,short crd,int z,int x,double zCenter,double xCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixXYRZWN(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixXYCZWN(short cardNum,short crd,int x,int y,int z,double xCenter,double yCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixYZRXWN(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixYZCXWN(short cardNum,short crd,int x,int y,int z,double yCenter,double zCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixZXRYWN(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixZXCYWN(short cardNum,short crd,int x,int y,int z,double zCenter,double xCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixXYRZOverride2WN(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixXYCZOverride2WN(short cardNum,short crd,int x,int y,int z,double xCenter,double yCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixYZRXOverride2WN(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixYZCXOverride2WN(short cardNum,short crd,int x,int y,int z,double yCenter,double zCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixZXRYOverride2WN(short cardNum,short crd,int x,int y,int z,double radius,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_HelixZXCYOverride2WN(short cardNum,short crd,int x,int y,int z,double zCenter,double xCenter,short circleDir,double synVel,double synAcc,double velEnd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufIO(short cardNum,short crd, ushort doType, ushort doMask, ushort doValue, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufEnableDoBitPulse(short cardNum,short crd,short doType,short doIndex,ushort highLevelTime,ushort lowLevelTime,int pulseNum,short firstLevel,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufDisableDoBitPulse(short cardNum,short crd,short doType,short doIndex,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufDelay(short cardNum,short crd, ushort delayTime, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufComparePulse(short cardNum,short crd,short level,short outputType,short time,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufDA(short cardNum,short crd, short chn, short daValue, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLmtsOn(short cardNum,short crd, short axis, short limitType, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLmtsOff(short cardNum,short crd, short axis, short limitType, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufSetStopIo(short cardNum,short crd, short axis, short stopType, short inputType, short inputIndex, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufMove(short cardNum,short crd, short moveAxis, int pos, double vel, double acc, short modal, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufGear(short cardNum,short crd, short gearAxis, int pos, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufGearPercent(short cardNum,short crd,short gearAxis,int pos,short accPercent,short decPercent,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufStopMotion(short cardNum,short crd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufSetVarValue(short cardNum,short crd,short pageId,out TVarInfo pVarInfo,double value,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufJumpNextSeg(short cardNum,short crd,short axis,short limitType,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufSynchPrfPos(short cardNum,short crd,short encoder,short profile,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufVirtualToActual(short cardNum,short crd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufSetLongVar(short cardNum,short crd,short index,int value,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufSetDoubleVar(short cardNum,short crd,short index,double value,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_CrdStart(short cardNum,short mask,short option);
+ [DllImport("gts.dll")]
+ public static extern short GT_CrdStartStep(short cardNum,short mask, short option);
+ [DllImport("gts.dll")]
+ public static extern short GT_CrdStepMode(short cardNum,short mask, short option);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetOverride(short cardNum,short crd,double synVelRatio);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetOverride2(short cardNum,short crd, double synVelRatio);
+ [DllImport("gts.dll")]
+ public static extern short GT_InitLookAhead(short cardNum,short crd,short fifo,double T,double accMax,short n,ref TCrdData pLookAheadBuf);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetLookAheadSpace(short cardNum,short crd,out int pSpace,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetLookAheadSegCount(short cardNum,short crd,out int pSegCount,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_CrdClear(short cardNum,short crd,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_CrdStatus(short cardNum,short crd,out short pRun,out int pSegment,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetUserSegNum(short cardNum,short crd,int segNum,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetUserSegNum(short cardNum,short crd,out int pSegment,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetUserSegNumWN(short cardNum,short crd,out int pSegment,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetRemainderSegNum(short cardNum,short crd,out int pSegment,short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCrdStopDec(short cardNum,short crd,double decSmoothStop,double decAbruptStop);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCrdStopDec(short cardNum,short crd,out double pDecSmoothStop,out double pDecAbruptStop);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCrdLmtStopMode(short cardNum,short crd,short lmtStopMode);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCrdLmtStopMode(short cardNum,short crd,out short pLmtStopMode);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetUserTargetVel(short cardNum,short crd,out double pTargetVel);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetSegTargetPos(short cardNum,short crd,out int pTargetPos);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCrdPos(short cardNum,short crd,out double pPos);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCrdVel(short cardNum,short crd,out double pSynVel);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCrdSingleMaxVel(short cardNum,short crd,ref double pMaxVel);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCrdSingleMaxVel(short cardNum,short crd,out double pMaxVel);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCmdCount(short cardNum,short crd, out short pResult, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLaserOn(short cardNum,short crd,short fifo,short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLaserOff(short cardNum,short crd,short fifo,short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLaserPrfCmd(short cardNum,short crd,double laserPower,short fifo,short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLaserFollowRatio(short cardNum,short crd,double ratio,double minPower,double maxPower,short fifo,short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLaserFollowMode(short cardNum,short crd,short source ,short fifo,short channel,double startPower );
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLaserFollowOff(short cardNum,short crd,short fifo,short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_BufLaserFollowSpline(short cardNum,short crd,short tableId,double minPower,double maxPower,short fifo,short channel);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_PrfPvt(short cardNum,short profile);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPvtLoop(short cardNum,short profile,int loop);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetPvtLoop(short cardNum,short profile,out int pLoopCount,out int pLoop);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtStatus(short cardNum,short profile,out short pTableId,out double pTime,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtStart(short cardNum,int mask);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtTableSelect(short cardNum,short profile,short tableId);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtTable(short cardNum,short tableId,int count,ref double pTime,ref double pPos,ref double pVel);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtTableEx(short cardNum,short tableId,int count,ref double pTime,ref double pPos,ref double pVelBegin,ref double pVelEnd);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtTableComplete(short cardNum,short tableId,int count,ref double pTime,ref double pPos,ref double pA,ref double pB,ref double pC,double velBegin,double velEnd);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtTablePercent(short cardNum,short tableId,int count,ref double pTime,ref double pPos,ref double pPercent,double velBegin);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtPercentCalculate(short cardNum,int n,ref double pTime,ref double pPos,ref double pPercent,double velBegin,ref double pVel);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtTableContinuous(short cardNum,short tableId,int count,ref double pPos,ref double pVel,ref double pPercent,ref double pVelMax,ref double pAcc,ref double pDec,double timeBegin);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtContinuousCalculate(short cardNum,int n,ref double pPos,ref double pVel,ref double pPercent,ref double pVelMax,ref double pAcc,ref double pDec,ref double pTime);
+ [DllImport("gts.dll")]
+ public static extern short GT_PvtTableMovePercent(short cardNum,short tableId, long distance, double vm, double acc, double pa1, double pa2, double dec, double pd1, double pd2, out double pVel, out double pAcc, out double pDec, out double pTime);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_HomeInit(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_Home(short cardNum,short axis,int pos,double vel,double acc,int offset);
+ [DllImport("gts.dll")]
+ public static extern short GT_Index(short cardNum,short axis,int pos,int offset);
+ [DllImport("gts.dll")]
+ public static extern short GT_HomeStop(short cardNum,short axis,int pos,double vel,double acc);
+ [DllImport("gts.dll")]
+ public static extern short GT_HomeSts(short cardNum,short axis,out ushort pStatus);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_HandwheelInit(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetHandwheelStopDec(short cardNum,short slave,double decSmoothStop,double decAbruptStop);
+ [DllImport("gts.dll")]
+ public static extern short GT_StartHandwheel(short cardNum,short slave,short master,short masterEven,short slaveEven,short intervalTime,double acc,double dec,double vel,short stopWaitTime);
+ [DllImport("gts.dll")]
+ public static extern short GT_EndHandwheel(short cardNum,short slave);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetTrigger(short cardNum,short i,ref TTrigger pTrigger);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetTrigger(short cardNum,short i,out TTrigger pTrigger);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetTriggerStatus(short cardNum,short i,out TTriggerStatus pTriggerStatus,short count);
+ [DllImport("gts.dll")]
+ public static extern short GT_ClearTriggerStatus(short cardNum,short i);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetComparePort(short cardNum,short channel,short hsio0,short hsio1);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_ComparePulse(short cardNum,short level,short outputType,short time);
+ [DllImport("gts.dll")]
+ public static extern short GT_CompareStop(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_CompareStatus(short cardNum,out short pStatus,out int pCount);
+ [DllImport("gts.dll")]
+ public static extern short GT_CompareData(short cardNum,short encoder,short source,short pulseType,short startLevel,short time,ref int pBuf1,short count1,ref int pBuf2,short count2);
+ [DllImport("gts.dll")]
+ public static extern short GT_CompareLinear(short cardNum,short encoder,short channel,int startPos,int repeatTimes,int interval,short time,short source);
+ [DllImport("gts.dll")]
+ public static extern short GT_CompareContinuePulseMode(short cardNum,short mode, short count, short standTime);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetEncResponseCheck(short cardNum,short control, short dacThreshold, double minEncVel, int time);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetEncResponseCheck(short cardNum,short control, out short pDacThreshold, out double pMinEncVel, out int pTime);
+ [DllImport("gts.dll")]
+ public static extern short GT_EnableEncResponseCheck(short cardNum,short control);
+ [DllImport("gts.dll")]
+ public static extern short GT_DisableEncResponseCheck(short cardNum,short control);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_2DCompareMode(short cardNum,short chn, short mode);
+ [DllImport("gts.dll")]
+ public static extern short GT_2DComparePulse(short cardNum,short chn, short level, short outputType, short time);
+ [DllImport("gts.dll")]
+ public static extern short GT_2DCompareStop(short cardNum,short chn);
+ [DllImport("gts.dll")]
+ public static extern short GT_2DCompareClear(short cardNum,short chn);
+ [DllImport("gts.dll")]
+ public static extern short GT_2DCompareStatus(short cardNum,short chn, out short pStatus, out int pCount, out short pFifo, out short pFifoCount, out short pBufCount);
+ [DllImport("gts.dll")]
+ public static extern short GT_2DCompareSetPrm(short cardNum,short chn, ref T2DComparePrm pPrm);
+ [DllImport("gts.dll")]
+ public static extern short GT_2DCompareData(short cardNum,short chn, short count, ref T2DCompareData pBuf, short fifo);
+ [DllImport("gts.dll")]
+ public static extern short GT_2DCompareStart(short cardNum,short chn);
+
+ [DllImport("gts.dll")]
+ public static extern short GT_SetAxisMode(short cardNum,short axis, short mode);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAxisMode(short cardNum,short axis, out short pMode);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetHSIOOpt(short cardNum,ushort value, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetHSIOOpt(short cardNum,out ushort pValue, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_LaserPowerMode(short cardNum,short laserPowerMode, double maxValue, double minValue, short channel, short delaymode);
+ [DllImport("gts.dll")]
+ public static extern short GT_LaserPrfCmd(short cardNum,double outputCmd, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_LaserOutFrq(short cardNum,double outFrq, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPulseWidth(short cardNum,uint width, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetWaitPulse(short cardNum,ushort mode, double waitPulseFrq, double waitPulseDuty, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetPreVltg(short cardNum,ushort mode, double voltageValue, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetLevelDelay(short cardNum,ushort offDelay, ushort onDelay, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_EnaFPK(short cardNum,ushort time1, ushort time2, ushort laserOffDelay, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_DisFPK(short cardNum,short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetLaserDisMode(short cardNum,short mode, short source, ref int pPos, ref double pScale, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetLaserDisRatio(short cardNum,ref double pRatio, double minPower, double maxPower, short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetWaitPulseEx(short cardNum,ushort mode, double waitPulseFrq, double waitPulseDuty);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetLaserMode(short cardNum,short mode);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetLaserFollowSpline(short cardNum,short tableId,long n,ref double pX,ref double pY,double beginValue,double endValue,short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetLaserFollowSpline(short cardNum,short tableId,long n,out double pX,out double pY,out double pA,out double pB,out double pC,out long pCount,short channel);
+
+ //ExtMdl
+ [DllImport("gts.dll")]
+ public static extern short GT_OpenExtMdl(short cardNum,string pDllName);
+ [DllImport("gts.dll")]
+ public static extern short GT_CloseExtMdl(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_SwitchtoCardNoExtMdl(short cardNum,short card);
+ [DllImport("gts.dll")]
+ public static extern short GT_ResetExtMdl(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_LoadExtConfig(short cardNum,string pFileName);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetExtIoValue(short cardNum,short mdl,ushort value);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetExtIoValue(short cardNum,short mdl,out ushort pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetExtIoBit(short cardNum,short mdl,short index,ushort value);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetExtIoBit(short cardNum,short mdl,short index,out ushort pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetExtAdValue(short cardNum,short mdl,short chn,out ushort pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetExtAdVoltage(short cardNum,short mdl,short chn,out double pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetExtDaValue(short cardNum,short mdl,short chn,ushort value);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetExtDaVoltage(short cardNum,short mdl,short chn,double value);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetStsExtMdl(short cardNum,short mdl,short chn,out ushort pStatus);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetExtDoValue(short cardNum,short mdl,out ushort pValue);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetExtMdlMode(short cardNum,out short pMode);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetExtMdlMode(short cardNum,short mode);
+ [DllImport("gts.dll")]
+ public static extern short GT_UploadConfig(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_DownloadConfig(short cardNum);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetUuid(short cardNum,out char pCode,short count);
+
+ //2D Compensate
+ public struct TCompensate2DTable
+ {
+ public short count1;
+ public short count2;
+ public int posBegin1;
+ public int posBegin2;
+ public int step1;
+ public int step2;
+ }
+ public struct TCompensate2D
+ {
+ public short enable;
+ public short tableIndex;
+ public short axisType1;
+ public short axisType2;
+ public short axisIndex1;
+ public short axisIndex2;
+ }
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCompensate2DTable(short cardNum,short tableIndex,ref TCompensate2DTable pTable,ref int pData,short externComp);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCompensate2DTable(short cardNum,short tableIndex,out TCompensate2DTable pTable,out short pExternComp);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetCompensate2D(short cardNum,short axis, ref TCompensate2D pComp2d);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCompensate2D(short cardNum,short axis, out TCompensate2D pComp2d);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetCompensate2DValue(short cardNum,short axis, out double pValue);
+
+ //Smart Home
+ public const short HOME_STAGE_IDLE=0;
+ public const short HOME_STAGE_START=1;
+ public const short HOME_STAGE_SEARCH_LIMIT=10;
+ public const short HOME_STAGE_SEARCH_LIMIT_STOP=11;
+ public const short HOME_STAGE_SEARCH_LIMIT_ESCAPE = 13;
+ public const short HOME_STAGE_SEARCH_LIMIT_RETURN=15;
+ public const short HOME_STAGE_SEARCH_LIMIT_RETURN_STOP=16;
+ public const short HOME_STAGE_SEARCH_HOME=20;
+ public const short HOME_STAGE_SEARCH_HOME_RETURN=25;
+ public const short HOME_STAGE_SEARCH_INDEX=30;
+ public const short HOME_STAGE_SEARCH_GPI=40;
+ public const short HOME_STAGE_SEARCH_GPI_RETURN=45;
+ public const short HOME_STAGE_GO_HOME=80;
+ public const short HOME_STAGE_END=100;
+ public const short HOME_ERROR_NONE=0;
+ public const short HOME_ERROR_NOT_TRAP_MODE=1;
+ public const short HOME_ERROR_DISABLE=2;
+ public const short HOME_ERROR_ALARM=3;
+ public const short HOME_ERROR_STOP=4;
+ public const short HOME_ERROR_STAGE=5;
+ public const short HOME_ERROR_HOME_MODE=6;
+ public const short HOME_ERROR_SET_CAPTURE_HOME=7;
+ public const short HOME_ERROR_NO_HOME=8;
+ public const short HOME_ERROR_SET_CAPTURE_INDEX=9;
+ public const short HOME_ERROR_NO_INDEX=10;
+ public const short HOME_MODE_LIMIT=10;
+ public const short HOME_MODE_LIMIT_HOME=11;
+ public const short HOME_MODE_LIMIT_INDEX=12;
+ public const short HOME_MODE_LIMIT_HOME_INDEX=13;
+ public const short HOME_MODE_HOME=20;
+ public const short HOME_MODE_HOME_INDEX=22;
+ public const short HOME_MODE_INDEX = 30;
+ public struct THomePrm
+ {
+ public short mode;
+ public short moveDir;
+ public short indexDir;
+ public short edge;
+ public short triggerIndex;
+ public short pad1_1;
+ public short pad1_2;
+ public short pad1_3;
+ public double velHigh;
+ public double velLow;
+ public double acc;
+ public double dec;
+ public short smoothTime;
+ public short pad2_1;
+ public short pad2_2;
+ public short pad2_3;
+ public int homeOffset;
+ public int searchHomeDistance;
+ public int searchIndexDistance;
+ public int escapeStep;
+ public int pad3_1;
+ public int pad3_2;
+ public int pad3_3;
+ }
+ public struct THomeStatus
+ {
+ public short run;
+ public short stage;
+ public short error;
+ public short pad1;
+ public int capturePos;
+ public int targetPos;
+ }
+ [DllImport("gts.dll")]
+ public static extern short GT_GoHome(short cardNum,short axis, ref THomePrm pHomePrm);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetHomePrm(short cardNum,short axis, out THomePrm pHomePrm);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetHomeStatus(short cardNum,short axis, out THomeStatus pHomeStatus);
+
+ //Extern Control
+ public struct TControlConfigEx
+ {
+ public short refType;
+ public short refIndex;
+ public short feedbackType;
+ public short feedbackIndex;
+ public int errorLimit;
+ public short feedbackSmooth;
+ public short controlSmooth;
+ }
+ [DllImport("gts.dll")]
+ public static extern short GT_SetControlConfigEx(short cardNum,short control, ref TControlConfigEx pControl);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetControlConfigEx(short cardNum,short control, out TControlConfigEx pControl);
+
+ //Adc filter
+ public struct TAdcConfig
+ {
+ public short active;
+ public short reverse;
+ public double a;
+ public double b;
+ public short filterMode;
+ }
+ [DllImport("gts.dll")]
+ public static extern short GT_SetAdcConfig(short cardNum,short adc, ref TAdcConfig pAdc);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAdcConfig(short cardNum,short adc, out TAdcConfig pAdc);
+ [DllImport("gts.dll")]
+ public static extern short GT_SetAdcFilterPrm(short cardNum,short adc, double k);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetAdcFilterPrm(short cardNum,short adc, out double pk);
+
+ //Superimposed
+ [DllImport("gts.dll")]
+ public static extern short GT_SetControlSuperimposed(short cardNum,short control, short superimposedType, short superimposedIndex);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetControlSuperimposed(short cardNum,short control, out short pSuperimposedType, out short pSuperimposedIndex);
+
+ ////////////////////
+ [DllImport("gts.dll")]
+ public static extern short GT_ZeroLaserOnTime(short cardNum,short channel);
+ [DllImport("gts.dll")]
+ public static extern short GT_GetLaserOnTime(short cardNum,short channel,out uint pTime);
+ }
+}
diff --git a/Rs.Motion/Rs.Motion.csproj b/Rs.Motion/Rs.Motion.csproj
index 779926a..983e480 100644
--- a/Rs.Motion/Rs.Motion.csproj
+++ b/Rs.Motion/Rs.Motion.csproj
@@ -54,10 +54,15 @@
+
+
+
+
+