5篇485通信的应用有PIC源程序与协议说明Word文档下载推荐.docx
- 文档编号:1478050
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:33
- 大小:146.68KB
5篇485通信的应用有PIC源程序与协议说明Word文档下载推荐.docx
《5篇485通信的应用有PIC源程序与协议说明Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《5篇485通信的应用有PIC源程序与协议说明Word文档下载推荐.docx(33页珍藏版)》请在冰点文库上搜索。
//-----------------------------------------------------------------
voidDelayUS(uchardelay)
{
while(--delay);
}
//-------------------------
voidDelayMS(uintdelay)
uinti;
for(;
delay>
0;
delay--)
for(i=0;
i<
453;
i++)
;
//--------------------------------
voidUSART_Init(void)
SPBRG=77;
//高速波特率960012MHzSPBRG=0x4D
//SPBRG=129;
//高速波特率960020MHz
TXSTA=0x04;
//TXSTA:
CSRCTX9TXENSYNC--BRGHTRMTTX9D
//0000100
RCSTA=0x80;
//RCSTA:
SPENRX9SRENCRENADDENFERROERRRX9D
//10000000
RCIE=1;
//开接收中断
TXEN=1;
CREN=1;
//接收使能
TRISC6=1;
//设置为输入状态
TRISC7=1;
//TXIE=1;
//开发送中断
TRISC3=0;
//设置为输出状态
TRISC2=0;
RE=0;
DE=0;
//PEIE=1;
//开外设中断
//GIE=1;
//开总中断
//-------------------------------------------
voidinit()
TRISD=0x00;
//RD口为输出模式;
PORTD=0xFF;
//灯全灭
//OPTION寄存器:
RBPUINTEDGT0CST0SEPSAPS2PS1PS0
//前两位定时器0未用,T0CS为定时器工作方式选择位,1为计数方式从T0CK1取脉冲,
//0为定时方式,选择内部时钟;
T0SE为计数方式时边沿触发方式选择位;
PSA为分频器
//分频选择位;
0:
分频器分配给T0,1:
分配给看门狗WDT;
PS2PS1PS0为分频比选择位;
//OPTION=0x08;
//定时器0为定时方式,分频器分频给看门狗,而不分配给定时器0,
OPTION=0x01;
//定时器0为定时方式,公频器分频给定时器0;
分频为1:
4
TMR0=106;
//定时器赋初值,定时200us12M且分频比为1:
INTCON=0xE0;
//采用中断方式;
开总中断及定时器0的中断,同时清T0IF;
//INTCON寄存器:
GIEPEIET0IEINTERBIET0IFINTFRBIF
//GIE总中断;
1开全局总中断,0为关闭;
PEIE外围中断位;
1为允许;
T0IE:
T0溢出中断
//允许位;
1为允许溢出中断。
0为禁止;
INTE:
外部中断允许位;
1为上升沿触发中断,0为下降沿触发中断;
//RBIE:
RB7--RB4电平变化中断允许位;
1为允许PORTB电平变化中断;
0为禁止;
//T0IF:
T0溢出中断标志位;
INTF:
外部中断标志位;
RBIF:
RB7--RB4电平发生变化标志位;
}
//------------------------------------------
voidinterruptSer(void)
if(T0IF)
{
T0IF=0;
TMR0=106;
counter++;
if(counter==5000)
counter=0;
sec++;
if(sec>
99)
sec=0;
RE=1;
//SN75176关闭接收
DE=1;
//SN75176开启发送
TXREG=sec;
while(!
TRMT);
//SN75176开启接收
//SN75176关闭发送
}
if(RCIF==1)//有数据接收
rece_data=RCREG;
//读取数据
//---------------------------------------
//-------------------------------------
voidDisplay(ucharchosebit,uchardata)
ADCON1=0x8E;
//设置PORTA0为模拟输入,其他为IO口
TRISA&
=0xE1;
//设置PORTA1~PORTA4为输出模式
TRISD=0x00;
//数据线配置为输出
PORTA=0xFF;
PORTA&
=~(0x02<
<
chosebit);
PORTD=data;
//送字型
DelayUS(50);
//延时
//关显示
//==============================================================
voidmain(void)
USART_Init();
init();
while
(1)
Display(0,disp[rece_data/10]);
Display(1,disp[rece_data%10]);
Display(2,disp[sec/10]);
Display(3,disp[sec%10]);
math.h>
#include"
stdio.h"
#definePORTAIT(adr,bit)((unsigned)(&
adr)*8+(bit))//绝对位操作指令;
staticbitDI@(PORTAIT(PORTB,0);
staticbitCK@(PORTAIT(PORTB,1);
staticbitLA@(PORTAIT(PORTB,2);
staticbitOE@(PORTAIT(PORTB,3);
#defineRERC2//接收允许控制位
#defineDERC3//发送允许控制位
ucharredata;
//---------------------------------------------------
voidSEND_Byte(uchardat);
voidSEND_DM114_DA(ucharDAT);
voiddelay50us(ucharz);
//-------------------------------------------------
voiddelay50us(ucharz)
uchari,j;
for(j=0;
j<
z;
j++)
6;
voidSEND_Byte(uchardat)
if(dat==0)
//DI=0;
RB0=0;
else
DI=1;
//RB0=1;
voidSEND_DM114_DA(ucharDAT)
uchari;
OE=1;
//RB3=1;
LA=0;
//RB2=0;
for(i=0;
8;
SEND_Byte(DAT&
0x80);
DAT<
=1;
CK=0;
CK=1;
//RB1=0;
//RB1=1;
LA=1;
OE=0;
//RB2=1;
//RB3=0;
//---------------------------------------------------------
//----------------------------------------------------------
PEIE=1;
GIE=1;
TRISB=0x00;
//B口为输出
//-----------------------------------------------
voidinterruptcom(void)
if(RCIE&
&
RCIF)
redata=RCREG;
//SN75176开启发送
TXREG=redata;
//SN75176关闭发送
SEND_DM114_DA(redata);
//------------------------------------------------
uchari,j;
//for(i=0;
100;
//delay50us(60);
//j++;
//if(j>
250)
//j=0;
//SEND_DM114_DA(j);
9.1通讯概述
本公司系列变频器向用户提供工业控制中通用的RS485通讯接口。
通讯协议采用MODBUS标准通讯协议,该变频器可以作为从机与具有相同通讯接口并采用相同通讯协议的上位机(如PLC控制器、PC机)通讯,实现对变频器的集中监控,另外用户也可以使用一台变频器作为主机,通过RS485接口连接数台本公司的变频器作为从机。
以实现变频器的多机联动。
通过该通讯口也可以接远控键盘。
实现用户对变频器的远程操作。
本变频器的MODBUS通讯协议支持两种传送方式:
RTU方式和ASCII方式,用户可以根据情况选择其中的一种方式通讯。
下文是该变频器通讯协议的详细说明。
9.2通讯协议说明
9.2.1通讯组网方式
(1)变频器作为从机组网方式:
图9-1从机组网方式示意图
(2)多机联动组网方式:
主机HD1000
RS485
从机HD1000
图9-2多机联动组网示意图
9.2.2通信协议方式
该变频器在RS485网络中既可以作为主机使用,也可以作为从机使用,作为主机使用时,可以控制其它本公司变频器,实现多级联动,作为从机时,PC机或PLC可以作为主机控制变频器工作。
具体通讯方式如下:
(1)变频器为从机,主从式点对点通信。
主机使用广播地址发送命令时,从机不应答。
(2)变频器作为主机,使用广播地址发送命令到从机,从机不应答。
(3)用户可以通过用键盘或串行通信方式设置变频器的本机地址、波特率、数据格式。
(4)从机在最近一次对主机轮询的应答帧中上报当前故障信息。
9.2.3通讯接口方式
通讯为RS485接口,异步串行,半双工传输。
默认通讯协议方式采用ASCII方式。
默认数据格式为:
1位起始位,7位数据位,2位停止位。
默认速率为9600bps,通讯参数设置参见P3.09~P3.12功能码。
9.3ASCII通讯协议
字符结构:
10位字符框(ForASCII)
(1-7-2格式,无校验)
(1-7-1格式,奇校验)
(1-7-1格式,偶校验)
11位字符框(ForRTU)
(1-8-2格式,无校验)
(1-8-1格式,奇校验)
(1-8-1格式,偶校验)
通讯资料结构:
ASCII模式
桢头
起始字符=“:
”(3AH)
AddressHi
通讯地址:
8位地址由2个ASCII码组合
AddressLo
FunctionHi
功能码:
FunctionLo
DATA(n-1)
资料内容:
n*8位资料内容由2*n个ASCII码组合,高位在前,低位在后,n<
=4,最大8个ASCII码
……………
DATA0
LRCCHKHi
LRC校验码:
8位校验码由2个ASCII码组合。
LRCCHKLo
ENDHi
结束字符:
ENDHi=CR(0DH),ENDLo=CR(0AH)
ENDLo
RTU模式:
START
保持无输入信号大于等于10ms
Address
8-bit二进制地址
Function
N*8-bit资料,N<
=8,最大8个字节
CRCCHKLow
CRC校验码
CRCCHKHigh
16-bitCRC校验码由2个8-bit二进制组合
END
保持无出入信号大于等于10ms
00H:
所有变频器广播(broadcast)
01H:
对01地址变频器通讯。
0FH:
对15地址变频器通讯。
10H:
对16地址变频器通讯。
以此类推……….,最大可到254(FEH)。
功能码(Function)与资料内容(DATA):
03H:
读出寄存器内容。
06H:
写入一笔资料到寄存器。
08H:
回路侦测。
功能码03H:
读出一个寄存器内容:
例如:
读出寄存器地址2104H内容(输出电流):
ASCII模式:
询问信息字符串格式
回应信息字符串格式
“:
”----3AH
地址
“0”----30H
“1”----31H
功能码
“3”----33H
内容
“2”----32H
“4”----34H
2104H地址内容
LRCCHECK
“D”----44H
“7”----37H
CR----0DH
LF----0AH
询问信息格式
回应信息格式
01H
03H
21H
04H
00H
CRCCHECKLow
E8H
0EH
CRCCHECKHigh
4BH
37H
功能码06H:
对变频器地址01H,写P0.02=50.00HZ功能码。
“6”----36H
“8”----38H
“5”----35H
“C”----43H
06H
02H
13H
88H
25H
5CH
命令码:
08H通讯回路测试
此命令用来测试主控设备与变频器之间通讯是否正常。
变频器将收到的资料原封不动送给主控设备。
“E”----45H
08H
41H
校验码:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 485 通信 应用 PIC 源程序 协议 说明