PLC用485接口与单片机通讯方法:
单片机端采用的RS232串口而PLC上为RS485接口,二者阵脚定义和逻辑电平有所差别故完成二者之间的通讯需要其他器件来进行转换调整。
1.
PC/PPI线缆。
通过PC/PPI线缆来连接单片机和s7-200,数据通讯无误;
2.
RS232
-
RS485转接头。
转接头说明中RS232
接口是DCE方式,可以和DTE
终端设备串口直连,和DCE设备相连需要用交叉线连接。
关于串口设备连接线使用交叉线还是直连线的简单区分:
若线缆两端一公头一母头,则采用直连线;
若线缆两端同为公头或母头,则采用交叉线。
单片机UART转RS485,即串口接一个MAX485就可以了
PC端需要用USB转RS485的模块
软件上只要具有统一的通信握手协议就可以了
PC机的串口信号要通过max232装换为TTL信号,之后再通过max485芯片转换成485的A,B差分信号。单片机端通过max485芯片转化信号为串口输入。每个接入端建议接成自动收发的形式。这是物理层上的连接。之后可以定义上位机,下位机,通信地址,信息格式之类的协议。
PC机的串口是RS232的,要和RS485总线连接需要一个转换器,可以买波士生产的485转换器。距离不是太远,100米以内,可以买非隔离的转换器;如果距离较远的话,建议用隔离转换器。波士网址:
单片机需要配485芯片,MAX485就可以,接到单片机的UART上。需要接三根线:发送线、接收线、收发控制线。
线路可采用RVVSP2*1.0的电缆,终端电阻150欧就可以。
这个很简单,我来教你玩:
首先我们说下硬件接法,USB转485信号电路块(只要20元,贵了的都是坑你的),MAX485芯片,11.0592M晶振(这个频率的晶振产生的波特率误差低)
思路:利用串口中断方式对P0口的LED进行控制(我只是举例,程序你自己写)
程序如下:
#include reg51.h //选用晶振11.0592MHz
#define AddressID 0x31 //本机地址1
sbit RS485E=P3^7; //定义485的使能脚// RS5485E=0为接收状态 RS5485E=1为发送状态
sbit MAX485_DIR=P3^7;
main()
{
//****************通讯设置
SCON = 0xF0; //REN=1允许串行接受状态,串口工作模式3,SM2=1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80; //波特率提高一倍
IP=0x10; //串口优先级高
TH1 = 0xf4; //fa // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (11.0592M)
TL1 = 0xf4;
TR1 = 1; //开启定时器1
EA = 1; // 开总中断
ES = 1; //开串口中断
RS485E=0; // RS5485E=0为接收状态 RS5485E=1为发送状态
while(1);
}
void counter4(void) interrupt 4 using 2 //串口中断
{
while(RI==0);
RI=0;
if(SBUF==0x2a) //2a的ASCII码是*
{
while(RI==0);
RI=0;
if(SBUF==AddressID) //发送本地地址31的ASCII码是1
{
while(RI==0);
RI=0;
if(SBUF==0x23) //23的ASCII码是#
{
P0=254; //P0=1111 1110,这里写你要对LED控制的程序
}
}
}
}
就是这么简单,已经调试通过,注释也有
PS:回答问题五天后的补充:解决了问题不追问,不给分,这个楼主不厚道,鉴定完毕 !
如果与电脑连接的话,直接用单片机通过max232与电脑连接就行啦
如果用485,电脑端、单片机都要加个485芯片转成485才能通信
电路图如图,
把其中一端改成电脑并加个232转485模块就行啦,
单片机端程序
#include reg51.h
#define uchar unsigned char
sbit sendkey=P2^0;
unsigned char tempy;
void init(void)//串口初始化
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
PCON=0x00;
TCON=0x40;
TR1=1;
SCON=0x50;
}
void main()
{
init();
while(1)
{
//------------------
//485接收字符
sendkey=0;
while(RI==0);
tempy=SBUF;
RI=0;
//------------------
//485发送字符
sendkey=1;
SBUF=tempy;
while(TI==0);TI=0;
//-------------------
}
}
好好检查下你的硬件
程序我没有改
运行效果见图
晶振11.0592MHz
max485pc与多个单片机设备通讯的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:max485pc与多个单片机设备通讯