EC機器人MODBUS_RTU
1. 簡介
ModBus是一種串行通信協議,一種標準的工業通信協議,同時是目前工業電子設備之間常用的連接方式。
艾利特機器人分別支持ModBus主、從站功能,從通訊的形式上分為MoBus TCP和ModBus RTU,其中ModBus從站功能通過配置即可。
通過ModBus主站功能,機器人可以向外部設備讀取寫入數據,已達到數據交互和邏輯控制的用途。
艾利特機器人的ModBus主站同時也支持ModBus RTU 和 ModBus TCP,其中ModBus TCP功能需要連接以太網接口,而ModBus RTU的硬件接口形式分為控制器485口,工具末端485口。
ModBus主站功能通過lua腳本實現,可以參考EC-lua手冊進行使用。其中MODBUS MASTER為已經封裝的接口,用戶只需傳入相應參數即可;如有其他特殊協議要求,可以使用TCP/UDP通訊、485通訊、TCI通訊(工具末端485)和232通訊等。
2.接線方法
在控制柜接口處我們可以看到RS485接口,該接口就是我們的485接口,modbus_rtu時用到該接口,其中針腳3對應485-,針腳4對應485+,如下圖。


詳細接線方法參考以下流程:
1、焊接對應針腳

2、將針腳之間用絕緣膠帶或者熱縮管進行隔離開,防止粘連。

3、 插回控制柜。

3.modbus_rtu主站使用方法
3-1.指令介紹
ModBus Master接口常用獲取modbus、連接modbus、關閉modbus、設置slave、讀取單個線圈、寫入單個/多個線圈、讀取單個寄存器、寫入單個寄存器等指令,本文主要講解以上指令,具體指令詳解如下圖所示,其他指令也可參考EC-lua手冊ModBus Master章節




以下為讀取寫入相關指令
modbus_read_bits 讀取線圈指令,功能碼01
modbus_write_bit 寫單個線圈指令,功能碼05
modbus_write_bits 寫多個線圈指令,功能碼15
modbus_read_register 讀單個寄存器數值。功能碼03
modbus_write_register 寫單個寄存區數值,功能碼06
3-2.操作流程
本文以機器人作為主站與網絡助手進行ModBus_RTU通訊為示例,進行詳細操作講解
3-2-1.機器人端配置
將機器人端485線接好,目前設置波特率為115200,將機器人腳本配置好,如下圖所示

3-2-2.助手配置連接

3-2-3.連接成功提示

3-2-4.讀取線圈

讀取600開始的5個線圈,分別將線圈數值存入虛擬輸入M920-M924中

助手中將線圈600、602、604分別置為1

示教器中查看對應的M920、M922、M924分別狀態為1
讀取線圈功能及指令正常
3-2-5.寫入線圈
寫入線圈指令及定義如下腳本所示

寫入單個和多個線圈指令,定義將M530數值寫入到線圈530,M531-M534數值分別寫入線圈531-534中

機器人端將虛擬輸出M530、M531、M533、M534置為1

助手中可以查看到線圈530、531、533、534狀態都為1
寫入線圈功能及指令正常
3-2-6.讀取寄存器
讀取寄存器指令及定義如下腳本所示

讀取400開始的5個寄存器,分別將寄存器數值存入全局變量I000-I004中

助手端將400寄存器設置為123,401寄存器設置為23,402寄存器設置為-345,403寄存器設置為-876,404寄存器設置為2345

機器人端可在全局變量中查看I000-I004與寄存器400-404數值一致
讀取寄存器功能及指令正常
3-2-7.寫入寄存器
寫入寄存器指令及定義如下腳本所示

機器人端I010-I014的5個全局變量,分別將數值寫入到寄存器500-504中

機器人端分別將I010-I014全局變量設置為:236,-659,589,489,-3528

助手端可查看500-504的寄存器數值,同時與全局變量I010-I014數值一致
寫入寄存器功能及指令正常
4. modbus_rtu從站使用方法
4-1.modbus_rtu從站介紹
艾利特機器人支持ModBus TCP從站以及ModBus RTU從站,均可通過示教器界面直接進行配置。
目前Elite機器人支持對虛擬變量M的操作,M為BIT型變量。單個M變量為線圈,多個連續的M變量可為寄存器 。
其中M變量支持的功能碼如下圖:

