久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5507|回復: 4
收起左側

串口轉繼電器通信協議 自帶CRC檢驗程序 很經典

[復制鏈接]
ID:228542 發表于 2017-11-19 22:22 | 顯示全部樓層 |閱讀模式
串口轉繼電器通信協議 V1.0
協議:自帶CRC檢驗程序   非常經典
0.png
1 簡介
RY51SD8P232/485 是一款串口控制繼電器模塊,針對工業及家庭應用而設計,可用于 工業自動化及物聯網系統集成。RY51SD8P232/485 兼容任何主流操作系統,提供兩種標準 工業串行通信接口 RS-232 和 RS-485,均可支持高達 115.2kbps 的通信速率。板載 8 路獨立 繼電器,兩種通信接口均支持高達 15 級級聯,支持自定義及 Modbus RTU 通信協議。

2 關鍵特性
0.png
   供電接口
輸入直流電壓 9~30V,標準 5.5-2.1 插孔供電接口和工業接線端子,兩種供電方式。為主 從供電模式,當插孔處電源接入時,無論接線端子是否連接電源,均由插孔處供電。當插孔處未插入電源時,才可由接線端子供電。
   電源指示燈 當有電源接入時,電源指示燈點亮。
   8 位撥碼開關 用于設置通信波特率、設置通信方式、模塊地址設置,注意設置好后,模塊重新加電生效。
撥碼開關從左往右依次為 bit1 至 bit8,每一位的具體功能后續介紹。撥碼開關的某一位 往上撥表示邏輯“0”,往下撥表示邏輯“1”。

通信方式選擇跳線,如上圖所示,當跳線帽連接至左邊時為 RS-232 通信,當跳線帽連接
至右邊時為 RS-485 通信,默認為 RS-232 通信。
      通信指示燈 發送或接收數據時,通信燈閃爍。
     8 路繼電器狀態指示燈 繼電器某路打開時,對應的指示燈點亮。
     8 路繼電器接線端子
每路繼電器配備了一個三腳的接線端子,以繼電器 S1 為例,如上圖,中間和左邊管腳
為常閉合狀態,中間與右邊管腳為常斷開狀態。繼電器打開時,中間與左邊管腳斷開, 中間與右邊管腳連接,其它繼電器與此相同。負載與設備接線方法如上圖所示。
5 級聯方式
模塊可實現最多 15 級主從模式級聯,RS-485、RS-232 級聯方式示意圖如下所示。
0.png
在通信過程中需保證所有模塊通信波特率相同,通信波特率由撥碼開關 bit1->bit3 設定。
主機通過模塊地址來區分網絡中的模塊,因此,需保證每個模塊的地址均不相同。,模 塊地址由撥碼開關 bit5->bit8 設定。
6 波特率設置
最高波特率可達 115200bps,由撥碼開關 bit1->bit3 設定,設置如下圖所示,設置好后, 模塊重新上電生效。

7 模塊地址設置
模塊地址由撥碼開關 bit5->bit8 設定,設置范圍為:0x00~0x0E 共 15 個地址,如下圖所 示。設置好后,模塊重新上電生效。
8 通信協議
支持 modbus RTU 以及自定義兩種通信協議。通信協議由撥碼開關 bit4 來選擇,當 bit4 為邏輯 1 時,如下圖右邊所示,設置為 modbus RTU  通信協議。當 bit4 為邏輯 0 時,如下圖 左邊所示,設置為自定義通信協議。

Modbus RTU 通信協議一幀完整的數據包括“地址+命令+數據+校驗”內容。數據發送順
序為地址在前,最后為校驗。字節發送為低位至高位的順序。校驗數值為“地址+命令+數據” 計算結果。如下圖所示,一幀數據包括 8bit 地址,16bit 命令,N 個字節數據,2 字節的 CRC16校驗。
0.png
地址:8bit 地址值為模塊的地址;
命令:命令的字節 1 表示“寫”繼電器或 “讀”繼電器,0x01 表示“寫”,即控制模塊繼 電器開或關,0x02 表示 “讀”,即讀取模塊繼電器狀態。
命令的字節 2  表示控制的繼電器開關的方式,0x11:同時控制 8 個繼電器中任意開 或關。0x22:打開某幾個或全部,其他保持不變。0x33:關閉某幾個或全部,其他保 持不變。具體哪些繼電器由數據 1 決定。0x44:與字節 1 的 0x02 配合使用。

數據:數據 1 為一個字節即 8bit,每一 bit 對應的一個繼電器,最高位對應的繼電器 S8,依
順序排列,最低位對應繼電器 S1。對應位為“1”表示打開繼電器,“0”表示關閉繼 電器。數據 2~N 為可選數據。
CRC16 校驗:為前面所以數據的校驗值,共包括 2 個字節,高字節在前,低字節在后。 注:地址 0x0F 為廣播地址,只有“寫”繼電器時起作用,對所有級聯模塊同時寫數據,與
模塊實際地址無關。 應用實例:
0x00    0x01    0x11    0x01    0x9C    0x74
使地址為 0x00 的模塊,打開繼電器 1 其它關閉。其中,0x9C 0x74 分別為前面數據的
CRC16 校驗高、低字節。
0x00    0x01    0x22    0x02    0xC8    0x85
使地址為 0x00 的模塊,打開繼電器 2 其它不變。其中,0xC8    0x85 分別為前面數據的
CRC16 校驗高、低字節。
0x0E    0x01    0x33    0x7F    0x06    0x1C
使地址為 15 的模塊,關閉繼電器 8 其它不變。其中,0x06    0x1C 分別為前面數據的
CRC16 校驗高、低字節。
0x01    0x02    0x44    0x21    0x53
讀取地址為 0x01 模塊 8 各繼電器狀態,模塊返回數據如下:
0x01    0x02    0x01    0xFF    0xE1    0xC8
讀模塊時,返回數據格式如下所示:
返回的地址為被讀模塊的地址,命令字節 1、2 為固定值 0x02、0x01,數據 1 為 8 路繼
電器的狀態值,某一位為 1 表示該路繼電器為打開,為 0 表示關閉狀態。最后兩個字節為前 面 4 字節的 CRC16 校驗值。
自定義通信:自定義通信方式與 modbus RTU 的唯一區別為,不帶 CRC16 校驗,即發送和接 收的數據沒有最后兩個字節。
注:該模塊只是實現了 modbus RTU 的部分功能,在實際應用中以上述講解的通信方式為準。 部分控制數據如下圖所示:

