介紹一款CNC運動控制卡給喜歡自已寫控制程式的人參考
通常我不在社團內介紹商品以免有廣告之嫌, 不過這個運動卡我用過好幾個專案, 可控制自由度高, 一年了也沒出問題, 所以決定分享給社團好友參考.
如圖所示 IMC3xx2E 運動卡簡介: 我用的的是八軸及六軸聯動運動卡, 介面是採用RJ45網路線傳輸控制碼到機台, 以八軸卡來說內有80個輸入/ 48個輸出, 足夠一般機器使用, 在PC也是用ethernet 與運動卡通訊, 好處是防雜訊比USB好很多, 而且網路線可拉很長很長, 只要你網路可通的話!
我的重點是廠商有提共完整的API函數庫(VB, VC++, VC#, QT)讓你控制CNC所有功能, 包括網卡搜尋, 八軸運動, I/O狀態, 圓弧直線插補, 族繁不及備載, 該有的應該都有了, 端看你要如何應用, 我打算用跑Linux 的ARM板做脫機, 我這裡有一些相關pdf資料, 如果有興趣的人可mail我.
程式控制很簡單, 以C#為例:
(1)專案加入IMC_PKG.cs
(2)程式前面加上 using imcpkg;
//---------------------------------------------------------------------
//單軸連續移動(continue)
private void MachineMove(int axis, bool bDirection)
{
double acc = 10;
double startvel = 100;
double tgvel = 100;
IMC_Pkg.PKG_IMC_SetAccel(Global.gHandle,
acc, acc, axis);
if(bDirection)
IMC_Pkg.PKG_IMC_MoveVel(Global.gHandle,
startvel, tgvel, axis);
else
IMC_Pkg.PKG_IMC_MoveVel(Global.gHandle,
-startvel, -tgvel, axis);
}
//---------------------------------------------------------------------
//單軸移動至指定位置(step)
private void MachineMove(float pos, int axis)
{
double acc = 10;
double startvel = 100;
double tgvel = 100;
int pulse_per_mm = 5120; //steps_per=pulse/mm
int dist = (int)(pos * pulse_per_mm);
IMC_Pkg.PKG_IMC_SetAccel(Global.gHandle,
acc, acc, axis);
IMC_Pkg.PKG_IMC_MoveDist(Global.gHandle,
dist, startvel, tgvel, 0, axis);
}
//---------------------------------------------------------------------
David Chuang
2019-05-10 16:58:12
Allen Chang
2019-05-10 16:58:29
宜震陳
2019-05-10 17:00:32
蔣益民
2019-05-10 17:17:22
石小川
2019-05-10 17:28:31
ok! 已分享乙太網運動卡兩個檔案至社團檔案區, 有需要的可參考看, 軟硬體有問題可互相討論!
Don Si
2019-05-10 17:41:53
黃小法
2019-05-10 18:01:49
不好意思,小弟愚拙,這個該怎麼應用到CNC上??介面要自己搞??
Cheng Chris
2019-05-10 18:49:02
辛育全
2019-05-10 19:33:52
盧人菖
2019-05-10 22:02:48
林錫義
2019-05-10 22:54:33
陳竑吾
2019-05-11 01:07:41
吳忠哲
2019-05-11 11:17:22
用這個來做CNC的話,可以享受自己搞一個Mach3的樂趣是嗎?