51单片机与力控modbus通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网上关于单片机和力控modbus通信的实例很少,关键并不是modbus协议而是力控与单片机连接的设置,下面的程序是基于51单片机做的。在正个调试过程中由于我们不清楚力控发送给单片机的请求数据格式,我们可以用串口调试工具进行串口调试,将力控发送请求显示在串口调试工具中,其中单片机的程序如下

#include

#include

#define uchar unsigned char //一个字节

#define uint unsigned int // 两个字节

void send_char(unsigned char txd);

uint rece_count=0;

uint send_flag=0;

uchar rece_buf[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

uint i;

/*串行口初始化*/

void chushi()

{SCON=0x50; //串口工作方式1,即10位异步

PCON=0x00;//波特率不倍增

TMOD=0x20;

TH1=TL1=0xfa;

TR1=1;

}

/*主程序*/

main()

{chushi();

rece_count=0;

while(1)

{

if(RI)

{RI=0;

if(rece_count<8)

{

rece_buf[rece_count]=SBUF;

rece_count++;

}

}

if(rece_count==8)

{

send_flag=1;

}

while(send_flag==1)

{ for(i=0;i<8;i++)

{SBUF=rece_buf[i];

while(TI==0) ;

TI=0;

}

}

}

}

打开力控运行,将发送的数据保存到单片机中,然后打开串口调试工具,显示如下:

我们看力控发送请求的格式:01 03 ff ff 00 01 84 2e,最后的两位crc是高位在前,低位在后。Crc的高低位的前后顺序一定要注意,尤其在单片机编程中。

单片机程序:

#include

#include

#define uchar unsigned char //一个字节

#define uint unsigned int // 两个字节

void send_char(unsigned char txd);

uchar send_buf[7];

uchar rece_buf[8];

uint i;

uint crc_data;

uchar rece_count=0;

uchar send_flag=0;

/*串行口初始化*/

void chushi()

{SCON=0x50; //串口工作方式1,即10位异步

PCON=0x00;//波特率不倍增

TMOD=0x20;

TH1=TL1=0xfa; //22.1184M晶振

TR1=1;

}

/*CRC校验表*/

const uchar code auchCRCHi[] = { //数组定义必须加code ,否则出现空间不够用的情况0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,

0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,

0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,

0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,

0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

相关文档
最新文档