串口通訊繼電器-modbus通信上位機調試軟體工具項目開發案例

上海數採物聯網科技 發佈 2022-07-22T06:27:58.498968+00:00

項目需求分析書:1.MODBUS專用調試工具界面要求:1.1保留「MODBUS調試工具」中選擇上位機的通信埠號及配置選擇功能;1.2保留「MODBUS調試工具」中發送、接收的報文顯示區;1.3保留「MODBUS調試工具」中03指令、06指令、10指令操作功能。1.

項目需求分析書:

1.MODBUS專用調試工具界面要求:

1.1保留「MODBUS調試工具」中選擇上位機的通信埠號及配置選擇功能;

1.2保留「MODBUS調試工具」中發送、接收的報文顯示區;

1.3保留「MODBUS調試工具」中03指令、06指令、10指令操作功能。

1.4新增加模塊地址讀取功能:讀取目標地址的原始地址碼並顯示出來;

1.5新增加模塊地址修改功能:從原始地址改為設定的目標地址;並顯示是否成功。

1.6新增加選擇通信波特率修改功能:將目標模塊改為9600,19200,115200等;

1.7新增加四個控制操作功能:

1)控制目標地址可選擇:指定地址1~125,或廣播地址FF

2)目標地址的第一路繼電器的閉合控制;

3)目標地址的第二路繼電器的閉合控制;

4)目標地址的第三路繼電器的閉合控制;

5)目標地址的第四路繼電器的閉合控制;

1.8新增加控制狀態數據位寄存器讀取解析功能:

bit00 第1路繼電器 1-閉合,表示工作;0-斷開,表示備用。

bit01 第2路繼電器 1-閉合,表示工作;0-斷開,表示備用。

bit02 第3路繼電器 1-閉合,表示工作;0-斷開,表示備用。

bit03 第4路繼電器 1-閉合,表示工作;0-斷開,表示備用。

2.通信寄存器定義

寄存器號 寄器名稱 訪問類型 數據值範圍

十進位 十六進位碼

0 0    

1 1 控制數據 R/W 數據為A5時:控制繼電器第1路合,第2,3路分;

數據為B5時:控制繼電器第2路合,第1,3路分;

數據為C5時:控制繼電器第3路合,第1,2路分;

數據為FA時:停機,控制繼電器第1,2,3,4路分;

2 2 控制狀態 R 具體含義參見《終端機控制狀態數據位定義》

3 3 備用 R

4 4 通信地址 R/W

5 5 通信波特率 R/W

… … 備用 R

終端機控制狀態數據位定義

bit00 第1路繼電器 1-閉合,表示工作;0-斷開,表示備用。

bit01 第2路繼電器 1-閉合,表示工作;0-斷開,表示備用。

bit02 第3路繼電器 1-閉合,表示工作;0-斷開,表示備用。

bit03 第4路繼電器 1-閉合,表示工作;0-斷開,表示備用。

bit04 未定義,保留 未定義,保留

bit05 未定義,保留 未定義,保留

bit06 未定義,保留 未定義,保留

bit07 未定義,保留 未定義,保留

3.通信格式

3.1物理接口

通訊方式:串行RS232或RS485。

傳輸速率:4800、9600、19200,115200

字符格式:8位資料位、1位停止位、(無校驗/奇校驗/偶校驗, 可設)。

3.2幀

3.2.1幀結構

幀結構如圖所示,每幀內容包括:地址1BYTE,功能號1BYTE,資料nBYTE,校驗2BYTE,採用MODBUS規約中的RTU方式,通訊幀以HEX碼傳送。

地址(ADDR) 功能號FC) 數據(DATA) 校驗(CRC)

3.2.2地址(ADDR)

指本監測裝置的MODBUS通信地址,範圍為1-254可設。

3.2.3功能號

發給下位機的命令代碼。

3.2.4數據

下行命令幀是命令的附加信息,上行響應幀是響應的數據。

3.2.5校驗

採用CRC校驗。

3.3命令解釋

各命令必須嚴格按下面給出的格式下發,如果設置成功本監測裝置則按響應格式響應,否則本監測裝置不響應。–表示根據實際數值填寫。

3.3.1讀命令

03H命令 03H命令響應

裝置地址碼 – 裝置地址碼 –

功能碼 03H 功能 03H

起始地址高字節 – 字節數 –

起始地址低字節 – 數據0 Hi字節 –

寄存器個數高字節 – 數據0 Lo低字節 –

寄存器個數低字節 – : :

CRC校驗碼高字節 – 數據N Hi字節 –

CRC校驗碼低字節 – 數據N Lo低字節 –

CRC校驗碼高字節 –

CRC校驗碼低字節 –

舉例:請求讀寄存器108-110的實例

請求 響應

裝置地址碼 01 裝置地址碼 01

功能碼 03 功能 03

起始地址高字節 00 字節數 06

起始地址低字節 6B 寄存器值Hi(108) 02

寄存器個數高字節 00 寄存器值LO(108) 2B

寄存器個數低字節 03 寄存器值Hi(109) 00

CRC校驗碼高字節 74 寄存器值LO(109) 00

CRC校驗碼低字節 17 寄存器值Hi(110) 00

寄存器值LO(110) 64

CRC Hi 05

CRC Lo 7A

3.3.2寫命令

06H命令 06H命令響應

裝置地址碼 – Slave Address –

功能碼 06H Function Code 06H

寄存器地址高字節 – Reg. Hi –

起始地址低字節 – Reg. Lo –

數據 Hi高字節 – Data Hi –

數據Lo低字節 – Data Lo –

CRC校驗碼高字節 – CRC Hi –

CRC校驗碼低字節 – CRC Lo –

4.通信測試

4.1模塊地址編寫

地址範圍從01~125,採用06命令寫入04寄存器中;命令格式:

原地址 命令 寄存器號 新地址 校驗碼

XX 06 00 04 00 XX XX XX

舉例:00 06 00 04 00 01 08 1A 表示將原為00的地址修改為01;

4.2 四個控制操作功能

(1)控制目標地址可選擇:指定地址1~125,或廣播地址FF,當選擇FF時,總線上所有模塊均被同步控制。

(2)目標地址模塊的第一路繼電器操作:

模塊地址 命令 寄存器號 繼電器控制數據 校驗碼

XX 06 00 01 00 A5 XX XX

(3)指定地址模塊的第二路繼電器操作:

模塊地址 命令 寄存器號 繼電器控制數據 校驗碼

XX 06 00 01 00 B5 XX XX

(4)指定地址模塊的第三路繼電器操作:

模塊地址 命令 寄存器號 繼電器控制數據 校驗碼

XX 06 00 01 00 C5 XX XX

(5)指定地址模塊的三路繼電器全關操作:

模塊地址 命令 寄存器號 繼電器控制數據 校驗碼

XX 06 00 01 00 FA XX XX

二、項目開發方案

使用python pyqt框架開發。藉助硬體樣品調試解決軟體bug問題

軟體界面如下:

三、項目交付調試現場:

關鍵字: