資料映射
資料映射指,將外部資料對應於仿真路徑,使得仿真步(仿真步輸出資訊(Simulation Step Output))可以索引外部資料。
外部資料包含智慧刀把、動力計,可依時間線性映射至指定刀具路徑及加工區域。
映射資料可用於檢視加工狀態、訓練銑削係數、校正銑削係數。
資料映射的形式
依據資料大小、應用情境不同,資料映射有多種形式。 以資料量區分,仿真步對應外部資料可以一對一與一對多。
一對一映射
一對一映射指每個仿真步對應一個外部資料點,資料量與仿真步數量相同或相近。
一對一的資料映射方式:
- 執行CSV檔:適用控制器資料,每個步階對應一個CSV資料行
- MapSingleByCsvFile:使用時間插值將CSV資料映射到加工步階
PlayCsvFile
執行CSV檔 可以與一對多的資料映射協同使用,詳見 執行CSV檔。
MapSingleByCsvFile
MapSingleByCsvFile(API) 讀取CSV檔案並使用時間插值將資料映射到加工步階。每個仿真步對應一個外部資料點(透過時間插值計算)。
Note
指令格式
MapSingleByCsvFile(<CSV檔案路徑>);
Tip
指令範例
// 讀取CSV檔案並映射到步階
PlayNcFile("NC/file1.nc");
MapSingleByCsvFile("Data/sensor.csv");
Note
此方法使用時間插值方式將CSV資料映射到加工步階,適用於需要將外部感測器資料對應到仿真步階的場景。每個仿真步會對應一個透過時間插值計算的外部資料點。
一對多映射
一對多映射指每個仿真步對應多個外部資料點,外部資料量遠大於仿真步數量(通常數十倍以上)。
一對多的形式適用智慧刀把、加速規、測力計等高採樣率資料。
一對多的資料映射可以直接對應真實加工時間全局映射,也可以對指定數控路徑及時間局部映射。
對應真實加工時間全局映射
可使用執行CSV檔或MapSingleByCsvFile作為前置,以獲取真實加工時間,csv檔案中須包含ActualTime欄位(ActualTime(API))。然後使用MapSeriesByCsvFile(API)映射外部資料。
此方法為一對多映射,每個仿真步會對應多個外部資料點。
Note
指令格式
MapSeriesByCsvFile(<檔案名>);
指定數控路徑及時間局部映射
資料映射需設定:指定輸入資料、指定NC路徑。
此方法為一對多映射,每個仿真步會對應多個外部資料點。
指定輸入資料
Note
指令格式
AddTimeDataByFile(<映射名>, <輸入檔案路徑>, <映射起點時間>, <映射終點時間>);
<映射名>為自訂之標記名稱,對應於指定NC路徑中的映射名。
時間資料格式為<時>:<分>:<秒>.<小數點後秒>;其餘資料格式為實數。
注意映射資料不會因撥放器重置而被清空。可以使用ClearTimeMappingData指令清空。
Note
指令格式
ClearTimeMappingData();
Tip
指令範例
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");
PlayNcFile("NC/file1.nc")
指定NC路徑
Note
指令格式
//範圍(多行)資料映射
BeginSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>);
EndSelection(<映射名>, <終點映射錨點旗標>, <終點偏置物件>);
//單行資料映射
LineSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>, <終點映射錨點旗標>, <終點偏置物件>);
<映射名>為自訂之標記名稱,對應於指定輸入資料中的映射名。
- 可以使用
BeginSelection與EndSelection作範圍(多行)資料映射:BeginSelection設置映射起點。EndSelection設置映射終點。
- 或是使用
LineSelection作單行資料映射。
<映射錨點旗標>可以使用:
LineBegin以該行運動起點為映射錨點。LineEnd以該行運動終點為映射錨點。FirstTouch以該行第一次接觸工件的位置為映射錨點。LastTouch以該行最後接觸工件的位置為映射錨點。
<偏置物件>是相對於錨點的偏移,可以使用:
null無偏移。ShiftTime_s單位秒。正值為往後時間;負值為往前時間。ShiftDistance_mm單位mm。正值為往後位移;負值為往前位移。
指定NC路徑命令需在NC碼註解中執行,前置;@符號。
Tip
NC檔案範例
...
G00 G90 X-6. Y10.
G17 G01 Z-1. F600.
S50 M03
X13. F20 ;@LineSelection("lineA", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1));
X25. F10 ;@LineSelection("lineB", FirstTouch, null, LastTouch, null);
...
Tip
NC檔案範例2
如果控制器不支援;符號作為註解,如FANUC控制器,則需將其引入註解範圍內。
...
G00 G90 X-6. Y10.
G17 G01 Z-1. F600.
S50 M03
X13. F20 (;@LineSelection("lineA", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1));)
X25. F10 (;@LineSelection("lineB", FirstTouch, null, LastTouch, null);)
...
選區結束映射設定
EnableMapOnSelectionEnd(API) 設定是否在選擇結束時連帶執行映射。
Note
指令格式
EnableMapOnSelectionEnd = true; // 或 false
Tip
指令範例
// 啟用選區結束映射
EnableMapOnSelectionEnd = true;
BeginSelection("region1");
// ... NC 代碼 ...
EndSelection("region1"); // 連帶執行映射
// 停用選區結束映射
EnableMapOnSelectionEnd = false;
BeginSelection("region2");
// ... NC 代碼 ...
EndSelection("region2"); // 不連帶執行映射
Map("region2"); // 手動執行映射
Note
預設值為 true。當設為 true 時,EndSelection 會連帶執行對應的 Map 操作。
範例專案
感測器資料檔案格式
輸入檔案格式為csv,須包含時間資訊,其餘資訊可選擇包含或不包含。
csv檔案需有標題列,欄位標題需用特定指示詞標示。 部分欄位指示詞為方便性是多擇一。
- 時間:
ActualTime
- 動力計:
- X方向力:
FxWorkpiece.Fx
- Y方向力:
FyWorkpiece.Fy
- Z方向力:
FzWorkpiece.Fz
- X方向力:
- 智慧刀把:
- X方向力矩:
MxHolder.Mx
- Y方向力矩:
MyHolder.My
- Z方向力矩:
MzHolder.Mz
- X方向力矩:
- 加速規(可選):
AxAyAz
欄位可以包含其他外部資訊,如下例之CH1、CH2。
Tip
檔案範例
ActualTime,CH1,CH2,Mx,My,Mz
18:23:54.703,-0.00398,-0.00034,-0.02923,0.10733,0.00409
18:23:54.704,-0.00194,0.00285,0.04155,-0.04457,0.00448
...
串接控制器資料及感測器資料至數控路徑
因為機台加減速,模擬加工時間與實際加工時間會累積誤差,時間拉長了對不上。所以在資料映射時透過錨點做線性投影。
- 模擬步資料及控制器資料皆含檔案號行號,故可依此設定兩者相應錨點
- 控制器資料及感測器資料皆含實際時間,故可依此設定兩者相應錨點
串接後可使模擬步索引感測器資料。

