10單片機(jī)rs485通訊控制三菱變頻器rtu模式51設(shè)計(jì)說明_第1頁
10單片機(jī)rs485通訊控制三菱變頻器rtu模式51設(shè)計(jì)說明_第2頁
10單片機(jī)rs485通訊控制三菱變頻器rtu模式51設(shè)計(jì)說明_第3頁
10單片機(jī)rs485通訊控制三菱變頻器rtu模式51設(shè)計(jì)說明_第4頁
10單片機(jī)rs485通訊控制三菱變頻器rtu模式51設(shè)計(jì)說明_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余11頁可下載查看

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、51單片機(jī)RS485通訊控制三菱變頻器(RTU模式一、控制要120Hz230Hz351單片機(jī)RS485通訊控制三菱變頻器(RTU模式一、控制要120Hz230Hz3451 單片機(jī)型號:STC89C52RC通訊格式設(shè)定:設(shè)為9600、8、N、2,為RTU 模式。二、程序說main.cdelayms.c(毫秒延時(shí)、RS485.C(RS485通訊處理)和display.c(數(shù)碼管顯示)組成。1、毫秒延時(shí)子程序:包含頭文件(delayms.h)和源碼文件頭文件的書.H。頭文件delayms.h #ifndef #define /#define /定義為#defineuchar unsigned voi

2、ddelayus(uchar /定義uchar為unsigned /void (1#define _DELYMS_H_(2_DELYMS_H_(1#define _DELYMS_H_(2_DELYMS_H_復(fù) 源碼文件的書原碼文件:在文件系統(tǒng)中一般以“.c和使用。例如對應(yīng)于“delayms.hdelayms.cvoid /12MHz晶振下,j=1231/11.0592MHz晶振下,j=1131仿真所得u2、RS485 通訊處理子程(1)RS485.H#ifndef_RS485_H_ #define/init_serial()void voidUartWrite(charnumber,char)

3、 /RS485 void UartAction(char/extern unsignedchar (2sbit RS485_DIR= /RS485 (EN uchar cntRxd = 0; ucharidatabufRxd20; uchar send8=0;uchar /constsbit RS485_DIR= /RS485 (EN uchar cntRxd = 0; ucharidatabufRxd20; uchar send8=0;uchar /constuchar codeconstuchar code/CRC/CRCuidata:0 x00-0 xff 256 RAM128 data

4、 128 的方式不同。idataC的。C idata const是一個(gè)C語言的關(guān)鍵字,它限定一個(gè)變量不允許被改變。使用const在一定code:程void init_serial(void)/設(shè)置RS485 /1/清零T1 /2,88位定時(shí)器/9600= /TR1 RE: 接收使能端 DI輸入和同相發(fā)送器輸輸入和反相發(fā)送器輸SCON:串行口控制寄串行口控制寄存器SCON/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志等。單片機(jī)復(fù)位時(shí)SCON 0。(1)SM0SM1-SM000110101SCON:串行口控制寄串行口控制寄存器SCON/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志等。單片機(jī)復(fù)位時(shí)SCON 0。(1)SM0SM1-SM00

5、01101010,同步移位寄存器方式(通常用于擴(kuò)展I/O口1,10位異步收發(fā)(8位數(shù)據(jù),波特率可變(1的溢出率控制)2,11 位異步收發(fā)(9 位數(shù)據(jù),波特率固定3,11位異步收發(fā)(9位數(shù)據(jù),波特率可變(1的溢出率控制SM223。通過控制SM20SM201時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI 1(4)TB82、39239的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地址幀/0 1 中,RB82、391 時(shí),若SM2=0RB8 是接收到的停止位。TI08TI1CPU 008RI 1CPU 將0TMOD:定時(shí)器/計(jì)數(shù)器工作方式寄存-GATE=0,定時(shí)器/TCON寄存器中TRXGATE=1,定時(shí)器/T

6、CON中TRX011101013011101013位定時(shí)器/計(jì)數(shù)器116位定時(shí)器/288位定時(shí)器/3,僅適用于T08 位計(jì)數(shù)器,T1void uchar i; RS485_DIR=1;RS485_DIR=0;/函數(shù)RTU8N28,N2/RS485/4/8/1.5/RS485 4ms使用RTU3.5字符后,一個(gè)至少 3.5 個(gè)字符時(shí)間(約 4ms)的停頓標(biāo)定了消息的結(jié)束,一個(gè)新消息可在傳送一半時(shí),RITI就已經(jīng)置位并且馬上進(jìn)入中斷(如果中斷使能的話)函數(shù)了。所以uCRC16(ucharsg,uchar /CRC校驗(yàn)程序(查表法ucharuchCRCHi=0 xFF /高CRCucharuchCR

7、CLo=0 xFF; uchar uIndex ;while(usDataLen-uIndex=uchCRCLo /CRC /CRCsg+/uchCRCLo=uchCRCHiucharuchCRCLo=0 xFF; uchar uIndex ;while(usDataLen-uIndex=uchCRCLo /CRC /CRCsg+/uchCRCLo=uchCRCHiauchCRCHiuIndexuchCRCHi=auchCRCLouIndexreturn(uchCRCHi cntRxd) len = for(i=0; i cntRxd) len = for(i=0; ilen;*buf+=bu

8、fRxdi; cntRxd = 0;/將接收字節(jié)緩沖區(qū)的數(shù)據(jù)讀到buf/void UartAction(charuchar idata buf7; data_h=0,data_l=0;/S_Addresserrupt/bufRxdcntRxd+ =constucharcodeauchCRCHi =省略constucharcodeauchCRCLo =省略bufRxdcntRxd+ =constucharcodeauchCRCHi =省略constucharcodeauchCRCLo =省略/ /CRC/*以下程序?yàn)橛?jì)算程序(CRC_chk(unsignedchar*data,unsignedc

9、harreturn CRC 是先調(diào)入一值是全1的 16 位寄存器,然后調(diào)用一過程將消息中連續(xù)的 8 位字節(jié)各當(dāng)前寄存器中的值進(jìn)行處理。僅每個(gè)字符中的 8Bit 數(shù)據(jù)對 CRC 有效,起始位和停止位CRC8位字符都單獨(dú)和寄存器內(nèi)容相或(OR,結(jié)果向最低有效位方向移動(dòng),最高有效位以0 填充。LSB 被提取出來檢測,如果LSB 1,寄存器單獨(dú)和預(yù)置的值或一下,如果LSB 0,則不進(jìn)行。 CRCCRC計(jì)算CRC(1)161(2)8CRC計(jì)算CRC(1)161(2)816CRC寄存器的低位相異或,把結(jié)果放于CRC(3)把寄存器的內(nèi)容右移一位(朝低位)003 步(再次移位); 1CRC寄存器與多項(xiàng)式 (1

10、010 0000 00000001)3488258 最后得到的CRCCRC3、數(shù)碼管顯示子(1)#ifndef DISPLAY_H #define DISPLAY_H #include delayms.h externucharTempData8;externucharcodeDuanMa10; void Display();void / /8位共陰數(shù)碼管動(dòng)態(tài)掃描顯示 #define DataPortP0 sbitsbit/DataPort 則用P0 /ucharcodeDuanMa10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f

11、,0 x6f;/uchar code/ucharTempData8;void ic uchar /; /DataPort=TempDatai/void ic uchar /; /DataPort=TempDatai/i=88位,最后一位沒有顯示,可將i7void TMOD|=/1,16 位定時(shí)器,使用|/voiderrupt1 /重新賦值 #includereg52.h #include#include #include /sbitFWD=P20; sbit REV= P21;sbitSTOP=/sbitled0=P10; sbitsbit#include /sbitFWD=P20; sbit

12、 REV= P21;sbitSTOP=/sbitled0=P10; sbitsbit/charfunction; uchar /void /20Hz/20Hz/20Hz頻率/20ms說明:UartWrite 3 個(gè)變量分別為功能碼、數(shù)據(jù)地址和數(shù)據(jù)內(nèi)容。要寫入頻率數(shù)06(十進(jìn)制,對應(yīng)的單片機(jī)地址為 40014-40001=13,轉(zhuǎn)成十六進(jìn)制數(shù)為 07d010ms,在20ms,正常。/30Hz10ms,在20ms,正常。/30Hz/30Hz/說明:UartAction 為變頻器響應(yīng)函數(shù),括號內(nèi)的變量為變頻器回應(yīng)信息的首地址,讀取設(shè)定頻率值對應(yīng)的保持寄存器地址為/說明:UartAction 為變頻器

13、響應(yīng)函數(shù),括號內(nèi)的變量為變頻器回應(yīng)信息的首地址,讀取設(shè)定頻率值對應(yīng)的保持寄存器地址為 40205 ( 十進(jìn)制), 對應(yīng)的單片機(jī)地址為 40205-40001=204,轉(zhuǎn)成十六進(jìn)制數(shù)為 ccH;讀回的兩字節(jié)數(shù)據(jù)為設(shè)定頻率值的高、低 8位,轉(zhuǎn)換后的數(shù)值賦給setfre(設(shè)定頻率值。不同地址中的數(shù)據(jù)也要間隔延時(shí),20ms輸出頻率值對應(yīng)的保持寄存器地址為 40201(十進(jìn)制,對應(yīng)的單片機(jī)地址為 40201-40001=200c8H;輸出頻率值對應(yīng)的保持寄存器地址為 40009(十進(jìn)制,對應(yīng)的單片機(jī)地址為 40009-40001=808H8 3 分別取出取反后賦給led0 led1 led2b0=1b1=1led1=0,即led0 和led1 亮;b0=1b2=1Led2=0,即led0和led2變頻器停止時(shí),變頻器面板的RU

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論