#pragma once #include "JAxis.h" #include "CAxis.h" #include "dt.h" #include <vector> #include "CMachineCalibration.h" #include "CManageDB.h" #include "CMath.h" #include "CIO.h" /* * �����࣬�����궨�Ͳ�߹��� * �궨��ͨ��һϵ�в����õ����͵���֮������Ա���ʽ * ע�⣺ѹ�Ͼ�����Ҫ�Ͳ��ʱ������ͬ������������ */ #define BufferNo 6 using namespace ns_db; // ʹ�� __declspec(dllexport) ��������Ϊ�����࣬�����ڶ�̬���ӿ�� class __declspec(dllexport) CForceControl { public: /** * @brief ���캯�� * @param HeadID ͷ���� ID�����ڱ�ʶ��ͬ�������豸 * @param xAxis X �����ָ�룬���ڿ��� X ������˶� * @param yAxis Y �����ָ�룬���ڿ��� Y ������˶� * @param zAxis Z �����ָ�룬���ڿ��� Z ������˶� * @param forceAxis �������ָ�룬���ڿ���������صIJ��� */ CForceControl(int HeadID, /*std::string headName,*/ CAxis* xAxis, CAxis* yAxis, CAxis* zAxis, CIO* forceAxis, CIO* forceScale = nullptr); /** * @brief �������� * �����ͷ����ж�̬�������Դ */ ~CForceControl(); /** * @brief ���ز��Ժ��� * @param current ����ĵ���ֵ * @param force �������ֵ��ͨ�����ô��� * @return ���������LONG ���ͣ�ͨ�� 0 ��ʾ�ɹ����� 0 ��ʾʧ�� * �ú������ݸ����ĵ���ֵ�����ض�Ӧ����ֵ */ LONG ForceTest(double current, double& force); /** * @brief �߶Ȳ��Ժ��� * @param force ����ʱ�������ֵ * @param searchPos ��������ʼλ�� * @param hight ����ĸ߶�ֵ��ͨ�����ô��� * @return ���������LONG ���ͣ�ͨ�� 0 ��ʾ�ɹ����� 0 ��ʾʧ�� * �ú���ֻ���� Z ����и߶Ȳ��ԣ������� XY �ᣬʹ��ǰӦ�ȿ��� XY �ᵽλ */ LONG HightTest(/*double force, */double givenForceZ, double searchPos, double& hight); //Ѱ�� LONG FindForce(double searchForce, double actForce,double givenForceZ); /** * @brief ����߶Ȳ��Ժ��� * @param force ����ʱ�������ֵ * @param hight ����Ķ���߶�ֵ��ͨ�����ô��� * @return ���������LONG ���ͣ�ͨ�� 0 ��ʾ�ɹ����� 0 ��ʾʧ�� */ LONG EjectorHightTest(double givenForceZ, double searchPos, double& hight); /** * @brief ������ֵ�ĺ��� * @param force Ҫ���µ���ֵ * @return ���������LONG ���ͣ�ͨ�� 0 ��ʾ�ɹ����� 0 ��ʾʧ�� * �ú������ڸ�������ϵͳ�е���ֵ */ LONG UpdateForce(double force, double givenForceZ); /** * @brief �ƶ�������λ�õĺ��� * @param pos Ŀ��λ�ã�XY_DOUBLE_STRUCT �ṹ����� X �� Y ���� * @return ���������LONG ���ͣ�ͨ�� 0 ��ʾ�ɹ����� 0 ��ʾʧ�� * �ú���������豸�ƶ���ָ���IJ���λ�ã����ȴ���λ */ LONG ToTestPos(XY_DOUBLE_STRUCT pos); LONG MoveToTestPos(); //�������ر궨 LONG CurrentForceCalib(); //�������ر궨 LONG SpringForceCalib(); /** * @brief ���б궨����ĺ��� * �ú������ݱ궨�����л�ȡ�����ݣ��������͵���֮������Ա���ʽ */ void Calibration(); /** * @brief ��ȡ���ز����ĺ��� * �ú������ڴ����ݿ�������洢λ�û�ȡ������صIJ��� */ LONG GetParam(); /** * @brief ��ֵת��Ϊ����ֵ�ĺ��� * @param force �������ֵ * @return ת����ĵ���ֵ * �ú������ݱ궨�õ������Ա���ʽ������ֵת��Ϊ��Ӧ�ĵ���ֵ */ double ChangeForceToCurrent(double force, double givenForceZ); /** * @brief ����ֵת��Ϊ��ֵ�ĺ��� * @param current ����ĵ���ֵ * @return ת�������ֵ * �ú������ݱ궨�õ������Ա���ʽ��������ֵת��Ϊ��Ӧ����ֵ */ double ChangeCurrentToForce(double current, double givenForceZ); //����������ת�����ص������ᷴ��λ�� double ChangeForceToForcerZPos(); void Stop() { m_bStop = true; } std::string GetLineExpression(); //void SetAI(CIO* AI) { // m_pForceScale = AI; //} private: CAxis* m_pAxisX = nullptr; // X �����ָ�룬���ڿ��� X ������˶� CAxis* m_pAxisY = nullptr; // Y �����ָ�룬���ڿ��� Y ������˶� CAxis* m_pAxisZ = nullptr; // Z �����ָ�룬���ڿ��� Z ������˶� //CAxis* m_pAxisForce = nullptr; // �������ָ�룬���ڿ���������صIJ��� CIO* m_pForcerAO = nullptr; CIO* m_pForceScale = nullptr; CMachineCalibration* m_pMcCalibDB = nullptr; // �����궨���ݿ����ָ�룬���ڴ洢�ͻ�ȡ�궨���� FORCE_CONTROL m_stParam; // ���ز����ṹ�壬�洢����ϵͳ����ز��� // ������ݣ���ͬ�IJ�ߣ�ֻ������λ�ú��������벻ͬ�����Ĵ�Сͨ������ int m_nHeadId = 0; // ͷ���� ID�����ڱ�ʶ��ͬ�������豸 std::string m_sHeadName = ""; int m_nForcerBufferNO = 0; int m_nSpringForcerBufferNO = 0; string m_sParamName = ""; bool m_bStop = false; };