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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10716|回復: 21
打印 上一主題 下一主題
收起左側

單片機30路繼電器雙串口工控板 modbus上位機與下位機例程源碼全套資料下載

  [復制鏈接]
跳轉到指定樓層
樓主




modbus上位機:


標注說明】
【輸出部分標注說明】
上位機界面(提供源代碼)


modbus控制30路下位機程序
軟件協議
一、串口通信定義
l  串口波特率:1位起始位、8位數據位1位停止位、偶校驗
l  默認地址:0x01 (通過上位機軟件可以更改下位機地址)
l  通訊接口:標準RS232  以及標準485通訊
1、指令功能表
  
功能
  
  
從機地址
  
0x01~0xff
  
  
命令
  
  
寄存器地址
  
高字節、低字節
  
  
數據域
  
  
CRC校驗
  
高低字節
  
  
長度
  
  
1個字節
  
  
1個字節
  
  
2個字節
  
  
  
  
2個字節
  
  
讀取繼電器狀態
  
  
Addr
  
  
0x02
  
  
0x0001
  
  
高字節:0x00
  
低字節:0x0f16個繼電器狀態)
  
  
CRCH
  
CRCL
  
  
控制多路繼電器
  
  
Addr
  
  
0x0F
  
  
  0x0000~0x001e
  
  
繼電器個數
  高:0x00
  低:0x01~0x1e
  
  
字節個數
  
1個字節)
  
0x01~0x04
  
  
數據域
  
對應位為1:開
  
對應位為0:關
  
  
CRCH
  
CRCL
  
  
控制單個繼電器
  
  
Addr
  
  
0x05
  
  0x0000~0x000f
  
  高:0xff  低:0x00 吸合  
  高:0x00 低:0x00 斷開
  
  
CRCH
  
CRCL
  
  
設定模塊地址
  
  
Addr
  
  
0x06
  
  0x0010
  
  要修改的地址兩個字節
  
  
CRCH
  
CRCL
  