ModBus RTU物理層接口為串口形式。
艾利特控制器 485 端口為特殊的接插件,針腳定義為:2 為 GND,4 為 485+,3 為 485-,連接參數上需要設置從站號、波特率、數據位長度、校驗方式和停止位長度,以上參數可通過示教器界面進行配置??赏ㄟ^示教器擴展-Modbus從站中進行配置選擇,如下圖所示

4-2.使用技巧
1. M0-M527,M1472-M1535為系統使用,只能讀取狀態,通過示教器可
輸入的 M 變量范圍為 528-799。
2. M 變量的線圈地址即為變量的序號地址。
3. 兼容模式中勾選ModBus:M 變量的寄存器地址從M0 開始,每連續 的16個 M 變量形成一個寄存器地址,例如M0-M15,寄存器地址為 0x0000;M16-M31,寄存器地址為0x0001,以此類推; 兼容模式中不勾選ModBus:M 變量的寄存器地址從M0 開始,每連 續的 8個 M 變量形成一個寄存器地址,例如M0-M7,寄存器地址為0x0000;M8-M15,寄存器地址為 0x0001,以此類推。
4. ModBus 協議中一個寄存器為 16 位變量,因此對 M 變量的一個寄存
器地址進行操作,實際操作的是連續的 16 個 M 變量。
5.在數據多為小數時,為方便數據的處理,可以將數據進行整體擴大一定倍數后進行傳輸
4-3.操作流程
本文以機器人作為從站與網絡助手進行ModBus RTU通訊為示例,進行詳細操作講解
4-3-1.助手配置、通訊
將機器人端485線接好,目前波特率為115200,助手端連接對應設置參數即可,如下圖所示

連接成功后,如下圖所示

4-3-2.虛擬M變量讀寫
通訊成功后進行M變量的讀寫,無需其他設置,可直接通過對應線圈地址讀取寫入
示例1:機器人M變量寫入,助手線圈讀取
定義機器人虛擬輸出M528及M534寫入為1

網絡助手端直接讀取528及534當前狀態為1

示例2:機器人M變量讀取,助手線圈寫入
定義網絡助手端線圈912-917寫入為1

機器人端虛擬輸入M912-M917此時狀態都為1

4-3-3.寄存器讀寫
1.機器人作為從站可通過腳本直接讀取寫入寄存器數值,可將數值轉化為全局變量,在示教器上進行顯示或者調用
2.腳本指令分為兩種,第1種是對應獲取接口0-191,設置接口66-191,此接口可控制虛擬輸入輸出M變量,如下圖所示


3.第2種讀取額外接口192-575,設置接口300-477,具體寄存器地址可參考通訊手冊


4.第1種指令和第2種指令,建議用戶使用第2種指令更方便快捷,第1種指令可直接控制M變量,艾利特modbus寄存器分為8位和16位,需要在兼容模式下更改,否則容易將機器人寄存器地址和網絡助手地址混淆。第2種指令本身設置就是16位寄存器,無需考慮兼容模式下的更改情況
5.下面以第2種寄存器為示例腳本進行數據的讀寫
機器人讀取寄存器300-304寄存器數值同時存入到I0-I4寄存器中,腳本如下

通過助手向寄存器300-304賦值,可通過示教器查看I0-I4數值,確實數值是否正確,如下圖所示


6.機器人通過全局變量I10-I14,將數據寫入寄存器320-324,腳本如下所示

通過機器人向I10-I14全局變量賦值,可將數值存入到320-324寄存器中,網絡助手可直接在此寄存器直接讀取,如下圖所示


5. 常見問題解答
5-1.問:通訊收發數值不正確或者連接不上
答:檢查一下485接頭是否接好,焊接地方有沒有粘連,使用環境是否存在電磁干擾?;蛘甙?85線纜調換一下。
5-2.問:寄存器能否支持帶小數點位數值
答:modbus協議寄存器都是整數類型的,需要進行帶小數點的數據傳輸可以先將數值乘以一個倍數,傳輸后再進行整除。
6.附錄
modbus_slave.lua
modbus_master.lua