久久久91-久久久91精品国产一区二区-久久久91精品国产一区二区三区-久久久999国产精品-久久久999久久久精品

ACS880-07C
關(guān)注中國自動化產(chǎn)業(yè)發(fā)展的先行者!
隨著會計的發(fā)展,追蹤碳足跡
CAIAC 2025
2024
工業(yè)智能邊緣計算2024年會
2023年工業(yè)安全大會
OICT公益講堂
當(dāng)前位置:首頁 >> 案例 >> 案例首頁

案例頻道

臺達(dá)變頻器和C51單片機(jī)通訊
  • 企業(yè):中達(dá)電通股份有限公司     行業(yè):礦業(yè)     領(lǐng)域:機(jī)器人    
  • 點擊數(shù):2326     發(fā)布時間:2008-04-21 16:35:41
  • 分享到:


摘  要:臺達(dá)VFD全系列變頻器均能夠通過通訊進(jìn)行參數(shù)的讀寫和控制,隨著單片機(jī)功能的越來越強(qiáng)大,在嵌入控制中的應(yīng)用更加的廣泛。如何實現(xiàn)單片機(jī)和變頻器之間的通訊是本文的介紹重點。同時本文給出了單片機(jī)和變頻器通訊的硬件電路圖和通訊源程序C51,有助于讀者掌握臺達(dá)變頻器在嵌入式系統(tǒng)的通訊應(yīng)用技術(shù)。

關(guān)鍵詞:變頻器  C51 單片機(jī) 

1 引言

    臺達(dá)VFD全系列變頻器和C51單片機(jī)通訊采用串行異步原理。通訊速度用波特率表示。波特率即數(shù)據(jù)傳送的速率,其定義是每秒鐘傳送的二進(jìn)制數(shù)的位數(shù)。例如,數(shù)據(jù)傳送的速率是120字符/s,而每個字符如上述規(guī)定包含10數(shù)位,則傳送波特率為1200波特。通訊方向:在串行通訊中,把通訊接口只能發(fā)送或接收的單向傳送方法叫單工傳送;而把數(shù)據(jù)在甲乙兩機(jī)之間的雙向傳遞,稱之為雙工傳送。在雙工傳送方式中又分為半雙工傳送和全雙工傳送。半雙工傳送是兩機(jī)之間不能同時進(jìn)行發(fā)送和接收,任一時該,只能發(fā)或者只能收信息。

    8051單片機(jī)串行異步通訊的方式用一個起始位表示字符的開始,用停止位表示字符的結(jié)束。其每幀的格式如下:在一幀格式中,先是一個起始位0,然后是8個數(shù)據(jù)位,規(guī)定低位在前,高位在后,接下來是奇偶校驗位(可以省略),最后是停止位1。用這種格式表示字符,則字符可以一個接一個地傳送。在異步通訊中,CPU與外設(shè)之間必須有兩項規(guī)定,即字符格式和波特率。字符格式的規(guī)定是雙方能夠在對同一種0和1的串理解成同一種意義。原則上字符格式可以由通訊的雙方自由制定,但從通用、方便的角度出發(fā),一般還是使用一些標(biāo)準(zhǔn)為好,如采用ASCII標(biāo)準(zhǔn)。

2 通訊約規(guī)

    2.1 臺達(dá)VFD變頻器通訊約規(guī)

    (1)臺達(dá)變頻器通訊字符格式。臺達(dá)變頻器通訊字符格式有ASCII和RTU格式,如圖1所示。





圖1 臺達(dá)變頻器通訊字符格式

    (2)臺達(dá)變頻器通訊格式的表格描述。臺達(dá)變頻器通訊格式的表格描述參見表1。

    表1臺達(dá)變頻器通訊格式的表格描述
 

3 單片機(jī)通訊設(shè)計

    3.1 C52單片機(jī)的串行接口結(jié)構(gòu)

    8051串行接口是一個可編程的全雙工串行通訊接口。它可用作異步通訊方式(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ā)送寄存器和接收寄存器。它們有相同名字和地址空間,但不會出現(xiàn)沖突,因為它們兩個一個只能被CPU讀出數(shù)據(jù),一個只能被CPU寫入數(shù)據(jù)。

    臺達(dá)變頻器接受的RS485信號,單片機(jī)輸出的是TTL電平。因此要變頻器和單片機(jī)通訊要有通訊轉(zhuǎn)換芯片,目前常用的RS485芯片有MAX485、MAX483,S75176等。在本例子中采用了MAX485和S75176芯片,同時電路圖中預(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ī)和臺達(dá)B系列、M系列、L系列、F系列通訊例子.
