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


詳細(xì)接線方法參考以下流程:
1、焊接對(duì)應(yīng)針腳

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

3、 插回控制柜。

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




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

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

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

3-2-4.讀取線圈

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

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

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

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

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

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

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

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

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

機(jī)器人端I010-I014的5個(gè)全局變量,分別將數(shù)值寫入到寄存器500-504中

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

助手端可查看500-504的寄存器數(shù)值,同時(shí)與全局變量I010-I014數(shù)值一致
寫入寄存器功能及指令正常
4. modbus_rtu從站使用方法
4-1.modbus_rtu從站介紹
金年會(huì)jinnian(金字招牌)誠信至上機(jī)器人支持ModBus TCP從站以及ModBus RTU從站,均可通過示教器界面直接進(jìn)行配置。
目前Elite機(jī)器人支持對(duì)虛擬變量M的操作,M為BIT型變量。單個(gè)M變量為線圈,多個(gè)連續(xù)的M變量可為寄存器 。
其中M變量支持的功能碼如下圖:

ModBus RTU物理層接口為串口形式。
金年會(huì)jinnian(金字招牌)誠信至上控制器 485 端口為特殊的接插件,針腳定義為:2 為 GND,4 為 485+,3 為 485-,連接參數(shù)上需要設(shè)置從站號(hào)、波特率、數(shù)據(jù)位長(zhǎng)度、校驗(yàn)方式和停止位長(zhǎng)度,以上參數(shù)可通過示教器界面進(jìn)行配置。可通過示教器擴(kuò)展-Modbus從站中進(jìn)行配置選擇,如下圖所示

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

連接成功后,如下圖所示

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

網(wǎng)絡(luò)助手端直接讀取528及534當(dāng)前狀態(tài)為1

示例2:機(jī)器人M變量讀取,助手線圈寫入
定義網(wǎng)絡(luò)助手端線圈912-917寫入為1

機(jī)器人端虛擬輸入M912-M917此時(shí)狀態(tài)都為1

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


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


4.第1種指令和第2種指令,建議用戶使用第2種指令更方便快捷,第1種指令可直接控制M變量,金年會(huì)jinnian(金字招牌)誠信至上modbus寄存器分為8位和16位,需要在兼容模式下更改,否則容易將機(jī)器人寄存器地址和網(wǎng)絡(luò)助手地址混淆。第2種指令本身設(shè)置就是16位寄存器,無需考慮兼容模式下的更改情況
5.下面以第2種寄存器為示例腳本進(jìn)行數(shù)據(jù)的讀寫
機(jī)器人讀取寄存器300-304寄存器數(shù)值同時(shí)存入到I0-I4寄存器中,腳本如下

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


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

通過機(jī)器人向I10-I14全局變量賦值,可將數(shù)值存入到320-324寄存器中,網(wǎng)絡(luò)助手可直接在此寄存器直接讀取,如下圖所示


5. 常見問題解答
5-1.問:通訊收發(fā)數(shù)值不正確或者連接不上
答:檢查一下485接頭是否接好,焊接地方有沒有粘連,使用環(huán)境是否存在電磁干擾。或者把485線纜調(diào)換一下。
5-2.問:寄存器能否支持帶小數(shù)點(diǎn)位數(shù)值
答:modbus協(xié)議寄存器都是整數(shù)類型的,需要進(jìn)行帶小數(shù)點(diǎn)的數(shù)據(jù)傳輸可以先將數(shù)值乘以一個(gè)倍數(shù),傳輸后再進(jìn)行整除。
6.附錄
modbus_slave.lua
modbus_master.lua