CS機器人ModBusTCP通訊
1. 簡介
Modbus是一種串行通訊協(xié)議,是Modicon公司于1979年為使用可編程邏輯控制器通信而發(fā)表。Modbus已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標準,并且現(xiàn)在是工業(yè)電子設(shè)備之間常用的連接方式。
CS系列機器人支持modbus tcp,機器人既可以做主站也可以做從站,在某些情況下我們可以通過modbus poll即第三方通訊助手來測試該通訊。
CS 系列支持的,可使用 Modbus 協(xié)議讀寫的數(shù)據(jù)類型為布爾型與無符號短整型(16 位)兩種,
每種類型分別包含一組輸入和一組輸出寄存器,因此 Modbus 共有 4 組寄存器可被主站訪問。其中,
輸入型寄存器只允許讀操作,輸出型寄存器可讀可寫。有關(guān)寄存器協(xié)議接口的詳細說明,請登陸官網(wǎng):
m.4xiwenxue.cn,進入“服務與支持 > 技術(shù)資料”板塊,選擇“CS_用戶手冊_V2.11.0_附件”進行
查詢
1. 布爾型寄存器(8 位):主要用于操作數(shù)字 IO,CS 系列目前可訪問的輸入/輸出數(shù)字 IO 寄存器
的有效地址范圍為 0-63,雖然其值的類型為 bool,但每個 IO 仍會占用一個字節(jié)的空間,所以數(shù)字 IO
共占 2*64 字節(jié)。
2. 無符號短整型(16 位):用于保存和修改機器人的版本,TCP,系統(tǒng)狀態(tài)等信息;也用于映射
數(shù)字 IO。CS 系列目前可訪問的輸入/輸出寄存器的有效地址范圍為 0-415。
工具 Modbus 主站設(shè)備可通過以下功能碼讀/寫從站寄存器:
1. 0x01: 讀一個或者多個輸出數(shù)字信號 (read output bits)
2. 0x02: 讀一個或者多個輸入數(shù)字信號 (read input bits)
3. 0x03: 讀一個或者多個輸出寄存器 (read output registers)
4. 0x04: 讀一個或者多個輸入寄存器 (read input registers)
5. 0x05: 寫單個輸出數(shù)字信號 (write output bit)
6. 0x06: 寫單個輸出寄存器 (write output register)
7. 0x0F: 連續(xù)寫多個輸出數(shù)字信號 (write multiple output bits)
8. 0x10: 連續(xù)寫多個輸出寄存器 (write multiple output registers)
2. 操作流程
2.1機器人做從站
機器人做從站,modbus通訊使用機器人控制柜FB1網(wǎng)口或FB2網(wǎng)口,連接控制柜和電腦,
機器人Ip設(shè)置:

電腦設(shè)置為機器人的同一網(wǎng)段后可以ping一下查看網(wǎng)絡(luò)是否連接正常
打開第三方網(wǎng)絡(luò)調(diào)試助手modbus poll,--connection--connect,選擇modbus tcp/ip,ip地址欄輸入機器人的ip,端口默認502,最后點擊ok

只要對話框不顯示noconnection 就表明調(diào)試軟件已連上cs機器人
接下來我們可以用modbus poll來:
寫入標準數(shù)字輸出
讀取標準數(shù)字輸出
讀取標準數(shù)字輸入
讀取寄存器
寫入寄存器
2.1.1讀取標準數(shù)字輸入
功能碼選擇 02 Read Discrete inputs ,地址格式十進制,起始地址 0,讀寫數(shù)量 24(機器人輸入地址 0-23,共 24 個)


上圖顯示輸入4為1與下圖示教器顯示匹配,可見讀取成功
2.1.2讀取標準數(shù)字輸出
功能碼選擇 02 Read Discrete Inputs ,地址格式十進制,起始地址 32,(機器人輸出地址 32-59,共 28 個),讀寫數(shù)量可選擇 28 即全部讀取

由圖可見32與41為1,與機器人modbus slave界面顯示標準數(shù)字輸出0和標準數(shù)字輸出顯示的數(shù)據(jù)一樣,可見讀取成功

2.1.3寫入標準數(shù)字輸出
setup--read/write definition中可以先擇 01 read coils(0x)讀取線圈方便在modbus poll上觀察
點擊functions--選擇功能碼15:write multiple coils(寫多個線圈),勾選所需的coil,點擊send,回復respons ok 即可輸出信號


