如何在程式中偵測Motionnet的通訊狀態?
於Master開卡後,啟動一個輪詢Motionnet Ring狀態的機制,流程圖如右:

各指令說明:
1._mnet_get_ring_error_counter
從API得到一個數值,如果通訊異常時數值會持續上升到最高65535,反之,通訊正常時數值不會增加
格式
I16 狀態=_mnet_get_ring_error_counter(U16 RingNo,U16*ErrCount)
目的
取得環通信錯誤計數器的值
參數
名稱 | 類型 | 說明 : |
鈴聲號 | 16歲以下 | Motionnet環號 |
錯誤計數 | 16 歲以下* | 環網通訊錯誤計數器的值 |
狀態返回
函數名稱 | 說明 : |
ERR_無錯誤 | API成功回傳 |
ERR_Invalid_RingNo | 確保環處於活動狀態 |
各指令說明:
2._mnet_reset_ring_error_counter
主要用於清除Reset error count的值
格式
I16 狀態=_mnet_get_ring_error_counter(U16 RingNo)
目的
重置環形通訊錯誤計數器
參數
名稱 | 類型 | 說明 : |
鈴聲號 | 16歲以下 | Motionnet環號 |
狀態返回
函數名稱 | 說明 : |
ERR_無錯誤 | API成功回傳 |
ERR_Invalid_RingNo | 確保環處於活動狀態 |
各指令說明:
3.__mnet_get_ring_status
取得Ring的狀態,以bit方式呈現
格式
I16 狀態=_mnet_get_ring_error_counter(U16 RingNo,U16* 狀態)
目的
獲取活動環狀態
參數
名稱 | 類型 | 說明 : | |
鈴聲號 | 16歲以下 | Motionnet環號 | |
錯誤計數 | 16 歲以下* | 環狀態 | |
位元 | 意義 | ||
0 | 軸命令為空 | ||
1 | 保留 | ||
2 | 輸入更改 | ||
3 | IO 設備錯誤 | ||
4 | 軸設備錯誤 | ||
5 | 主站設定 | ||
6 | 主站操作錯誤 | ||
7 | 保留 | ||
8 | 輸出數據 | ||
9 | 新軸命令 | ||
一個 | 新軸數據 | ||
乙 | 保留 | ||
碳 | IO週期繁忙 | ||
德 | 軟復位 | ||
埃 | 軸週期繁忙 | ||
弗 | 保留 |
狀態返回
函數名稱 | 說明 : |
ERR_無錯誤 | API成功回傳 |
各指令說明:
4._mnet_get_com_status
可以偵測Ring的狀態以數值方式呈現(狀態比較簡化)
格式
I16 狀態=_mnet_get_com_status(U16 環號)
目的
獲取環通信狀態
參數
名稱 | 類型 | 說明 : |
鈴聲號 | 16歲以下 | Motionnet環號 |
狀態返回
函數名稱 | 說明 : | |
ERR_無錯誤 | 確保環處於活動狀態 | |
通訊狀態 | ||
位元 | 意義 | |
00 | 環斷開 | |
01 | 環連接 | |
02 | 從站錯誤 | |
03 | 環空閒 | |
04 | 環錯誤 | |
05 | CPU存取錯誤 | |
06 | IO 週期錯誤 | |
07 | 數據通訊錯誤 |