9 測試軟件
模塊配置了測試軟件,界面如下圖所示,可運行于 XP/win7/win10 等操作系統。軟件包
括控制繼電器,讀取繼電器,顯示繼電器狀態以及計算 CRC16 功能。
使用軟件時,首先設置好與模塊對應的“端口”、“波特率”、“地址碼”,然后點擊“打 開串口”按鈕,若串口成功打開,左邊紅色指示燈點亮。
若需要控制打開某個繼電器則勾選相應的繼電器,如果通信方式為 modbus RTU 則勾選 “校驗”選項(自定義模式不勾選),點擊“控制”按鈕,將相應的數據發送出去,發送的 數據將以 16 進制的格式顯示在“已發送”編輯框中。
點擊“讀狀態”按鈕,接收到的數據將顯示在“已接收”編輯框中,繼電器的狀態將顯 示在右上部分 8 個顯示小燈處。
另外,軟件還集成了 CRC16 校驗計算功能,16 進制數據輸入格式如下圖所示,點擊“計 算”按鈕,計算結果顯示到編輯框中,高字節在前,低字節在后,如下圖所示“DC”高字 節,“BC”為低字節。

注:輸入數據時中間以空格隔開,注意最后一個數后面請勿添加空格。

10    CRC16 函數
單片機源程序如下:
  1. /* CRC16  計算函數, ptr-數據指針, len-數據長度,返回值-計算出的 CRC16  數值 */
  2. unsigned int GetCRC16(unsigned char *ptr, unsigned char len)
  3. {
  4. unsigned int index;
  5. unsigned char crch = 0xFF; //高 CRC  字節
  6. unsigned char crcl = 0xFF; //低 CRC  字節
  7. unsigned char code TabH[] = { //CRC  高位字節值表
  8. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
  9. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
  10. 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
  11. 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
  12. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
  13. 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
  14. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
  15. 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,


  16. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
  17. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
  18. 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
  19. 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
  20. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
  21. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
  22. 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
  23. 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
  24. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
  25. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
  26. 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
  27. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
  28. 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
  29. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
  30. 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
  31. 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
  32. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
  33. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40} ;
  34. unsigned char code TabL[] = { //CRC  低位字節值表
  35. 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
  36. 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
  37. 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
  38. 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
  39. 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
  40. 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
  41. 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
  42. 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
  43. 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
  44. 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
  45. 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
  46. 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
  47. 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
  48. 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
  49. 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
  50. 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
  51. 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
  52. 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
  53. 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
  54. 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
  55. 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
  56. 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
  57. 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
  58. 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
  59. 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
  60. 0x43, 0x83, 0x41, 0x81, 0x80, 0x40} ;
  61. while (len--) //計算指定長度的 CRC
  62. {        index = crch ^ *ptr++; crch = crcl ^ TabH[index]; crcl = TabL[index];
  63. }
  64. return ((crch<<8) | crcl);
  65. }

  66. ……………………

  67. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
串口轉繼電器通信協議 V1.0.pdf (1006.28 KB, 下載次數: 44)


評分

參與人數 1黑幣 +5 收起 理由
七九六 + 5 贊一個!

查看全部評分

回復

使用道具 舉報

ID:29579 發表于 2018-10-14 14:18 | 顯示全部樓層
感謝分享,其它程序呢
回復

使用道具 舉報

ID:29579 發表于 2018-10-14 14:17 | 顯示全部樓層

感謝分享!其它程序呢?
回復

使用道具 舉報

ID:344633 發表于 2018-7-18 15:53 | 顯示全部樓層
樓主真厲害         
回復

使用道具 舉報

ID:247166 發表于 2017-11-20 13:27 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品免费一区二区三区四区 | 久久人人国产 | 欧美精品一区二区三区在线四季 | 日日日日日日bbbbb视频 | 美国黄色一级片 | 婷婷在线免费 | 欧美成人aaa级毛片在线视频 | 久久国产一区二区三区 | 国产午夜精品一区二区三区四区 | 国产日韩欧美一区 | 国产成人99久久亚洲综合精品 | 欧美中文字幕一区二区三区亚洲 | 欧美亚洲视频在线观看 | 黄色网页在线 | 免费观看一级毛片视频 | 每日更新av| 青青草免费在线视频 | 国产ts人妖一区二区三区 | 91久久精品国产91久久性色tv | 成人精品毛片国产亚洲av十九禁 | 亚洲国产成人精品女人久久久 | 国产成人在线视频播放 | 一级h片 | 欧美极品一区二区 | 国外成人免费视频 | 成人h片在线观看 | 一级片在线播放 | av一级在线观看 | 久久高清 | 国产成人免费视频网站视频社区 | 午夜三区 | 凹凸日日摸日日碰夜夜 | 亚洲精品日韩在线 | 91精品国产综合久久香蕉麻豆 | 一本一道久久a久久精品蜜桃 | 皇色视频在线 | 日韩黄| 国产一区二 | 美女久久| 日韩久久久久久 | 五月天国产在线 |