2.1.4讀取寄存器
setup--read/write definition中可以先擇 功能碼04read input registers,十進制,起始地址 97,
讀寫數(shù)量 10(根據(jù)實際需求修改)


2.1.5寫入寄存器
可以在setup--read/write definition 選擇04 read input register,地址address256,數(shù)量10,先讀這些可讀可寫的寄存器方便我們觀察變化

第一種方法:直接雙擊poll表格里的地址,修改value值來寫入(對應功能碼06 寫單個輸出寄存器)


第二種方法:點擊functions --16:write multiple registers,雙擊圖中顯示列表來修改寄存器值


2.2機器人做主站
機器人做主站,modbus通訊使用機器人控制柜FB2網(wǎng)口,連接控制柜和電腦
查看電腦ip,這邊為192.168.1.205

打開 modbus slave 調(diào)試助手,點擊 connection--connect,如下圖設(shè)置后點擊ok

點擊機器人示教器配置--通訊--modbus--添加modbus設(shè)備,輸入ip(此處ip為主站ip)
2.2.1讀線圈
打開modbus slave調(diào)試助手,右擊名為“mbalave1”窗口,點擊slave definition,

輸入下圖的id,功能碼,地址,數(shù)量,點擊ok
點擊示教器頁面,輸入類型-數(shù)字輸入 地址為0從站地址可為1,頻率10(可選),當圖標變?yōu)榫G色即ok

打開modbus slave調(diào)試助手,雙擊對應地址,修改值,即可發(fā)現(xiàn)機器人示教器界面的值也改變

2.2.2寫線圈
打開modbus slave,可點擊File--new,會出來一根新的監(jiān)視表,
右擊其選擇Slave Definition,

輸入id 功能碼 地址和數(shù)量,注意地址不要與上一步設(shè)置重復
機器人示教器上點擊添加信號,如下圖設(shè)置:

在該界面點擊值,可在modbus slave,查看到

2.2.3讀寄存器
打開modbus slave,可點擊File--new,會出來一個新的監(jiān)視表
右擊其選擇Slave Definition,

輸入id 1,功能碼04,地址20,數(shù)量5(自定義),點擊ok

在機器人示教器界面點擊添加信號,輸入下列數(shù)據(jù),圓形圖標變綠色表明連接成功
可在modbus slave界面,點擊對應地址輸入數(shù)值,

在示教器界面可查看對應數(shù)值
2.2.4寫寄存器
打開modbus slave,可點擊File--new,會出來一個新的監(jiān)視表

右擊其選擇Slave Definition,
選擇id 1,function03,地址30,數(shù)量5(自定義),點擊ok

在示教器界面點擊添加信號--輸入下圖對應信息,圓形圖標變綠色表明連接成功

點擊值,輸入數(shù)據(jù),即可在modbus slave上查看到寫入的值

3. 程序中操作
3.1機器人做從站
為方便在modbus信號在程序中方便配置和使用,可以在配置--通訊--modbus連接機器人自己作為主站
如上圖所示,下述以數(shù)字輸入,地址32;數(shù)字輸出,地址33;寄存輸入,地址266;寄存器輸出,地址277為例
3.1.1任務中讀取(等待)線圈值

當線圈m_a為高是彈出彈窗信息1

3.1.2任務中設(shè)置(給出)線圈值

機器人中如上圖設(shè)置,點擊運行,調(diào)試助手中顯示為1,即成功
3.1.3任務中讀?。ǖ却┘拇嫫髦?/strong>

運行機器人程序,在poll中地址66輸入44,機器人彈窗提示1,即ok

3.1.4任務中設(shè)置(給出)寄存器值

運行機器人程序,poll中地址277顯示為值897即ok
3.2機器人做主站
確定按照上述步驟客戶端io設(shè)置完成
3.2.1任務中讀?。ǖ却┚€圈值
運行任務,當從站的信號modbus=高 時 ,頁面彈出窗口提示“1”,代表已獲取到該mosbus


3.2.2任務中設(shè)置寫入線圈值
先檢查助手里面準備寫入得地址是否為0
如圖在任務里添加設(shè)置

點擊運行任務,助手中值變化
3.2.3任務中讀?。ǖ却┘拇嫫髦?/strong>
運行任務,當從站的信號modbus_2=3 時 ,頁面彈出窗口提示“1”,代表已獲取到該寄存器的值


3.2.4任務中寫入從站的寄存器值
先檢查助手里面準備寫入得地址是否為0

如圖在任務里添加設(shè)置

點擊運行任務,助手中值變化
