欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機30路繼電器雙串口工控板 modbus上位機與下位機例程源碼全套資料下載 [打印本頁]

作者: zhangxinchun    時間: 2018-2-24 12:20
標題: 單片機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


作者: bhjyqjs    時間: 2018-3-2 10:10
學習了,謝謝分享!
作者: brookfog    時間: 2018-4-15 18:51
學習學習,感謝大神分享。
作者: 學習的小明    時間: 2018-4-16 22:23

學習學習,感謝分享
作者: scq330    時間: 2019-7-2 16:38
學習學習,感謝分享
作者: lsjlb    時間: 2019-8-29 13:39
學習一下 感謝分享
作者: ttmax3    時間: 2019-10-25 16:13
感謝樓主無私奉獻
作者: cycserver    時間: 2020-10-21 16:29
謝謝提供思路
作者: jovew    時間: 2020-10-22 12:03
這是什么產品需要這么多的繼電器!!!牛!!!
作者: 我是主角    時間: 2020-10-30 13:45
謝謝提供思路
作者: 我是主角    時間: 2020-10-30 13:46
謝謝提供思路
作者: 悶魚魚們    時間: 2023-2-16 14:55
謝謝提供思路
作者: woyaodwn    時間: 2023-3-2 12:45
這是完整版本的嗎?

作者: cyf75    時間: 2023-3-8 22:02
謝謝大神,學習了。這是完整版嗎?
作者: ybshma    時間: 2023-4-15 21:23
學習了,好資料感謝分享!
作者: 量子工業    時間: 2023-8-22 08:09
好帥氣的板子,這個有余料嗎
作者: lijn    時間: 2023-8-22 09:18
看著有點像PLC的意思。
作者: LGH850    時間: 2024-6-8 15:41
下載回來研究研究……
作者: 夏一    時間: 2024-6-17 04:31
上位機測試軟件打不開
作者: 夏一    時間: 2024-6-17 04:32
上位機測試軟件打不開
作者: cqd1688    時間: 2024-7-30 23:17
學習了,謝謝分享!
作者: liaoxliang    時間: 2024-8-11 10:50
我有8入8出和15入15出的板子,
作者: atl0402    時間: 2025-12-1 10:06
感謝樓主無私奉獻




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1