*  通訊協(xié)議ASCII格式,幀格式為“1位起始位、7位數(shù)據(jù)、奇偶位(或無)、結(jié)束位”共10位.
*  臺達(dá)VFD系列變頻器一幀的通訊格式:第0位:“:”起始位;第1,2位:站號地址.
*  第3,4位:功能號碼;第5,6,7,8位:寫入的地址;第9,10,11,12位:傳輸數(shù)據(jù).
*  第13,14位:校驗碼;第15,116位:停止0X0D,0X0A.
*  該程序通過向2000H地址寫入0012H數(shù)據(jù)來啟動變頻器;向2000H地址寫入0012H數(shù)據(jù)來停止變頻器.
*  由P1.0來控制MCU發(fā)送數(shù)據(jù),P2來控制通訊指示燈.*
*  編譯環(huán)境:KEIL V3.30
*  作者:劉元剛
*  部門:中達(dá)電通股份有限公司AMD產(chǎn)品處
*  編寫時間:2008.1.8
*  修改時間:
*  修改內(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è)備站號
char function ;   //功能
char address_h;   //地址高
char address_l;   //地址低
char  data_h ;    //數(shù)據(jù)
char  data_l ;    //數(shù)據(jù)
char CRC_H;       //校驗
char CRC_L;       //校驗
char send_temp;
int  sum_temp;
/*
     函數(shù)ASCII()實現(xiàn)了臺達(dá)變頻器通訊協(xié)議轉(zhuǎn)換為ASCII協(xié)議格式的功能。
*/
void ASCII(void);
/*
 init_serial()函數(shù)串行通訊初始化函數(shù)
 實現(xiàn)了:波特率的設(shè)定,定時器的選擇,發(fā)送模式的選擇
*/
void init_serial(void);
//函數(shù)ASCII7N2()以數(shù)據(jù)格式 7,N 2方式發(fā)送數(shù)據(jù)
void ASCII7N2(void);
//函數(shù)ASCII7O1()以數(shù)據(jù)格式 7,O 1方式發(fā)送數(shù)據(jù)
void ASCII7O1(void);
//函數(shù)ASCII7E1()以數(shù)據(jù)格式 7,E 1方式發(fā)送數(shù)據(jù)
void ASCII7E1(void);

main()
{
     init_serial();
/***********VFD系列變頻器通訊資料初始化*****/
     number=0x01;
     function=0x06;
     address_h=0x20;
     address_l=0x00;
     data_h=0X00;
     data_l=0x12;
/******************************************/
     while(1)
  {
   if(P1!=0XFF)
   {
  for(temp=0;temp<3000;temp++)//延時一段時間
   {;}
   if(P1!=0XFF)
   {
    P2=0;
    TI=0;
   ASCII();//發(fā)送數(shù)據(jù)的處理

   ASCII7N2();//以通訊協(xié)議為ASCII 9600,7,N,2發(fā)送數(shù)據(jù)
   ASCII7O1();//以通訊協(xié)議為ASCII 9600,7,O,1發(fā)送數(shù)據(jù)
   ASCII7E1();//以通訊協(xié)議為ASCII 9600,7,E,1發(fā)送數(shù)據(jù)
   
   for(temp=0;temp<10000;temp++)
//發(fā)送完數(shù)據(jù)之后延時一段時間
    {;}
   for(temp=0;temp<10000;temp++)
    {;}
   motor_flag=~motor_flag;       //完成了變頻器啟動和停止之間的切換
   if(motor_flag==1){data_l=0x11;}
   else{data_l=0x12;}
   P1=0XFF;
   P2=0XFF;
   }
   }       
  } 
}
/*******************************************************************************
******
函數(shù)nop名稱:void init_serial(void)
函數(shù)功能:
參數(shù)列表:
返回值  :
影響資源:
實現(xiàn)過程:
********************************************************************************
*****/
void init_serial(void)
{
    SCON=0x40;//工作在方式1,
 TMOD=0x20;
 TH1=0xFD; //波特率為9600,晶振11.0592MHZ
 TL1=0xFD; 
    TR1=1;        //啟動定時器1
 P1=0XFF;
}

