Modbus RTU Relay

Modbus RTU Relay
Modbus RTU Relay
{{{name2}}}
{{{name3}}}
基本信息
分類: RS485模塊模塊
{{{userDefinedInfo1}}}: {{{userdefinedvalue1}}}
{{{userDefinedInfo2}}}: {{{userdefinedvalue2}}}
{{{userDefinedInfo3}}}: {{{userdefinedvalue3}}}
品牌: Waveshare
功能簡介
特性 RS485 繼電器模塊
' 無特性,不解釋
' 無特性,不解釋
' 無特性,不解釋
' 無特性,不解釋
接口 RS485
相關產品
? {{{Product1}}}
? {{{Product2}}}
? {{{Product3}}}
? {{{Product4}}}
? {{{Product5}}}
? {{{Product6}}}

目錄

硬件測試

RS485測試

  • 將USB TO 485和目標板通過杜邦線,將A-->A和B-->B相連,如下圖所示:

Modbus-RTU-Relay connet.jpg

  • 下載SSCOM串口調試助手并在電腦上打開,打開對應的端口號,設置波特率為9600,點擊多字符串打開多條字符串發送窗口,點擊對應的功能即可發送對應的命令,

Modbus-RTU-Relay-2.png

  • 如果需要發送其他命令則選擇HEX發送,加檢驗選擇ModbusCRC16校驗,輸入命令的前六個字節點擊發送則會自動添加CRC校驗碼。

Modbus-RTU-Relay-3.png

程序測試

注意:RS485不可以直接接到樹莓派的串口否則可能燒毀設備,需要加485電平轉換,樹莓派建議搭配RS485 CAN HAT模塊使用,NUCLEO-F103RB和Arduino建議搭配RS485 CAN Shield模塊使用

樹莓派

打開樹莓派終端,輸入以下指令進入配置界面

sudo raspi-config
選擇Interfacing Options -> Serial,關閉shell訪問,打開硬件串口
L76X GPS Module rpi serial.png

然后重啟樹莓派:

sudo reboot

打開/boot/config.txt文件,找到如下配置語句使能串口,如果沒有,可添加在文件最后面。

enable_uart=1

對于樹莓派3B用戶,串口用于藍牙,需要注釋掉:

#dtoverlay=pi3-miniuart-bt

然后重啟樹莓派:

sudo reboot

將RS485 CAN HAT模塊插到樹莓派,把ModBus RTU Relay模塊和RS485 CAN HAT模塊的A與B對應連接
如果使用的是其他的485設備,確定連線A-A,B-B即可
運行如下命令運行程序

sudo apt-get install p7zip
wget http://www.4643746.live/w/upload/6/6c/Servo_Driver_HAT.7z
7zr x Modbus_RTU_Relay.7z -r -o./Modbus_RTU_Relay
cd Modbus_RTU_Relay/Python3
sudo python3 main.py

STM32

STM32的例程是基于NUCLEO-F103RB和RS485 CAN Shield模塊。
找到STM32程序文件目錄并打開STM32工程。注意使用前先確保電腦已經安裝好keil5軟件,下載將程序下載到開發板即可。
正常正常運行繼電器模塊導通會依次打開然后依次關閉。串口會輸出發送的命令。

Arduino

Arduino例程是基于NUO PLUS和RS485 CAN Shield模塊。
使用Arduino IDE 打開程序,選擇對應的開發板然后下載程序。
正常正常運行繼電器模塊導通會依次打開然后依次關閉。串口會輸出發送的命令。

發送指令格式

發送指令總共包括8個字節, 分別是

字節1:地址
字節2:功能碼
字節3 4:寄存器地址(大端格式)
字節5 6:寄存器數據(大端格式)
字節7 8:CRC校驗(小端格式)

功能碼介紹

功能碼 備注
01 讀繼電器狀態
03 讀取地址、版本
05 寫單個繼電器
06 設置波特率,地址
0F 寫全部繼電器

控制單個繼電器

發送碼:01 05 00 00 FF 00 8C 3A

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
05 05指令 控制繼電器指令
00 00 地址 要控制繼電器的寄存器地址,0x00 - 0x0008
FF 00 指令 0xFF00:繼電器開啟;
0x0000:繼電器關閉;
0x5500:繼電器翻轉;
8C 3A CRC16 前6字節數據的CRC16校驗和

返回碼: 01 05 00 00 FF 00 8C 3A

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
05 05指令 控制繼電器指令
00 00 地址 要控制繼電器寄存器地址,0x0000-0x0008
FF 00 指令 0xFF00:繼電器開啟;
0x0000:繼電器關閉;
0x5500:繼電器翻轉;
8C 3A CRC16 前6字節數據的CRC16校驗和

