用户名密码 太空模具网  | 宇宙五金网 | 星星电子网 | 银河汽车网 | 人才频道 | 技术休闲
 
首    页
价格行情
供求商机 产 品 库
求职信息 招聘信息
企 业 库 机床百科 行业资讯
招标信息 展会信息   
人力资讯 图书频道 网上课堂
软件下载 视频教育 网上助手
数控系统 变频器 稳压器 伺服系统
机床附件 机床仪表 机床刀夹具

车床

铣床

刨床

磨床

镗床

钻床

冲床

拉床

锯床

雕刻机

加工中心

电火花机

剪板机

折弯机
市场行情:广东 浙江 江苏 北京 上海 山东 安徽 天津 河北 重庆 台湾 湖北 辽宁 四川 陕西 福建 吉林 黑龙江 山西 云南 贵州
<% if pyg2("img")<>"" then%><%end if%>
 中国数控机床网 > 新闻中心 > 新品与技术    
台达变频器和C51单片机通讯
NEWS.C-CNC.COM   2008-4-26    来源:中达电通股份有限公司AMD产品处
作者:刘元刚    阅读:生意人使用生意宝,生意越来越旺盛!
摘  要:台达VFD全系列变频器均能够通过通讯进行参数的读写和控制,随着单片机功能的越来越强大,在嵌入控制中的应用更加的广泛。如何实现单片机和变频器之间的通讯是本文的介绍重点。同时本文给出了单片机和变频器通讯的硬件电路图和通讯源程序C51,有助于读者掌握台达变频器在嵌入式系统的通讯应用技术。

关键词:变频器  C51 单片机  

1 引言

  台达VFD全系列变频器和C51单片机通讯采用串行异步原理。通讯速度用波特率表示。 波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。

8051 单片机 串行 异步 通讯的方式用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。用这种格式表示字符,则字符可以一个接一个地传送。在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。

2 通讯约规

2.1  台达VFD变频器通讯约规

(1)台达变频器通讯字符格式。台达变频器通讯字符格式有ASCII和RTU格式,如图1所示。

图1  台达变频器通讯字符格式

(2)台达变频器通讯格式的表格描述。台达变频器通讯格式的表格描述参见下表。

表 台达变频器通讯格式的表格描述

3 单片机通讯设计

3.1 C52 单片机的串行接口结构

8051串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的8051多机系统也可以通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。

  台达变频器接受的RS485信号,单片机输出的是TTL电平。因此要变频器和单片机通讯要有通讯转换芯片,目前常用的RS485芯片有MAX485、MAX483,S75176等。在本例子中采用了MAX485和S75176芯片,同时电路图中预留了RS232电路的接口,方便单片机以RS232通讯方式和其他外设进行通讯。主单片机采用ATMEL公司的AT89C52单片机。

3.2 软件调试界面

     单片机程序通过在KEIL环境下开发编译的,调试界面如下:

3.3通讯源程序

/*********************************************************

*  本程序是AT89C52单片机和台达B系列、M系列、L系列、F系列通讯例子.

*  通讯协议ASCII格式,帧格式为“1位起始位、7位数据、奇偶位(或无)、结束位”共10位.

*  台达VFD系列变频器一帧的通讯格式:第0位:“:”起始位;第1,2位:站号地址.

*  第3,4位:功能号码;第5,6,7,8位:写入的地址;第9,10,11,12位:传输数据.

*  第13,14位:校验码;第15,116位:停止0X0D,0X0A.

*  该程序通过向2000H地址写入0012H数据来启动变频器;向2000H地址写入0012H数据来停止变频器.

*  由P1.0来控制MCU发送数据,P2来控制通讯指示灯.*

*  编译环境:KEIL V3.30

*  作者:刘元刚

*  部门:中达电通股份有限公司AMD产品处

*  编写时间:2008.1.8

*  修改时间:

*  修改内容:

**********************************************************/

#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 ;     //设备站号

char function ;   //功能

char address_h;   //地址高

char address_l;   //地址低

char  data_h ;    //数据

char  data_l ;    //数据

char CRC_H;         //校验

char CRC_L;       //校验

char send_temp;

int  sum_temp;

/*

     函数ASCII()实现了台达变频器通讯协议转换为ASCII协议格式的功能。

*/

void ASCII(void);

/*

  init_serial()函数串行通讯初始化函数

  实现了:波特率的设定,定时器的选择,发送模式的选择

*/

