摘 要:臺(tái)達(dá)VFD全系列變頻器均能夠通過通訊進(jìn)行參數(shù)的讀寫和控制,隨著單片機(jī)功能的越來越強(qiáng)大,在嵌入控制中的應(yīng)用更加的廣泛。如何實(shí)現(xiàn)單片機(jī)和變頻器之間的通訊是本文的介紹重點(diǎn)。同時(shí)本文給出了單片機(jī)和變頻器通訊的硬件電路圖和通訊源程序C51,有助于讀者掌握臺(tái)達(dá)變頻器在嵌入式系統(tǒng)的通訊應(yīng)用技術(shù)。
關(guān)鍵詞:變頻器 C51 單片機(jī)
1 引言
臺(tái)達(dá)VFD全系列變頻器和C51單片機(jī)通訊采用串行異步原理。通訊速度用波特率表示。波特率即數(shù)據(jù)傳送的速率,其定義是每秒鐘傳送的二進(jìn)制數(shù)的位數(shù)。例如,數(shù)據(jù)傳送的速率是120字符/s,而每個(gè)字符如上述規(guī)定包含10數(shù)位,則傳送波特率為1200波特。通訊方向:在串行通訊中,把通訊接口只能發(fā)送或接收的單向傳送方法叫單工傳送;而把數(shù)據(jù)在甲乙兩機(jī)之間的雙向傳遞,稱之為雙工傳送。在雙工傳送方式中又分為半雙工傳送和全雙工傳送。半雙工傳送是兩機(jī)之間不能同時(shí)進(jìn)行發(fā)送和接收,任一時(shí)該,只能發(fā)或者只能收信息。
8051單片機(jī)串行異步通訊的方式用一個(gè)起始位表示字符的開始,用停止位表示字符的結(jié)束。其每幀的格式如下:在一幀格式中,先是一個(gè)起始位0,然后是8個(gè)數(shù)據(jù)位,規(guī)定低位在前,高位在后,接下來是奇偶校驗(yàn)位(可以省略),最后是停止位1。用這種格式表示字符,則字符可以一個(gè)接一個(gè)地傳送。在異步通訊中,CPU與外設(shè)之間必須有兩項(xiàng)規(guī)定,即字符格式和波特率。字符格式的規(guī)定是雙方能夠在對(duì)同一種0和1的串理解成同一種意義。原則上字符格式可以由通訊的雙方自由制定,但從通用、方便的角度出發(fā),一般還是使用一些標(biāo)準(zhǔn)為好,如采用ASCII標(biāo)準(zhǔn)。
2 通訊約規(guī)
2.1 臺(tái)達(dá)VFD變頻器通訊約規(guī)
(1)臺(tái)達(dá)變頻器通訊字符格式。臺(tái)達(dá)變頻器通訊字符格式有ASCII和RTU格式,如圖1所示。
(2)臺(tái)達(dá)變頻器通訊格式的表格描述。臺(tái)達(dá)變頻器通訊格式的表格描述參見表1。
3 單片機(jī)通訊設(shè)計(jì)
3.1 C52單片機(jī)的串行接口結(jié)構(gòu)
8051串行接口是一個(gè)可編程的全雙工串行通訊接口。它可用作異步通訊方式(UART),與串行傳送信息的外部設(shè)備相連接,或用于通過標(biāo)準(zhǔn)異步通訊協(xié)議進(jìn)行全雙工的8051多機(jī)系統(tǒng)也可以通過同步方式,使用TTL或CMOS移位寄存器來擴(kuò)充I/O口。8051單片機(jī)通過引腳RXD(P3.0,串行數(shù)據(jù)接收端)和引腳TXD(P3.1,串行數(shù)據(jù)發(fā)送端)與外界通訊。SBUF是串行口緩沖寄存器,包括發(fā)送寄存器和接收寄存器。它們有相同名字和地址空間,但不會(huì)出現(xiàn)沖突,因?yàn)樗鼈儍蓚€(gè)一個(gè)只能被CPU讀出數(shù)據(jù),一個(gè)只能被CPU寫入數(shù)據(jù)。
臺(tái)達(dá)變頻器接受的RS485信號(hào),單片機(jī)輸出的是TTL電平。因此要變頻器和單片機(jī)通訊要有通訊轉(zhuǎn)換芯片,目前常用的RS485芯片有MAX485、MAX483,S75176等。在本例子中采用了MAX485和S75176芯片,同時(shí)電路圖中預(yù)留了RS232電路的接口,方便單片機(jī)以RS232通訊方式和其他外設(shè)進(jìn)行通訊。主單片機(jī)采用ATMEL公司的AT89C52單片機(jī)。
3.2 軟件調(diào)試界面
單片機(jī)程序通過在KEIL環(huán)境下開發(fā)編譯的,調(diào)試界面如下:
3.3通訊源程序
/*********************************************************
* 本程序是AT89C52單片機(jī)和臺(tái)達(dá)B系列、M系列、L系列、F系列通訊例子.
* 通訊協(xié)議ASCII格式,幀格式為“1位起始位、7位數(shù)據(jù)、奇偶位(或無)、結(jié)束位”共10位.
* 臺(tái)達(dá)VFD系列變頻器一幀的通訊格式:第0位:“:”起始位;第1,2位:站號(hào)地址.
* 第3,4位:功能號(hào)碼;第5,6,7,8位:寫入的地址;第9,10,11,12位:傳輸數(shù)據(jù).
* 第13,14位:校驗(yàn)碼;第15,116位:停止0X0D,0X0A.
* 該程序通過向2000H地址寫入0012H數(shù)據(jù)來啟動(dòng)變頻器;向2000H地址寫入0012H數(shù)據(jù)來停止變頻器.
* 由P1.0來控制MCU發(fā)送數(shù)據(jù),P2來控制通訊指示燈.*
* 編譯環(huán)境:KEIL V3.30
* 作者:劉元?jiǎng)?BR>* 部門:中達(dá)電通股份有限公司AMD產(chǎn)品處
* 編寫時(shí)間:2008.1.8
* 修改時(shí)間:
* 修改內(nèi)容:
**********************************************************/
#include <reg51.h>
char send[17]={0};
char send1[8]={0x01,0x06,0x01,0x00,0x17,0x70,0x86,0x22};
char count;
int temp;
bit motor_flag=0;
/*********ASCII格式變量定義**********/
char number ; //設(shè)備站號(hào)
char function ; //功能
char address_h; //地址高
char address_l; //地址低
char data_h ; //數(shù)據(jù)
char data_l ; //數(shù)據(jù)
char CRC_H; //校驗(yàn)
char CRC_L; //校驗(yàn)
char send_temp;
int sum_temp;
/*
函數(shù)AS