示例: [1號地址設備]: 0號繼電器開啟 : 01 05 00 00 FF 00 8C 3A
0號繼電器關閉 : 01 05 00 00 00 00 CD CA
1號繼電器開啟 : 01 05 00 01 FF 00 DD FA
1號繼電器關閉 : 01 05 00 01 00 00 9C 0A
2號繼電器開啟 : 01 05 00 02 FF 00 2D FA
2號繼電器關閉 : 01 05 00 02 00 00 6C 0A
3號繼電器開啟 : 01 05 00 03 FF 00 7C 3A
3號繼電器關閉 : 01 05 00 03 00 00 3D CA
0號繼電器翻轉:01 05 00 00 55 00 F2 9A
1號繼電器翻轉:01 05 00 01 55 00 A3 5A
2號繼電器翻轉:01 05 00 02 55 00 53 5A
3號繼電器翻轉:01 05 00 03 55 00 02 9A

控制全部繼電器

發送碼:01 05 00 FF FF FF FC 4A

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
05 05指令 控制繼電器指令
00 FF 地址 固定0x00FF
FF FF 指令 0xFFFF:繼電器開啟;
FC 4A CRC16 前6字節數據的CRC16校驗和

返回碼: 01 05 00 FF FF FF FC 4A

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
05 05指令 控制繼電器指令
00 FF 地址 固定0x00FF
FF FF 指令 0xFFFF:繼電器開啟;
0x0000:繼電器關閉;
0x5A00:繼電器翻轉;
FC 4A CRC16 前6字節數據的CRC16校驗和

示例:

[1號地址設備]:

全部繼電器開啟 : 01 05 00 FF FF FF FC 4A
全部繼電器關閉 : 01 05 00 FF 00 00 FD FA
全部繼電器翻轉 : 01 05 00 FF 5A 00 C7 5A

讀取繼電器狀態

發送碼:01 01 00 FF 00 01 CD FA

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
01 01指令 查詢繼電器狀態指令
00 FF 地址 固定0x00FF
00 01 指令 固定0x0001
CD FA CRC16 前 6 字節數據的 CRC16 校驗和

返回碼:01 01 01 00 51 88

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
01 01指令 查詢繼電器狀態指令
01 字節數 返回狀態信息的所有字節數。
00 查詢的狀態 返回的繼電器狀態
Bit0:第一個繼電器狀態;
Bit1:第二個繼電器狀態;
Bit2:第三個繼電器狀態;
……
Bit7:第八個繼電器狀態;
8C 35 CRC16 前 6 字節數據的 CRC16 校驗和

示例:

[1號地址設備]

發送 : 01 01 00 FF 00 01 CD FA
返回 : 01 01 01 00 51 88 //全部繼電器關閉
發送 : 01 01 00 FF 00 01 CD FA
返回 : 01 01 01 01 90 48 //0號繼電器開啟,其余繼電器關閉
發送 : 01 01 00 FF 00 01 CD FA
返回 : 01 01 01 41 91 B8 //0、6號繼電器開啟,其余繼電器關閉

寫繼電器狀態

發送碼:01 0F 00 00 00 01 94 0B

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
0F 0F指令 寫繼電器狀態指令
00 00 地址 固定0x0000
00 01 指令 Bit0:控制第一個繼電器;
Bit1:控制第二個繼電器;
Bit2:控制第三個繼電器;
……
Bit7:控制第八個繼電器;
94 0B CRC16 前 6 字節數據的 CRC16 校驗和

返回碼:01 0F 00 00 00 01 94 0B

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
0F 0F指令 全部寄存器控制指令
00 00 地址 固定0x0000。
00 01 指令 0x0001,寫繼電器數據
Bit0:控制第一個繼電器;
Bit1:控制第二個繼電器狀態;
Bit2:控制第三個繼電器狀態;
……
Bit7控制:第八個繼電器狀態;
94 0B CRC16 前 6 字節數據的 CRC16 校驗和

示例:

[1號地址設備]

繼電器全部開啟 : 01 0F 00 00 00 FF 15 8B
繼電器全部關閉 : 01 0F 00 00 00 00 55 CB
0-1開;3-7關  : 01 0F 00 00 00 03 15 CA

繼電器閃開閃閉指令

發送碼:01 05 02 00 00 07 8D B0

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
05 05指令 單個控制指令
02 指令 02 為是閃開指令,04為閃閉指令
00 繼電器地址 要控制的繼電器地址
00 07 間隔時間 延時時間為數據*100ms
數值:0x0007,延時:7*100MS = 700MS
8D B0 CRC16 前 6 字節數據的 CRC16 校驗和

返回碼:01 05 02 00 00 07 8D B0

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
05 05指令 單個控制指令
02 指令 02 為是閃開指令,04為閃閉指令
00 繼電器地址 要控制繼電器地址
00 07 間隔時間 延時時間為數據*100ms
數值:0x0007,延時:7*100MS = 700MS
8D B0 CRC16 前 6 字節數據的 CRC16 校驗和

示例:

[1號地址設備]

0號繼電器閃開 : 01 05 02 00 00 07 8D B0 //700MS = 7*100MS = 700MS
1號繼電器閃開 : 01 05 02 01 00 08 9C 74 //800MS
0號繼電器閃閉 : 01 05 04 00 00 05 0C F9 //500MS
1號繼電器閃閉 : 01 05 04 01 00 06 1D 38 //600MS

設置波特率指令

發送碼:00 06 20 00 00 05 43 D8