void ASCII7N2(void)
{
     for(count=0;count<17;count++)
    {
    SBUF=send[count]|0X80;
    while(TI==0);
    TI=0;
       }
}
void ASCII7O1(void)
{
 for(count=0;count<17;count++)
    {
   temp=0;
    ACC=send[count]&0X7F;
   send_temp=ACC;
   temp=P;
   send_temp=(temp<<7)|send_temp;
   SBUF=send_temp;
    while(TI==0);
    TI=0;
       }
}
void ASCII7E1(void)
{
 for(count=0;count<17;count++)
    {
   temp=0;
    ACC=send[count]&0X7F;
   send_temp=ACC;
   temp=~P;
   send_temp=(temp<<7)|send_temp;
   SBUF=send_temp;
    while(TI==0);
    TI=0;
       }
}
/*******************************************************************************
函數(shù)nop名稱:void ASCII(void)  該函數(shù)應(yīng)該作精簡,可以考慮用結(jié)構(gòu)來實現(xiàn)目前僅僅是測試版本
函數(shù)功能:
參數(shù)列表:
返回值  :
影響資源:
實現(xiàn)過程:
*******************************************************************************/
void ASCII()     
{
    send[0]=0x3A;
    send[1]=((number&0xF0)>>4)+0x30;
    if(send[1]>0x39)(send[1]=(send[1]-0x39)+0x40);
    send[2]=((number&0x0F)+0x30);
    if(send[2]>0x39)(send[2]=(send[2]-0x39)+0x40);
    send[3]=((function&0xF0)>>4)+0x30;
    if(send[3]>0x39)(send[3]=(send[3]-0x39)+0x40);
    send[4]=((function&0x0F)+0x30);
    if(send[4]>0x39)(send[4]=(send[4]-0x39)+0x40); 
    send[5]=((address_h&0xF0)>>4)+0x30;
    if(send[5]>0x39)(send[5]=(send[5]-0x39)+0x40);
    send[6]=((address_h&0x0F)+0x30);
    if(send[6]>0x39)(send[6]=(send[6]-0x39)+0x40); 
    send[7]=((address_l&0xF0)>>4)+0x30;
    if(send[7]>0x39)(send[7]=(send[7]-0x39)+0x40);
    send[8]=((address_l&0x0F)+0x30);
    if(send[8]>0x39)(send[8]=(send[8]-0x39)+0x40);
    send[9]=((data_h&0xF0)>>4)+0x30;
    if(send[9]>0x39)(send[9]=(send[9]-0x39)+0x40);
    send[10]=((data_h&0x0F)+0x30);
    if(send[10]>0x39)(send[10]=(send[10]-0x39)+0x40);
    send[11]=((data_l&0xF0)>>4)+0x30;
    if(send[11]>0x39)(send[11]=(send[11]-0x39)+0x40);
    send[12]=((data_l&0x0F)+0x30);
    if(send[12]>0x39)(send[12]=(send[12]-0x39)+0x40);
    sum_temp=number+function+address_h+address_l+data_h+data_l;
    sum_temp=(~sum_temp)+1 ;
    send[13]=((sum_temp&0xF0)>>4)+0x30;
    if(send[13]>0x39)(send[13]=(send[13]-0x39)+0x40);
    send[14]=((sum_temp&0x0F)+0x30);
    if(send[14]>0x39)(send[14]=(send[14]-0x39)+0x40);
    send[15]=0x0D;
    send[16]=0X0A;     
 }

4 結(jié)束語

    隨著嵌入式技術(shù)的飛速發(fā)展,單片機(jī)與變頻器的通訊設(shè)計技術(shù)變得越來越有強(qiáng)烈的工程實用意義。在定制化或者客制化應(yīng)用系統(tǒng)里的單片機(jī)與變頻器通訊集成系統(tǒng)不但可以有更加緊湊經(jīng)濟(jì)靈活的體系結(jié)構(gòu),特別是還有利于形成具有獨立技術(shù)特點和獨立知識產(chǎn)權(quán)的主權(quán)增值產(chǎn)品。

作者簡介:

    劉元剛   中達(dá)電通股份有限公司AMD產(chǎn)品處   工程師

熱點新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 免费国内精品久久久久影院 | 久久www免费人成看国产片 | 亚洲生活片 | 香蕉视频在线播放 | 久久精品国产99久久72 | 99精品国产美女福到在线不卡 | 亚洲一区二区约美女探花 | 欧美大黄特黄一级毛片 | 亚久久 | 国产精品久久网 | 免费看一级欧美毛片视频 | 国产精品分类视频分类一区 | 国自产精品手机在线视频香蕉 | 久久手机免费视频 | 一级日韩一级欧美 | 日韩亚洲欧美视频 | 国产欧美成人免费观看视频 | 欧美成人性色大片在线观看 | 三级国产精品一区二区 | 午夜视频偷拍在线观看免费 | 国产精品无码2021在线观看 | 亚洲无卡视频 | 999久久免费高清热精品 | 亚洲1区| 影音先锋5566中文源资源 | 1313午夜精品美女爱做视频 | 久久99国产精品免费观看 | 日本肥老太成熟 | 欧美大尺度aaa级毛片 | 秀人网艾小青国产精品视频 | 日本韩国欧美一区 | 秘书上班和老板啪啪中文字幕 | 午夜剧场福利社 | 九九综合视频 | 黄色小视频在线免费看 | 站长推荐精品午夜免费影院 | 国产视频福利一区 | 成人18xxxx网站 | 又黄又免费的视频 | 精品一区二区在线观看 | 精品国产91久久久久 |