using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.ComponentModel; using FObjBase; using Misc; using System.Collections.ObjectModel; namespace FlyADBase { /// /// AD盒提供的功能 /// public interface IFlyAD : INotifyPropertyChanged { /// /// AD盒地址 /// IPEndPoint LocalEP { get; set; } /// /// 从flyad7 获取 的systick 转换的时间 /// DateTime Now { get; } /// /// AD盒版本号 版本1 没有systick;版本2 有systick; /// int Version { get; } /// /// 脉冲 /// int Position { get; } /// /// 速度 pps /// int Speed { get; } /// /// 1000ms从AD卡获取(或推送)1个AD值。此AD值只用于调试,定点 /// int AD { get; } /// /// AD值最大值 ,恒定返回65535 /// int ADMax { get; } /// /// 输入口状态,只有12位有效 /// UInt16 IStatus { get; } /// /// 输出口状态,只有4位有效 /// UInt16 OStatus { get; } /// /// Out0 = 0, SetOutput(0x0001,0x0000); /// Out0 = 1, Out1 = 0, SetOutput(0x0003,0x0001); /// /// /// void SetOutput(UInt16 mask, UInt16 enable); /// /// 读取参数, 全部!!!! /// void UpdateParam(); #region 运动参数 /// /// 设置 运动参数 /// /// 脉冲/grid /// 电机类型 /// 脉冲比例 分母(电机脉冲) /// 脉冲比例 分子(编码器脉冲) void SetSysParam(UInt16 posOfGrid, MOTORTYPE motortype, UInt16 ratio01, UInt16 ratio02); /// /// 电机类型 /// MOTORTYPE MotorType { set; get; } /// /// 脉冲/grid, 最大1000个grid /// UInt16 PosOfGrid { set; get; } /// /// 脉冲比例 分母(电机脉冲) /// UInt16 Ratio01 { get; set; } /// /// 脉冲比例 分子(编码器脉冲) /// UInt16 Ratio02 { get; set; } #endregion /// /// 脉冲平移(0位处脉冲值) /// Int16 PosOffset { set; get; } /// /// 手动速度 pps /// UInt32 JogVelocity { set; get; } #region 速度参数 /// /// 设置速度参数 /// /// runto 速度 pps /// 开始速度 pps /// 加速时间 ms /// 减速时间 ms /// 归0 第1段速 pps /// 归0 第2段速 pps void SetPosParam(UInt32 velocity, UInt32 sv, UInt32 atime, UInt32 dtime, UInt32 hspeed1, UInt32 hspeed2); /// /// 设置速度 /// /// void SetVelocity(UInt32 velocity); /// /// runto 速度 pps /// UInt32 Velocity { set; get; } /// /// 开始速度 pps /// UInt32 SVelocity { set; get; } /// /// 加速时间 ms /// UInt32 ATime { set; get; } /// /// 减速时间 ms /// UInt32 DTime { set; get; } /// /// 归0 第1段速 pps /// UInt32 HVelocity1 { set; get; } /// /// 归0 第2段速 pps /// UInt32 HVelocity2 { set; get; } #endregion #region 密码 /// /// 使用码区状态 /// AREA_STATUS AreaStatus { get; } /// /// 使用码区出错码 /// AREA_ERR AreaRet { get; } /// /// 序列码byte[6] /// byte[] Code { get; } /// /// 系统剩余时间 /// int Surplus { get; } /// /// 系统授权码access[8] /// byte[] Access { get; } /// /// 输入系统授权码 /// /// 系统授权码access[8] void SetAccess(byte[] access); /// /// 初始化系统信息区 /// void InitArea(); #endregion /// /// timegrid 事件; 版本1: 1.28s 一次; 版本2: 0.2s一次, /// event TimeGridEventHandler TimeGridEvent; /// /// runto 中,每经过1个grid 推送数据 /// event MiniGridEventHandler MiniGridEvent; /// /// runto 的 grid事件 /// event MiniGridEventHandler GridEvent; /// /// 输入状态改变事件 /// event IStatusChangedEventHandler IStatusChangedEvent; #region 运行动作 /// /// 运行至指定位置 /// /// 脉冲 void Runto(int to); /// /// 归原点 /// void Origin(); /// /// 停止 /// void Stop(); /// /// 反向,直到撞了限位 /// void Backward(); /// /// 正行,直到撞了限位 /// void Forward(); /// /// 当前运行指令 /// DRIVE_MAN_ORDER DriveOrder { get; } /// /// 之前运行动作的状态 /// DRIVE_MAN_STATUS DriveStatus { get; } #endregion #region 同步 /// /// 同步用标示 /// Int32 Marker { get; } #region 横向脉冲 /// /// 逻辑横向脉冲偏移 Pos1 + Pos1LCShift = Pos1LC /// int Pos1LCShift { get; set; } #endregion #region 主轴脉冲 /// /// 纵向脉冲,也叫主轴脉冲 /// int Position2 { get; set; } /// /// 纵向速度 /// int Speed2 { get; } /// /// 纵向偏移,这个是相对量 /// void SetPos2Offset(int offset); /// /// 纵向值补偿系数,补偿时,先乘除后加减 /// float Pos2Comp { get; set; } /// /// 纵向同步事件,0-1事件 /// /// /// 只要是 01,就立刻修正 void SetPos2At01(int pos2, bool immediately); #endregion #region 同步控制 同步状态转换规则 /// /// 进入同步状态 /// /// void SyncBegin(int pos2); /// /// 进入同步状态 /// void SyncBegin(); /// /// 退出同步状态 /// void SyncEnd(); /// /// 清空同步指令 /// void SyncClear(); /// /// 清空POS2同步列表 /// void SyncPos2Clear(); #endregion #region 同步扫描 脚本指令 /// /// 同步扫描至; /// D+0xE0+开始主轴位置+结束主轴位置+结束横向脉冲位置(逻辑位置)+脉冲开关(1B)+命令识标号(4B) /// /// /// /// /// /// void SyncRunAtLC(int pos2_begin, int pos2_end, int pos1lc, bool hasDataGrid, Int32 marker); /// /// 位于队列头时运行,归零; /// D+0xE1+命令识标号(4B) /// /// void SyncOrigin(Int32 marker); /// /// 位于队列头时运行,以速度运行至物理位置; /// D+0xE2+横向脉冲位置(4B:int32,物理位置)+速度(4B:int32)+脉冲开关(1B)+命令识标号(4B) /// /// /// /// /// void SyncRunTo(int pos1, UInt32 velocity, bool hasDataGrid, Int32 marker); /// /// 位于队列头时运行,以速度运行至逻辑位置; /// D+0xE3+横向脉冲位置(4B:int32,逻辑位置)+速度(4B:int32)+脉冲开关(1B)+命令识标号(4B) /// /// /// /// /// void SyncRunToLC(int pos1lc, UInt32 velocity, bool hasDataGrid, Int32 marker); /// /// 等待,ms; /// D+0xE4+毫秒数(4B:int32)+命令识标号(4B) /// /// /// void SyncWait(int ms, Int32 marker); #endregion #endregion } /// /// 电机类型 /// public enum MOTORTYPE { /// /// 没电机 /// NULL = 0, /// /// 异步电机,通过I1~I3控制 正反转 /// VF0 = 1, /// /// 伺服 或 步进电机,通过 S,P, 控制驱动器 /// SERVO = 2 } /// /// 使用码区状态 /// public enum AREA_STATUS { /// /// 没有读过密码区 /// NOTLOAD = 0, /// /// 读出错 /// RDERR = 1, /// /// 非有效密码区 没有0xAA55 或 0x5A5A 标志 /// NOTVALID = 2, /// /// 写出错 /// WRERR = 3, /// /// 有效密码区 /// VALID = 4, /// /// 有效密码区,应回写EEPROM /// VALID_DIRTY = 5, /// /// 有效密码区,但回写EEPROM失败 /// VALID_WRERR = 6 } /// /// 使用码区操作结果 /// public enum AREA_ERR { /// /// 没有错误 /// NO_ERR = 0, /// /// 重复使用码 /// DUP_ACCESS = 1, /// /// 无效使用码 /// ERR_ACCESS = 2 } /// /// 运行状态 /// public enum DRIVE_MAN_STATUS { /// /// 正常运行结束 /// STOP = 0, /// /// 正在运行 /// RUNNING = 1, /// /// 指令结束(收到停止指令) /// STOP_MANUAL = 2, /// /// 运行结束,限位开关闭合 /// LIMIT = 3 } /// /// 运行动作 /// public enum DRIVE_MAN_ORDER { /// /// 闲置 /// IDLE = 'I', /// /// 运行到 /// RUNTO = 'R', /// /// 归原点 /// ORIGIN = 'O', /// /// 后退 /// BACKWORD = 'B', /// /// 前进 /// FORWORD = 'F', /// /// 停止 /// STOP = 'S', /// /// 同步 /// SYNC = 'D', /// /// 未知状态 /// SYNC2 = 'P' } /// /// 同步状态 /// public enum SYNC_STATUS { /// /// /// SYNCST_NO = 0, /// /// /// SYNCST_PENDING1 = 1, /// /// /// SYNCST_PENDING2 = 2, /// /// /// SYNCST_PENDING3 = 3, /// /// /// SYNCST_TEMP_OUT = 4, /// /// /// SYNCST_WAIT_TO_PENDING = 5, /// /// /// SYNCST_RESUME = 6, /// /// /// SYNCST_YES = 10, } }