2、指令示例及詳解
1.       讀取30路繼電器狀態(地址0x01
  
地址
  
  
功能
  
  
繼電器起始地址
  
  
讀取個數
  
  
CRC校驗
  
  0x01
  
  0x02
  
  :0x00
  
  :0x01
  
  :0x00
  
  :0x1e
  
  0xA9
  
  0xC2
  








從機回應
  
地址
  
  
功能
  
  
字節數
  
  
返回繼電器狀態
  
  
CRC校驗
  
  0x01
  
  0x02
  
  0x02
  
  :0x00
  
  :0x00
  
  0x59
  
  0xB8
  







注:返回的十六路狀態0為斷開,1為吸合
2.       控制多路繼電器
a.控制所有繼電器全開主機發送:
  
地址
  
  
功能
  
  
繼電器起始地址
  
  
控制繼電器個數
  
  
字節個數
  
  
數據域
  
  
CRC校驗
  
  0x01
  
  0x0F
  
  :0x00
  
  :0x00
  
  :0x00
  
  :0x1e
  
  0x04
  
  0xff 0xff
  0xff 0xff
  
  0xc1
  
  0xc2
  










從機回應:
  地址
  
  功能
  
  繼電器起始地址
  
  控制繼電器個數
  
  CRC校驗
  
  0x01
  
  0x0F
  
  :0x00
  
  :0x00
  
  :0x00
  
  :0x1e
  
  0xd5
  
  0xC3
  








注:控制多路時數據域中二進制數對應位為1是打開某一路繼電器,為0關閉某一路繼電器
b控制所有繼電器全關主機發送:
  
地址
  
  
功能
  
  
繼電器起始地址
  
  
控制繼電器個數
  
  
字節個數
  
  
數據域
  
  
CRC校驗
  
  0x01
  
  0x0F
  
  :0x00
  
  :0x00
  
  :0x00
  
  :0x0F
  
  0x04
  
  0x00 0x00
  0x00 0x00
  
  0xc3
  
  0x17
  










從機回應:
  地址
  
  功能
  
  繼電器起始地址
  
  控制繼電器個數
  
  CRC校驗
  
  0x01
  
  0x0F
  
  :0x00
  
  :0x00
  
  :0x00
  
  :0x1e
  
  0xd5
  
  0xC3
  








注:控制多路時數據域中二進制數對應位為1是打開某一路繼電器,為0關閉某一路繼電器
3.       控制單個繼電器狀態
控制第一路繼電器開主機發送:
  
地址
  
  
功能
  
  
繼電器地址
  
  
打開繼電器
  
  
CRC校驗
  
  0x01
  
  0x05
  
  :0x00
  
  :0x00
  
  :0xFF
  
  :0x00
  
  0x8C
  
  0x3A
  








從機回應:
  
地址
  
  
功能
  
  
繼電器地址
  
  
打開繼電器
  
  
CRC校驗
  
  0x01
  
  0x05
  
  :0x00
  
  :0x00
  
  :0xFF
  
  :0x00
  
  0x8C
  
  0x3A
  









控制第一路繼電器關主機發送:
  
地址
  
  
功能
  
  
繼電器地址
  
  
打開繼電器
  
  
CRC校驗
  
  0x01
  
  0x05
  
  :0x00
  
  :0x00
  
  :0x00
  
  :0x00
  
  0xCD
  
  0xCA
  








從機回應:
  
地址
  
  
功能
  
  
繼電器地址
  
  
打開繼電器
  
  
CRC校驗
  
  0x01
  
  0x05
  
  :0x00
  
  :0x00
  
  :0x00
  
  :0x00
  
  0xCD
  
  0xCA
  








3、上位機測試軟件
上位機簡介
1.上位機編譯環境:vs2008.net
2.使用語言是vb.net
3.使用該軟件需要安裝framwork3.5軟件(一般win7系統都已安裝)
4.打開該軟件前請先把數據線和控制板連接好,控制板供電
file:///Z:\TEMP\msohtmlclip1\01\clip_image002.jpg
上位機軟件可控制七個30路繼電器輸出控制板,如要需要控制更多從機設備,需要更改上位機軟件.
一、把默認的0x01地址改為其他地址如下:
  地址
  
  功能
  
  繼電器起始地址
  
  更改地址
  
  CRC校驗
  
  備注
  
  01
  
  06
  
  00
  
  10
  
  00
  
  01
  
  49
  
  CF
  
  設備1
  
  01
  
  06
  
  00
  
  10
  
  00
  
  02
  
  09
  
  CE
  
  設備2
  
  01
  
  06
  
  00
  
  10
  
  00
  
  03
  
  C8
  
  0E
  
  設備3
  
  01
  
  06
  
  00
  
  10
  
  00
  
  04
  
  89
  
  CC
  
  設備4
  
  01
  
  06
  
  00
  
  10
  
  00
  
  05
  
  48
  
  0C
  
  設備5
  
  01
  
  06
  
  00
  
  10
  
  00
  
  06
  
  08
  
  0D
  
  設備6
  
  01
  
  06
  
  00
  
  10
  
  00
  
  07
  
  C9
  
  CD
  
  設備7
  


單片機源程序如下:
  1. #include "hader\\main.h"
  2. //#include"hader\\STC12C5A60S2.H"
  3. /******************************
  4. modbus RTU 的C51程序
  5. 單片機STC12C5A60S2  晶振:11.0592
  6. 通信波特率 9600 8位數據 1位停止位 偶校驗 485通位接口
  7. 單片機控制板地址 localAddr(變量)
  8. 通信可設置數據的地址:
  9. 字地址 0 - 255 (只取16位的低8位)
  10. 位地址 0 - 255 (只取16位的低8位)
  11. 注:用一般51單片機有幾路輸出將不能使用
  12. *******************************/

  13. uint32        dwTickCount,dwIntTick;        //時鐘
  14. uint8        idata sendBuf[16],receBuf[16]; //發送接收緩沖區
  15. uint8        idata checkoutError;        // ==2 偶校驗錯  
  16. uint8        idata receTimeOut;                //接收超時
  17. uint8        idata c10ms;                        //10ms 計時
  18. bit                b1ms,bt1ms,b10ms,bt10ms,b100ms,bt100ms;        //定時標志位

  19. // 串行中斷程序
  20. void commIntProc() interrupt 4
  21. {
  22.         if(TI)
  23.         {
  24.                 TI = 0;
  25.                 if(sendPosi < sendCount) //如果發送位置小于發送計數,那么繼續發送
  26.                 {
  27.                         sendPosi++;
  28.                         ACC = sendBuf[sendPosi];
  29.                         TB8 = P;        //加上校驗位
  30.                         SBUF = sendBuf[sendPosi];
  31.                 }
  32.                 else //否則發送完畢,置接收狀態
  33.                 {
  34. //                        b485Send = 0;    //發送完后將485置于接收狀態
  35.                         receCount = 0;   //清接收地址偏移寄存器
  36.                         checkoutError = 0;
  37.                 }
  38.         }
  39.         else if(RI)
  40.         {
  41.                 RI = 0;
  42.                 receTimeOut = 10;    //通訊超時值
  43.                 receBuf[receCount] = SBUF;
  44.                 ACC = receBuf[receCount];
  45.                 if(P != RB8)
  46.                         checkoutError = 2;        //偶校驗出錯
  47.                 receCount++;          //接收地址偏移寄存器加1
  48.                 receCount &= 0x0f;    //最多一次只能接收16個字節
  49.         }

  50. }   // void CommIntProc()

  51. //定時器0 1ms 中斷
  52. void timer0IntProc() interrupt 1
  53. {
  54.         TL0 = TIMER_LOW;
  55.     TH0 = TIMER_HIGHT;
  56.     dwIntTick++;
  57.         bt1ms = 1;
  58.     c10ms++;
  59.     if(c10ms >= 10)
  60.     {
  61.         c10ms = 0;      //10ms計時器清零
  62.         bt10ms = 1;
  63.     }
  64. }   // void Timer0IntProc()

  65. //定時處理
  66. void timeProc(void)
  67. {
  68.         static uint8 c200ms;

  69.   //  bWatchDog = ~ bWatchDog;    //看門狗取反
  70.         b1ms = 0;
  71.         b10ms = 0;
  72.         b100ms = 0;
  73.         
  74.         ET0 = 0;        //禁用定時器0
  75. //        dwTickCount = dwIntTick;        //
  76.         ET0 = 1;

  77.         if(bt1ms)        //如果1ms到
  78.         {
  79.                 bt1ms = 0;
  80.                 b1ms = 1;

  81.         if(receTimeOut>0)        //如果接收超時值>0
  82.         {
  83.             receTimeOut--;        //接收超時-1(1ms減1次)
  84.             if(receTimeOut==0 && receCount>0)   //判斷通訊接收是否超時
  85.             {
  86. //                b485Send = 0;       //將485置為接收狀態
  87.                 receCount = 0;      //將接收地址偏移寄存器清零
  88.                                 checkoutError = 0;
  89.             }
  90.         }
  91.         }
  92.         
  93.         if(bt100ms)
  94.         {
  95.                 bt100ms = 0;
  96.                 b100ms = 1;
  97.         }
  98.     if(bt10ms)      //判斷中斷10ms標志位是否1
  99.     {
  100.         bt10ms = 0;     //清中斷10ms標志位
  101.                 b10ms = 1;

  102.         c200ms++;                   //200ms計時器加1
  103.         if(c200ms >= 20)            //判斷是否計時到200ms
  104.         {
  105.             c200ms = 0;             //清200ms計時器
  106.       //      bRunLED = ~bRunLED;     //取反運行指示燈         
  107.         }
  108.     }
  109. }   // void TimerProc(void)

  110. //初始化串口
  111. void initUart(void)
  112. {
  113.   //串口2波特率
  114.         SCON = 0x50;                                 //方式1,8位數據,波特率可變
  115.         TH1=  0xfd;        
  116.         TL1 = 0xfd;                             //波特率 9600
  117.     TR1=1;               
  118.         SCON = 0xd0;
  119.     PCON = 0;
  120.     ES = 1;
  121. }//void initUart(void)

  122. //初始化中斷
  123. void initInt(void)
  124. {

  125.         TMOD = 0x21;
  126.         TH0 = TIMER_HIGHT;
  127.         TL0 = TIMER_LOW;
  128.         TR0 = 1;        
  129.     ET0 = 1;
  130.         initUart();        //串口初始化
  131.         EA = 1;               
  132. }
  133. //初始化
  134. void initProg(void)
  135. {        
  136. ……………………

  137. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
簡要說明:
一、 尺寸:長233.7mmX寬182.7mmX高25mm
二、 主要芯片:STC12C60S2支持雙串口(支持51系列DIP40封裝單片機)
三、 工作電壓:直流12伏供電(另有24V供電)
四、 串口1(COM1)下載程序,(串口1和串口2均可與上位機通訊)
五、輸出供電采用延時通電電路(1至10秒可調)
功能:當輸出接有被控制設備,避免單片機初次上電(或下載程序)時,輸出設備誤動作。此功能在實際應用中起到很大作用
五、 特點:
             1、具有電源指示。
             2、三十路帶光電隔離輸出控制繼電器。
              3、標準的11.0592M晶振。(便于設置串口波特率)
             4、具有上電復位和手動復位。
             5、支持51系列DIP40封裝單片機。  
       5、輸出三十路繼電器的供電采用延時供電 (避免被控制設備誤動作)        
             6、輸出三十路具有LED指示。
              7、三十路12V繼電器控制,控制設備。
             8、可控制交流220V/10A一下設備。(最大控制設備2000W)
              9、具有雙串口通信功能(可以同時和上位機通信)。
             10、單片機無加密,可插拔更換,可隨意更改程序。



所有資料51hei提供下載:

例程.rar

2.22 MB, 下載次數: 379, 下載積分: 黑幣 -5

產品使用手冊.doc

3.56 MB, 下載次數: 274, 下載積分: 黑幣 -5

modbus上位機.rar

3.35 MB, 下載次數: 380, 下載積分: 黑幣 -5

modbus控制30路下位機程序.rar

164.21 KB, 下載次數: 419, 下載積分: 黑幣 -5

GYJ-0062_30路繼電器雙串口單片機控制板原理圖及PCB圖.pdf

2.11 MB, 下載次數: 337, 下載積分: 黑幣 -5

GYJ-0062_30路繼電器雙串口單片機控制板產品使用手冊.doc

3.56 MB, 下載次數: 293, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏45 分享淘帖 頂6 踩
回復

使用道具 舉報

沙發
ID:66287 發表于 2018-3-2 10:10 | 只看該作者
學習了,謝謝分享!
回復

使用道具 舉報

板凳
ID:239953 發表于 2018-4-15 18:51 | 只看該作者
學習學習,感謝大神分享。
回復

使用道具 舉報

地板
ID:309683 發表于 2018-4-16 22:23 | 只看該作者

學習學習,感謝分享
回復

使用道具 舉報

5#
ID:576536 發表于 2019-7-2 16:38 | 只看該作者
學習學習,感謝分享
回復

使用道具 舉報

6#
ID:106121 發表于 2019-8-29 13:39 | 只看該作者
學習一下 感謝分享
回復

使用道具 舉報

7#
ID:510170 發表于 2019-10-25 16:13 | 只看該作者
感謝樓主無私奉獻
回復

使用道具 舉報

8#
ID:832201 發表于 2020-10-21 16:29 | 只看該作者
謝謝提供思路
回復

使用道具 舉報

9#
ID:97678 發表于 2020-10-22 12:03 | 只看該作者
這是什么產品需要這么多的繼電器!!!牛!!!
回復

使用道具 舉報

10#
ID:67722 發表于 2020-10-30 13:45 | 只看該作者
謝謝提供思路
回復

使用道具 舉報

11#
ID:67722 發表于 2020-10-30 13:46 | 只看該作者
謝謝提供思路
回復

使用道具 舉報

12#
ID:1063214 發表于 2023-2-16 14:55 | 只看該作者
謝謝提供思路
回復

使用道具 舉報

13#
ID:462629 發表于 2023-3-2 12:45 | 只看該作者
這是完整版本的嗎?
回復

使用道具 舉報

14#
ID:1063034 發表于 2023-3-8 22:02 | 只看該作者
謝謝大神,學習了。這是完整版嗎?
回復

使用道具 舉報

15#
ID:563507 發表于 2023-4-15 21:23 | 只看該作者
學習了,好資料感謝分享!
回復

使用道具 舉報

16#
ID:1083996 發表于 2023-8-22 08:09 | 只看該作者
好帥氣的板子,這個有余料嗎
回復

使用道具 舉報

17#
ID:126422 發表于 2023-8-22 09:18 | 只看該作者
看著有點像PLC的意思。
回復

使用道具 舉報

18#
ID:249808 發表于 2024-6-8 15:41 | 只看該作者
下載回來研究研究……
回復

使用道具 舉報

19#
ID:432653 發表于 2024-6-17 04:31 | 只看該作者
上位機測試軟件打不開
回復

使用道具 舉報

20#
ID:432653 發表于 2024-6-17 04:32 | 只看該作者
上位機測試軟件打不開
回復

使用道具 舉報

21#
ID:1046170 發表于 2024-7-30 23:17 | 只看該作者
學習了,謝謝分享!
回復

使用道具 舉報

22#
ID:60122 發表于 2024-8-11 10:50 來自觸屏版 | 只看該作者
我有8入8出和15入15出的板子,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久网站 | 日韩久久久一区二区 | 91婷婷韩国欧美一区二区 | 视频二区 | 精品久久久久久久久久 | 日韩在线视频观看 | 亚洲色综合 | 99色在线视频 | 伊人在线 | www.性色| 自拍偷拍精品 | 亚洲成人一级片 | 国产91一区 | 老头搡老女人毛片视频在线看 | 日本一卡精品视频免费 | 精品粉嫩aⅴ一区二区三区四区 | 日韩一级免费大片 | 国产综合精品 | 亚洲精品乱 | 国产成人叼嘿视频在线观看 | 久久男人| 国产高清视频在线观看 | 欧美激情久久久久久 | 国产综合在线视频 | 国产一级视频在线观看 | 精品久久久久久久久久久久 | 一区二区三区欧美大片 | 色婷婷综合久久久中字幕精品久久 | 五月精品视频 | 中文字幕一区二区三区在线观看 | 日本午夜视频 | 日韩中文字幕视频在线观看 | 一区在线观看视频 | 久久夜视频 | 久久精品久久久 | 国产日产精品一区二区三区四区 | 午夜精品久久 | 久久宗合色 | 蜜桃av一区二区三区 | 精品亚洲一区二区三区四区五区高 | www.国产一区 |