123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #pragma once
- #include "dt.h"
- #include <iostream>
- #include "CMath.h"
- #include "JAxis.h"
- #include "CForceControl.h"
- #include "CMachineCalibration.h"
- /*
- 1、水平度校准:测高三个点,三点确定一个平面,求平面法向量,根据法向量求出角度
- 注意:该水平度校准结果以绑头坐标系为基准坐标系。
- 如:X轴若为负数,则正方向向上翘,若为正,则负方向向上翘
- */
- class __declspec(dllexport) CHorizMeasure
- {
- public:
- /**
- * @brief 构造函数,用于创建 CHorizMeasure 对象
- *
- * @param id 表格的唯一标识符,用于区分不同的校准表格
- * @param forceControl 指向 CForceControl 对象的指针,用于控制和获取力相关的数据
- */
- CHorizMeasure(int id, CForceControl* forceControl);
- /**
- * @brief 析构函数,用于销毁 CHorizMeasure 对象,释放相关资源
- */
- ~CHorizMeasure();
- // /**
- // * @brief 高度测试函数,测量当前位置的高度
- // *
- // * @param hight 用于存储测量得到的高度值
- // * @return LONG 操作结果,成功返回 OK,失败返回相应的错误码
- // */
- // LONG HightTest(double& hight);
- /**
- * @brief 开始水平度校准操作
- *
- * 该函数会控制设备移动到三个预设的测试位置,进行高度测试,
- * 根据三个测试点的坐标和高度确定一个平面,计算该平面的法向量,
- * 进而求出该平面相对于绑头坐标系在 X 轴和 Y 轴方向的倾斜角度
- *
- * @return LONG 校准操作的结果,成功返回 OK,失败返回相应的错误码
- */
- LONG StartCalib();
- /**
- * @brief 从数据库中获取水平度校准所需的参数
- *
- * 这些参数包括测试点的坐标、搜索高度等,会存储在 m_stParam 成员变量中
- */
- void GetParam();
- /**
- * @brief 将校准结果参数设置到数据库中
- *
- * 目前函数体为空,后续可实现将校准得到的 X 轴和 Y 轴倾斜角度等参数保存到数据库的逻辑
- */
- void SetParam();
- /**
- * @brief 获取水平度校准后 X 轴方向的倾斜角度结果
- *
- * @return double X 轴方向的倾斜角度,以绑头坐标系为基准
- */
- double GetAngleXResult() { return m_stParam.dAngleX; }
- /**
- * @brief 获取水平度校准后 Y 轴方向的倾斜角度结果
- *
- * @return double Y 轴方向的倾斜角度,以绑头坐标系为基准
- */
- double GetAngleYResult() { return m_stParam.dAngleY; }
- void Stop() { m_bStop = true; }
- void GetAngleResult(double& angleX, double& angleY)
- {
- angleX = m_stParam.dAngleX;
- angleY = m_stParam.dAngleY;
- }
- private:
- CForceControl* m_pForceControl = nullptr; // 指向力控制对象的指针,用于控制和获取力相关的数据
- CMachineCalibration* m_pMcCalibDB = nullptr; // 指向机器校准数据库对象的指针,用于参数的读取和存储
- HORIZ_MEASURE m_stParam; // 存储水平度校准所需的参数和校准结果
- int m_nTableID = 0; // 表格的唯一标识符
- bool m_bStop = false;
- // 以下成员变量已合并到 m_stParam 中,不再单独使用
- // double m_dTestPosX1 = 0;
- // double m_dTestPosY1 = 0;
- // double m_dTestPosX2 = 0;
- // double m_dTestPosY2 = 0;
- // double m_dTestPosX3 = 0;
- // double m_dTestPosY3 = 0;
- // double m_dSearchPosZ = 0;
- // double m_dAngleX = 0; // 校准后的结果,X 方向的倾斜角度
- // double m_dAngleY = 0; // 校准后的结果,Y 方向的倾斜角度
- private:
- /**
- * @brief 辅助函数,用于移动到指定位置并进行高度测试
- *
- * @param pos 要移动到的测试位置的二维坐标
- * @param searchPosZ 搜索高度,用于高度测试的参数
- * @param outZ 用于存储测量得到的实际高度值
- * @return LONG 操作结果,成功返回 OK,失败返回相应的错误码
- */
- LONG MoveAndTest(const XY_DOUBLE_STRUCT& pos, double searchPosZ, double& outZ);
- };
|