首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
首 页 新闻动态 产品中心 方案与应用 技术文摘 资料下载 关于我们 台达网站 在线视频
台达变频器和C51单片机通讯

中达电通股份有限公司
收藏本文     查看收藏
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;
            }
}
/*******************************************************************************
 
 
台达相关解决方案:
台达堆垛机方案:精准是王道 平稳更高效
不负期望 强大性能 | 台达ASDA-A3伺服高端应用面面说
云端漫游智能制造 低碳方案尽在眼前!
看台达三招化解数据中心升级难
云课堂 | 听数据中心专家开讲新一代绿色微模块
建设低碳绿色智能工厂,从优化冷水机开始!
台达在这个智慧园区上展现的“硬功夫“和”软实力”
台达浇铸控制解决方案 助力发泡橡胶制程大升级
台达为数据托管跨国公司提供 28 MW 关键电力解决方案
低碳模式 绿色主张 台达方案与你分享
台达LED直流智能照明解决方案,点亮家门口的“指路灯”
深化“双碳”牵引目标 台达为智能厂务增加绿色助力
更多台达解决方案...
通过中华工控网在线留言中达电通股份有限公司:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络
 
中华工控网 GKong.com制作发布 广告联系