#ifndef __DEVICE_ANGLE_H_
#define __DEVICE_ANGLE_H_
#include "ptz_type_select.h"


#define PTZ_HORI_PS_TIEM     12u ///延时判断光电开关状态时间,转速为一转每分延时
#define PTZ_VERT_PS_TIEM     12u //延时判断光电开关状态时间,转速为一转每分延时

   




#ifdef CLK_50M
       #define PTZ_HORI_ANGLE_TIME  (g_ptz.hori_as5047d.time * 1.5) //（角度读取间隔时间 * 放大倍数）
       #define PTZ_VERT_ANGLE_TIME  (g_ptz.vert_as5047d.time * 1.5) //（角度读取间隔时间 * 放大倍数）
#else
       #define PTZ_HORI_ANGLE_TIME  (g_ptz.hori_as5047d.time * 1.5) //（角度读取间隔时间 * 放大倍数）
       #define PTZ_VERT_ANGLE_TIME  (g_ptz.vert_as5047d.time * 1.5) //（角度读取间隔时间 * 放大倍数）
#endif

#ifdef PTZ_LIGHT_GEAR_L6235D_AS5047D
      //磁编码器角度增大，云台角度增大；磁编码器角度减小，云台角度减小
      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

      //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
//      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_ASY   2//角度变化异步
//      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_ASY   2//角度变化异步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE      1//单次获取角度

      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      #define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
     //#define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据

//      #define PTZ_RIGHT_CYCLE_A     5.0     //距离最小满足角度
//      #define PTZ_RIGHT_CYCLE_B     20.0    //距离最大不超过角度
//      #define PTZ_RIGHT_CYCLE_C     6.5//0.5   //检测转动完一圈是否到达同一个点的距离阈值
//      #define PTZ_RIGHT_ANGLE_WF    1.5     //对磁编码器角度进行滤波的阈值
//
//      #define PTZ_LEFT_CYCLE_A     5.0     //距离最小满足角度
//      #define PTZ_LEFT_CYCLE_B     20.0    //距离最大不超过角度
//      #define PTZ_LEFT_CYCLE_C     6.5//0.5   //检测转动完一圈是否到达同一个点的距离阈值
//      #define PTZ_LEFT_ANGLE_WF    1.5     //对磁编码器角度进行滤波的阈值
//
//      #define PTZ_UP_CYCLE_A     5.0     //距离最小满足角度
//      #define PTZ_UP_CYCLE_B     20.0    //距离最大不超过角度
//      #define PTZ_UP_CYCLE_C     6.5//0.5   //检测转动完一圈是否到达同一个点的距离阈值
//      #define PTZ_UP_ANGLE_WF    1.5    //对磁编码器角度进行滤波的阈值
//
//      #define PTZ_DOWN_CYCLE_A     5.0     //距离最小满足角度
//      #define PTZ_DOWN_CYCLE_B     20.0    //距离最大不超过角度
//      #define PTZ_DOWN_CYCLE_C     6.5//0.5   //检测转动完一圈是否到达同一个点的距离阈值
//      #define PTZ_DOWN_ANGLE_WF    1.5     //对磁编码器角度进行滤波的阈值
//
//      #define PTZ_HORI_AS5047D_PTZ_ANGLE_WF  10.0 //排除磁编码角度异常值
//      #define PTZ_VERT_AS5047D_PTZ_ANGLE_WF  10.0//排除磁编码角度异常值
//
//      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
//      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数
//
//      #define PTZ_VERT_AS5047D_ANGLE_WF_A      30.0//云台垂直磁编码总角度滤波
//      #define PTZ_HORI_AS5047D_ANGLE_WF_A      30.0//云台水平磁编码总角度滤波
//
//      #define PTZ_HORI_AS5047D_ANGLE_WF_B      1400.0//云台水平磁编码总角度滤波
      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值



      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值

#endif

#ifdef PTZ_MEDIUM_WORM_L6235D_AS5047D
      
      
      //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE       1//单次获取角度
      
      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      #define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
     //#define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据

      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值


      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值

      
#endif 


#ifdef PTZ_HEAVY_WORM_L6235D_AS5047D
      //磁编码器角度增大，云台角度增大；磁编码器角度减小，云台角度减小
//      //#define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
//      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
//
//      //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
//      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_ASY   2//角度变化异步
//      //#define PTZ_VERT_ANGLE_AS5047D_ANGLE_ASY   2//角度变化异步


                #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
                //#define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

                //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
                //#define PTZ_HORI_ANGLE_AS5047D_ANGLE_ASY   2//角度变化异步
                #define PTZ_VERT_ANGLE_AS5047D_ANGLE_ASY   2//角度变化异步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE      1//单次获取角度
      
      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      #define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
     //#define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据

      

      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值





      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值