void init_serial(void);

//函数ASCII7N2()以数据格式 7,N 2方式发送数据

void ASCII7N2(void);

//函数ASCII7O1()以数据格式 7,O 1方式发送数据

void ASCII7O1(void);

//函数ASCII7E1()以数据格式 7,E 1方式发送数据

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();//发送数据的处理

      ASCII7N2();//以通讯协议为ASCII 9600,7,N,2发送数据

      ASCII7O1();//以通讯协议为ASCII 9600,7,O,1发送数据

      ASCII7E1();//以通讯协议为ASCII 9600,7,E,1发送数据

      for(temp=0;temp<10000;temp++)

//发送完数据之后延时一段时间

        {;}

      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;

      }

      }        

   }    

}

/*******************************************************************************

******

函数nop名称:void init_serial(void)

函数功能:

参数列表:

返回值  :

影响资源:

实现过程:

********************************************************************************

*****/

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;

          }

}

/*******************************************************************************

函数nop名称:void ASCII(void)  该函数应该作精简,可以考虑用结构来实现目前仅仅是测试版本

函数功能:

参数列表:

返回值  :

影响资源:

实现过程:

*******************************************************************************/

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 结束语

     随着嵌入式技术的飞速发展,单片机与变频器的通讯设计技术变得越来越有强烈的工程实用意义。在定制化或者客制化应用系统里的单片机与变频器通讯集成系统不但可以有更加紧凑经济灵活的体系结构,特别是还有利于形成具有独立技术特点和独立知识产权的主权增值产品。
 ■ 相关链接
 · 台达变频器和C51单片机通讯
 · 台达变频器多泵恒压供水应用及电机切换问
 · 2008台达媒体见面会在江苏吴江盛大隆
 · 台达伺服系统在石英晶体切割设备上应用
 · 借力台达自动化 超声波业者迎来新升级
 · 台达即将亮相北京数控机床展
 · 台达自动化将“灿”展2008国际橡塑展
 · 基于台达运动控制技术的LED组件检测机
 · 台达自动化:2008更精彩
热点新闻
机电一体化毕业论文
正版CAD成为制造业企业新宠
CAD正版化浪潮正猛CAXA助力轻松实现
手机MP4怎样下载的?
国内机床企业名录
上市企业CAD正版选择CAXA
divx编码解码器下载站
什么是数控机床?
2003年度全国工业重点行业效益十佳企业名单
五菱集团CAD正版选择CAXA
Ug教程下载网址大全
数控专业毕业论文范文网址
MasterCAM下载清单
数控车床编程实例
计算机基础知识试题
2004年9月机械零部件厂商企业推荐
机电一体化专业毕业生就业率连创新高
无刷直流电机原理
华中数控车床系统图片
安利传销内幕揭秘

最新新闻
CCMT:汇聚前沿技术和理念
齐重数控自主研发世界最大高精度风电成套加工数控机床
UG 4.0软件在模具字码标识NC编程中的应用
机床可以租赁 上机品牌不能丢
德国机械制造业产出可能放缓
CCMT 2008:国产数控机床行业发展的风向标
在车床上用的一种大型内孔抛光装置
海华鼎与中信重工合作生产超重型数控卧式车床
中国数控机床展:齐二机床收获大订单
数字化制造技术提升产品设计水平
机床业创新硕果累累 一批新产品研发获重大进展
世界先进的磨床类设备已大量涌入中国
天田“全球首发第一号展机”亮相CCMT 2008
350COMB1-CNC可转位刀片磨床
好利旺机械推出借助热泵节能70%以上的精密空调器
工艺系统误差综合补偿原理及其应用
昆明铣床厂亮相CCMT2008
2007年中国机械工业百强 汽车工业三十强企业信息发布会隆重举行
数控机床误差的圆轨迹运动激光非接触测量新方法
试水“大飞机”装备制造业产业升级契机凸显
中国数控机床网关于本网 - 广告刊登-服务中心-网页设计- 域名空间-投稿信箱- 联系我们-投诉举报-友情链接
版权所有:泰州市德基软件公司   网络实名:中国数控机床网www.c-cnc.com
      腾讯QQ:498808488      客户服务热线:0523-86228810  86229597
传真:0523-86229597   E-mail:
jc@c-cnc.com
经营许可证编号:苏B2-20050154 苏ICP备05030923号