讀取FANUC機床的倍率信息需要用到 FOCAS鏈接庫。
根據FANUC的連接手冊可以知道,進給倍率信號存在 Gn012寄存器中。在機床上更改倍率開關,發現G0012寄存器值變化,經驗證G0012就是要讀取的寄存器。
查閱FOCAS函數說明,使用 pmc_rdpmcrng 函數進行讀取。
輸入
(1)庫句柄;(獲取的句柄)
(2)PMC地址類型的ID code; (0)
- 0i-D參考范圍
ID code |
PMC地址類型 |
參考范圍 |
(PMC類型) |
0 |
G (Signal to PMC->CNC) |
0-767 |
PMC |
0-767 |
PMC/L |
||
1 |
F (Signal to CNC->PMC) |
0-767 |
PMC |
0-767 |
PMC/L |
||
2 |
Y (Signal to PMC->machine) |
0-127 |
PMC |
0-127 |
PMC/L |
||
3 |
X (Signal to machine->PMC) |
0-127 |
PMC |
0-127 |
PMC/L |
||
4 |
A (Message) |
0-249 |
PMC |
0-249 |
PMC/L |
||
A (Message) |
9000-9249 |
PMC |
|
9000-9249 |
PMC/L |
||
5 |
R (Internal relay) |
0-7999 |
PMC |
0-1499 |
PMC/L |
||
6 |
T (Timer) |
0-449 |
PMC |
0-79 |
PMC/L |
||
T (Timer) |
9000-9499 |
PMC |
|
9000-9079 |
PMC/L |
||
7 |
K (Keep relay) |
0-99 |
PMC |
0-19 |
PMC/L |
||
8 |
C (Counter) |
0-399 |
PMC |
0-79 |
PMC/L |
||
9 |
D (Data table) |
0-9999 |
PMC |
0-2999 |
PMC/L |
||
12 |
E (Extended relay) |
0-9999 |
PMC |
0-9999 |
PMC/L |
(3)數據類型;(ushort)
(4)PMC地址起始號;(12)
(5)PMC地址結束號;(13)
(6)設定數據長度。(16)
type_d數據類型是0(字節型) |
: |
長度 = 8 + N |
type_d數據類型是1(字型) |
: |
長度= 8 + N × 2 |
type_d數據類型是2(長字型) |
: |
長度= 8 + N × 4 |
* N是數據寫入的個數(如將一個數寫進R1000到R1001,那么此時N=2)。
輸出
輸出類IODBPMC0、IODBPMC1、IODBPMC2三者中的一個。
類的定義如下所示,其中
type_a表示PMC地址類型的ID code;
type_d表示PMC數據類型;
datano_s表示PMC地址起始號;
datano_e表示PMC地址結束號;
經測試可以讀取寄存器G0012的值,讀取到的數值與實際倍率存在如下關系 255-G0012=實際倍率。
可能於數據存儲的高低位順序有關,我沒有再繼續深入研究這個問題。