初始化設定
在硬體與 KINGSTAR 子系統建立 EtherCAT 連結時,我們需在連接狀態變為 Op 之前初始化一些設定,OPFlag 代表了連結狀態,其為 false 時,List Box 將被清空:m_MotorList.GetCount 獲取 List Box 中的軸數,然後 for 迴圈重複執行 m_MotorList.DeleteString(0) 以刪除 List Box 中的所有項目。
之後,初始化設定即配置完成,而程式設定運動軌跡、轉換單位、啟用單位轉換,並獲取軸的信息,為展示所有軸,我們將各軸的名稱傳送至 CString 物件 strSlave,接著使用 m_MotorList.AddString 將名稱添加到 List Box,所有軸顯示後,我們使用 m_MotorList.SetCurSel(0) 來選擇第一個軸,並將 OPFlag 設為 true。
if (OPFlag == false)
{
int nSel = m_MotorList.GetCount();
for (int i = 0; i < nSel; i++)
{
m_MotorList.DeleteString(0);
}
for (int i = 0; i < KSMStatus.AxesCount; i++)
{
//Configures the motion settings of an axis.
::SetAxisMotionProfile(i, profileUnitPerSecond, ProfileSettings);
//Sets the conversion ratio of user-defined position unit to the count (pulse) unit used by the axis.
::SetAxisCountsPerUnit(i, Numerator, Denominator, Reverse);
//Enables the axis to use a real-world unit.
::EnableAxisUnitConversion(i, TRUE);
}
for (int i = 0; i < KSMStatus.AxesCount; i++)
{
//Gets the details information of an axis.
::GetAxisByIndex(i, &KSMSlaveStatus[i], &Resolution[i], &InputValue[i], &OutputValue[i]);
}
for (int i = 0; i < KSMStatus.AxesCount; i++)
{
CString strSlave(KSMSlaveStatus[i].Name);
m_MotorList.AddString(strSlave);
}
m_MotorList.SetCurSel(0);
OPFlag = true;
}