MCGS觸摸屏如何實現批量讀取modbus數據的方法?

軟件 腳本語言 電腦 Profit01 2019-05-31

前兩天,在一個QQ群裡,有同行的朋友問,在MCGS中如何實現批量讀取數據,因為他當時面臨設備,通訊協議才是MODBUS RTU,同時廠家說地址不能分開讀,必須是連續的。鑑於他提供的消息是能夠設置的地方都試過了。為此,我直接告訴通過腳本,批量讀取的方案。那麼這個方案究竟如何實現?且看我下面慢慢道來。

一、工具

1.modsim:仿真PLC或者第三方設備。

2.MCGS組態軟件

3.串口軟件:在電腦中生成兩不同名稱,但互聯的串口,COM1和COM2;

二、指令介紹

1.設備函數

!SetDevice(DevName,DevOp,CmdStr)

函數意義: 按照設備名字對設備進行操作

返 回 值: 數值型

= 0,調用正常

= -1,失敗

= -2,超時

= 1,設備啟動狀態

= 3,設備停止狀態

參 數: DevName,字符型,設備名

DevOp,數值型,設備操作碼

CmdStr,字符串,設備命令,只有當DevOp=6時CmdStr才有意義

DevOp取值範圍及相應含義:

= 1,啟動設備開始工作

= 2,停止設備的工作

= 3,測試設備的工作狀態

= 4,啟動設備工作一次

= 5,改變設備的工作週期,CmdStr包含新的工作週期,單位ms

= 6,執行指定的設備命令,CmdStr中包含指定命令的格式

實 例: !SetDevice(OmronPLC,1,"" ),啟動設備構件“OmronPLC”開始工作

2.批評讀取指令

ReadPV( 寄存器名稱, 起始地址,數據類型,數據個數n,數據1 [,返回狀態])

3.使用實例

!SetDevice( 設備0,6,"ReadPV(4,10,WUB,5,Data00, 返回值)")表示讀取4 區寄存器從地址10 開始的5 個16 位無符號數值,放入MCGS 變量Data00 為起始,連續5 個變量( 即:Data00,Data01,Data02,Data03,Data04) 中,結果存入變量“返回值”中。

三、批量讀取modbus數據的實現方法

1、使用串口軟件創建兩個互聯的串口COM1和COM2,如圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖1 串口軟件創建的互聯串口

2、啟動仿真PLC工具Modsim,並通過COM1(POTR1)連接,寄存器區域:保持寄存器區,設備地址:1,起始地址:40001,長度:10,將部分寄存器設置為隨機數。如圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖2 Modsim設置

3、MCGS組態軟件組態

(1)、在設備窗口中,組態設備及其端口,如圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖3 設備組態1

(2)、設置通用串口父設備端口為COM2口,波特率與仿真PLC的端口一直,如圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖4 父設備串口設置

(3)、父設備下的子設備設置,本實例中名稱為“設備1”,並設置好設備1的相關參數,如設備地址,採樣週期等,詳細如下圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖5 設備1的設置

(4)、在運行策略中創建一個循環策略,並設置循環策略循環時間為1s,如圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖6 循環策略設置

(5)創建數據標籤:Data10~Data14,如圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖7 新建的5個變量標籤

(6)、在循環策略中用腳本編寫批量讀取指令!SetDevice( 設備1,6,"ReadPV(4,2,WB,5,Data10, )")各參數見前面指令介紹,本函數實現的是將40002寄存器開始5個符號整型數據存放在Data10~Data14中。如圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖8 批量讀數腳本

(7)、在用戶窗口中創建標籤值動態顯示畫面,並下裝運行,效果如圖所示

MCGS觸摸屏如何實現批量讀取modbus數據的方法?

圖9 原始數據與批量讀數對比圖

綜上所述:MCGS實現批量讀取modbus數據的方法就介紹到這裡了。

知識分享是一種態度!歡迎讀者閱讀,並指正!

相關推薦

推薦中...