如示意圖:
- L =
FileNo,LineNo錨點 - t =
ActualTime錨點
Note
為何使用兩層映射?
雖然可以直接使用 執行CSV檔 執行模擬,但控制器的採樣頻率有限,直接播放會導致模擬路徑失真。
透過系統解譯器解譯數控路徑(執行NC檔),再將控制器資料與感測器資料映射至模擬步,可獲得較精確的模擬路徑。
操作流程
依序使用兩指令串聯控制器資料及感測器資料至虛擬環境:
先使用 MapSingleByCsvFile 將控制器資料映射至模擬數控路徑
- 控制器資料至少包含
FileNo、LineNo、ActualTime - 該指令會依
FileNo及LineNo將ActualTime及其他控制器資料插補至模擬步中
- 控制器資料至少包含
而後使用 MapSeriesByCsvFile(API) 將感測器資料映射至模擬數控路徑
- 感測器資料至少包含
ActualTime - 該指令會依
ActualTime將其他感測器資料插補至模擬步中
- 感測器資料至少包含
Tip
指令範例
// 1. 使用系統解譯器解譯數控路徑(獲得精確的模擬路徑)
PlayNcFile("NC/machining.nc");
// 2. 映射控制器資料(含FileNo, LineNo, ActualTime)
MapSingleByCsvFile("Data/controller.csv");
// 3. 映射感測器資料(含ActualTime及感測器數據)
MapSeriesByCsvFile("Data/sensor.csv");