字段 含義 備注
00 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
06 06指令 設置波特率,設備地址
20 00 指令寄存器 0x2000為設置波特率,0x4000為設置設備地址
00 05 波特率數值 波特率數值對應
0x0000  : 4800
0x0001  : 9600
0x0002  : 19200
0x0003  : 38400
0x0004  : 57600
0x0005  : 115200
0x0006  : 128000
0x0007  : 256000
43 D8 CRC16 前 6 字節數據的 CRC16 校驗和

返回碼:00 06 20 00 00 05 43 D8

字段 含義 備注
00 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
06 06指令 設置波特率,設備地址
20 00 指令寄存器 0x2000為設置波特率,0x4000為設置設備地址
00 05 波特率 波特率數值對應
0x0000  : 4800
0x0001  : 9600
0x0002  : 19200
0x0003  : 38400
0x0004  : 57600
0x0005  : 115200
0x0006  : 128000
0x0007  : 256000
43 D8 CRC16 前 6 字節數據的 CRC16 校驗和

示例:

[1號地址設備]

設置波特率 4800 :00 06 20 00 00 00 83 DB
設置波特率 9600 :00 06 20 00 00 01 42 1B
設置波特率115200 :00 06 20 00 00 05 43 D8

設置設備地址指令

發送碼:00 06 40 00 00 01 5C 1B

字段 含義 備注
00 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
06 06指令 設置波特率,設備地址
40 00 指令寄存器 0x2000為設置波特率,0x4000為設置設備地址
00 01 設備地址 設置的設備地址,0x0001-0x00FF
5C 1B CRC16 前 6 字節數據的 CRC16 校驗和

返回碼:00 06 40 00 00 01 5C 1B

字段 含義 備注
00 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
06 06指令 設置波特率,設備地址
40 00 指令寄存器 0x2000為設置波特率,0x4000為設置設備地址
00 01 設備地址 設置的設備地址,0x0001-0x00FF
5C 1B CRC16 前 6 字節數據的 CRC16 校驗和

示例:

[1號地址設備]

設置設備地址為0x01 :00 06 40 00 00 01 5C 1b
設置設備地址為0x02 :00 06 40 00 00 02 1C 1A
設置設備地址為0x03 :00 06 40 00 00 03 DD DA

讀取設備地址指令

發送碼:00 03 40 00 00 01 90 1B

字段 含義 備注
00 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
03 03指令 讀取設備地址指令
40 00 指令寄存器 0x0200為讀取軟件版本,0x0040為讀取設備地址
00 01 設備地址 設備地址
90 1B CRC16 前 6 字節數據的 CRC16 校驗和

返回碼:01 03 01 01 31 88

字段 含義 備注
00 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
03 03指令 讀取軟件版本,讀取設備地址指令
01 字節數 返回字節數
01 設備地址 設備地址
31 88 CRC16 前 6 字節數據的 CRC16 校驗和

示例:

[1號地址設備]

發送 : 00 03 40 00 00 01 90 1B
返回 : 01 03 01 01 31 88 //地址0x01
[2號地址設備]

發送 : 00 03 40 00 00 01 90 1B
返回 : 02 03 01 02 71 CD //地址0x02
[3號地址設備]

發送 : 00 03 40 00 00 01 90 1B
返回 : 03 03 01 03 B1 F1 //地址0x03

讀取軟件版本指令

發送碼:01 03 20 00 00 01 8F CA

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
03 03指令 讀取軟件版本,讀取設備地址指令
20 00 指令寄存器 0x0200為讀取軟件版本,0x0040為讀取設備地址
00 01 設備地址 設備地址
8F CA CRC16 前 6 字節數據的 CRC16 校驗和

返回碼:01 03 01 64 F1 A3

字段 含義 備注
01 設備地址 0x00表示廣播地址;0x01-0xFF表示設備地址
03 03指令 讀取軟件版本,讀取設備地址指令
01 字節數 返回字節數
64 軟件版本 轉為十進制然后小數點左移兩位即表示軟件版本


0x64 = 100 = V1.00

F1 A3 CRC16 前 6 字節數據的 CRC16 校驗和

示例:

發送:01 03 20 00 00 01 8F CA
返回:01 03 01 64 F1 A3 // 64 = 100 =V1.00




EMAIL:[email protected]
電話:0755-83040712
QQ:3004637648
微信:掃下方二維碼添加
Wkg.jpg
* 企業微信添加好友時軟件無提示,我們無法及時通過客戶好友申請。如長時間無響應,請用其他聯系方式。
說明:添加之后直接留言即可,請勿又發郵箱又加QQ又加微信,三者添加一個聯系即可。

說明:進行售后服務前,請準備好客戶信息(定貨單位、定貨人等),以供驗證。

Call-of-duty-V2.jpg

手游商人什么最赚钱吗 天津快乐十分钟摇奖器 富余通配资 辽宁35选7玩法说明 福彩玩法规则和玩法 七乐彩5等奖多少钱 pk10直播开奖赛车链接 甘肃十一选五走势图 pk10定位胆技巧稳赚 河北十一选五技巧高招 体彩山西十一选五