工作流程:感測器資料映射¶
本工作流程說明如何將外部感測器資料(動力計、智慧刀把、加速規)映射至仿真刀具路徑,使仿真步能索引到實際量測資料。
flowchart TD
Prepare["準備感測器 CSV 資料"]
Configure["設定時間映射"]
Simulate["執行仿真"]
Map["將資料映射至仿真步"]
View["檢視映射結果"]
Prepare --> Configure --> Simulate --> Map --> View
概覽¶
資料映射將外部感測器量測與仿真加工步建立關聯。映射後,每個步皆可參照真實的力、力矩、加速度資料,用於:
- 檢視加工狀態
- 訓練銑削係數(見 銑削力參數訓練)
- 校正銑削係數
- 比較仿真與量測力
依資料量與用途,映射可分為 一對一(每步映射至一筆資料)或 一對多(每步映射至多筆來自高取樣率感測器的資料)。
1. 準備感測器 CSV 資料¶
感測器資料格式¶
CSV 檔須有一行標頭,包含 ActualTime 與感測器通道:
| 來源 | 標頭 | 別名 |
|---|---|---|
| 動力計 | Fx、Fy、Fz |
Workpiece.Fx、Workpiece.Fy、Workpiece.Fz |
| 智慧刀把 | Mx、My、Mz |
Holder.Mx、Holder.My、Holder.Mz |
| 加速規 | Ax、Ay、Az |
— |
時間格式為 <時>:<分>:<秒>.<毫秒>。可包含其他欄位(如 CH1、CH2),這些欄位映射後也會可用。
控制器資料格式(兩層映射)¶
控制器 CSV 至少需含 FileNo、LineNo、ActualTime:
2. 設定時間映射¶
策略 A:一對一映射(MapSingleByCsvFile)¶
MapSingleByCsvFile 讀取 CSV 並使用時間插值將每筆資料映射至一個仿真步。
策略 B:以 PlayCsvFile 一對一映射¶
PlayCsvFile 可直接由 CSV 驅動仿真,每行成為一個步。CSV 中的自訂欄位映射後即可在每步上存取。
策略 C:一對多全域映射(MapSeriesByCsvFile)¶
對高取樣率資料,先以一對一映射建立 ActualTime,再映射時間序列:
PlayNcFile("NC/file1.nc");
MapSingleByCsvFile("Data/controller.csv"); // 建立 ActualTime
MapSeriesByCsvFile("Data/sensor.csv"); // 映射高取樣率資料
策略 D:一對多局部映射(以錨點為基準)¶
使用錨點將感測器資料映射至特定 NC 路徑段。
步驟 1 — 指定輸入資料與時間範圍:
ClearTimeMappingData();
AddTimeDataByFile("lineA", "Mapping/sensor1.csv", "18:25:51.7100", "18:26:12.9910");
AddTimeDataByFile("lineB", "Mapping/sensor1.csv", "18:26:30.5750", "18:27:12.2880");
步驟 2 — 指定 NC 路徑錨點(嵌入 NC 碼):
X13. F20 ;@LineSelection("lineA", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1));
X25. F10 ;@LineSelection("lineB", FirstTouch, null, LastTouch, null);
跨多個 NC 行的範圍映射使用 BeginSelection / EndSelection:
錨點旗標:
| 旗標 | 說明 |
|---|---|
LineBegin |
該行的運動起始點 |
LineEnd |
該行的運動結束點 |
FirstTouch |
第一個接觸工件的點 |
LastTouch |
最後一個接觸工件的點 |
偏移選項:
| 偏移 | 說明 |
|---|---|
null |
無偏移 |
ShiftTime_s(<秒>) |
時間偏移(正值為向後) |
ShiftDistance_mm(<毫米>) |
距離偏移(正值為向後) |
Note
對於不支援 ; 作為註解字元的 FANUC 控制器,將腳本命令包在註解區塊中:
選擇結束時自動映射¶
EnableMapOnSelectionEnd 控制選擇結束時是否自動映射(預設:true):
清除映射資料¶
映射資料會跨播放器重置而保留。要清除:
3. 執行仿真¶
為何要解譯 NC 而非直接播放 CSV?
系統 NC 解譯器產生的仿真路徑比直接控制器 CSV 回放更準確;後者取樣解析度有限,會扭曲刀具路徑。
4. 映射資料¶
仿真後,套用步驟 2 選定的映射策略。兩層串聯方式:
// 第一層:控制器資料 → 仿真步(透過 FileNo/LineNo → ActualTime)
MapSingleByCsvFile("Data/controller.csv");
// 第二層:感測器資料 → 仿真步(透過 ActualTime → 感測器讀值)
MapSeriesByCsvFile("Data/sensor.csv");
串聯之所以可行:
- 仿真步與控制器資料共享
FileNo/LineNo錨點 - 控制器資料與感測器資料共享
ActualTime錨點 - 串聯後,仿真步即可索引感測器資料
Tip
由於工具機加減速行為,仿真時間與實際時間在較長時段會發散。以錨點為基準的線性投影可修正此漂移。
5. 檢視映射結果¶
映射後,感測器資料便附在每個步上。可由 UI:
- 在工件幾何上檢視顏色梯度圖
- 檢視時間序列圖
- 點擊追蹤特定資料通道
匯出映射結果:
完整兩層映射範例¶
// 配置解析度
MachiningResolution_mm = 0.125;
EnablePhysics = true;
// 清除既有映射資料
ClearTimeMappingData();
// 用 NC 解譯器產生準確路徑的仿真
PlayNcFile("NC/machining.nc");
// 映射控制器資料(含 FileNo、LineNo、ActualTime)
MapSingleByCsvFile("Data/controller.csv");
// 映射高取樣率感測器資料(含 ActualTime 與力/力矩)
MapSeriesByCsvFile("Data/sensor.csv");
// 匯出結果
WriteStepFiles("Output/[NcName].step.csv");