#endif



#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_12V
      
      //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE       1//单次获取角度
      
      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      //#define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
      #define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据


      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值



      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值

#endif 


#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V
      
      //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE       1//单次获取角度
      
      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      //#define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
      #define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据

      
      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值



      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值

#endif 




//步进电机
#ifdef PTZ_SUPER_LIGHT_WORM_STEP_DRV8711_AS5047D_12V
      //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE       1//单次获取角度
      
      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      //#define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
      #define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据


//      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//      
//      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_UP_CYCLE_C       (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
//      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数
//
//      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波
//      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
//      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波

      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值



      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值
#endif

//步进电机
#ifdef PTZ_SUPER_LIGHT_WORM_STEP_DRV8711_AS5047D_24V
      //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE       1//单次获取角度
      
      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      //#define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
      #define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据


//      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//      
//      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_UP_CYCLE_C       (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
//      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数
//
//      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波
//      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
//      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波

      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值



      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值
#endif


#ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V
      //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE       1//单次获取角度
      
      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      //#define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
      #define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据


//      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//      
//      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_UP_CYCLE_C       (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
//
//      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
//      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数
//
//      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_motor_speed_actual / PTZ_VERT_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波
//      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
//      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_motor_speed_actual / PTZ_HORI_MOTOR_RATIO * 6 / 1000.0 * PTZ_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波

      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值



      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值
#endif

//中型步进电机
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
     //磁编码器角度增大，云台角度减小；磁编码器角度减小，云台角度增大
      #define PTZ_HORI_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步
      #define PTZ_VERT_ANGLE_AS5047D_ANGLE_SYN   1//角度变化同步

      //#define PTZ_HORI_GET_ANGLE_MANY       1//多次获取角度算平均值
      //#define PTZ_VERT_GET_ANGLE_MANY       1//多次获取角度算平均值
      #define PTZ_HORI_GET_ANGLE_SINGLE       1//单次获取角度
      #define PTZ_VERT_GET_ANGLE_SINGLE       1//单次获取角度
      
      #define PTZ_SW3_LEFT_RISE_UPDATE  1  //打开水平挡片左转上升沿更新水平角度数据
      //#define PTZ_SW1_DOWN_FALL_UPDATE  1  //垂直以SW1下俯下降沿更新垂直角度数据
      #define PTZ_SW1_UP_RISE_UPDATE    1  //垂直以SW1上仰上升沿更新垂直角度数据


      #define PTZ_RIGHT_CYCLE_C    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值
      
      #define PTZ_LEFT_CYCLE_C     (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_UP_CYCLE_C       (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0  //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_DOWN_CYCLE_C     (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0   //检测转动完一圈是否到达同一个点的距离阈值

      #define PTZ_HORI_ANGLE_READ_NUM    4 //角度连续读取次数
      #define PTZ_VERT_ANGLE_READ_NUM    4 //角度连续读取次数

      #define PTZ_VERT_AS5047D_ANGLE_WF_A      (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0)//36.0//云台垂直磁编码总角度滤波

      #define PTZ_HORI_AS5047D_ANGLE_WF_A      (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0)//36.0//云台水平磁编码总角度滤波
      #define PTZ_HORI_AS5047D_ANGLE_WF_B      (g_ptz.hori_as5047d.as5047d_ptz_angle_max - (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0))//云台水平磁编码总角度滤波


      #define PTZ_HORI_ANGLE_DIFF_A    (g_ptz.hori_speed_actual * PTZ_HORI_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_HORI_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_HORI_ANGLE_DIFF_B    (360.0 - PTZ_HORI_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define PTZ_VERT_ANGLE_DIFF_A    (g_ptz.vert_speed_actual * PTZ_VERT_BIG_GEAR_RATIO * 6.0 / 1000.0 * PTZ_VERT_ANGLE_TIME + 5.0) //上次采集角度和此次采集角度之间允许的差值
      #define PTZ_VERT_ANGLE_DIFF_B    (360.0 - PTZ_VERT_ANGLE_DIFF_A) //上次采集角度和此次采集角度之间允许的差值

      #define HORI_MS_SW3_ERROR  25//采用磁开关，实时计算磁开关范围时用的阈值
#endif



void ptz_send_sw_angle_state(char dev);
void init_angle_module();
void ptz_send_angle(char dev,char angle_choice);

#endif