基于单片机与PLC通讯系统的设计和实现

2014-08-11 22:18孙永波
科技创新与应用 2014年25期
关键词:单片机

摘 要:文章设计了单片机和PLC实现串行通信的硬件连接和软件变成的方法,借助于RS232转RS485电路,将PLC与单片机开发板进行连接,上位机就是单片机,数据通过单片机传送给PLC,从而准确的控制PLC上三相异步电机的正转和反转,PLC可以对所接收到的数据进行审核,充分的提升了所接收到数据的可靠性,之后便会将这些数据反馈给单片机,从而实现单片机和PLC相结合对电机的有效控制。

关键词:单片机;PLC;通讯系统的实现

1 基于单片机与PLC通讯系统软件的设计

1.1 通讯协议

要想实现基于单片机和PLC的通讯系统,主要是借助于单片机向PLC接收数据和下达命令的功能,通讯协议则应采用命令和响应的模式,一帧就是一次通信发送的一组数据,33个字符组成一帧,在这里应注意以下几点内容:(1)起始字符应用g表示,并且其也占用一个字符;(2)指令主要分为读和写两种类型,文章所采用的为写指令,其也占用一个字符;(3)采用十六进制的ASCII码来表示目标PLC的站地址,在PLC程序中应先将其设定好,并且应与单片机保持一致,应占用两个字符;(4)同样的应用十六进制的ASCII码来表示目标寄存器的地址,在PLC的内部应用4个字节来表示寄存器,这四个字节分别表示寄存器的类型和号码,共占用4个字符;(5)十六进制的ASCII码也可以表示要写入的数据,虽然它有16个字节,但最多只可写入8个字节,同时应将数据区填满;(6)BCC校验码的作用为检查传输的数据中是否存在错误,保证传输的准确性,其占用两个字符;(7)结束字符应用G表示,其与起始字符一样,占用一个字符。

在单片机接收到PLC的反馈信息后,无论是立即执行开始命令还是结束命令,它们的字符分别为g和G,此时电动机的状态信息就是状态信息。文章所采用的PLC的类型为S7-200,其支持多种通讯协议,比如说点对点接口协议、多点接口协议、PROFIBUS协议以及自由通信协议等,其都是支持的,在自由口的通信模式下,S7-200的串行通讯口就会受到相应应用程序的控制,如果其是出于RUN的方式下,在选择了自由口这一通信模式后,用户的程序就会通过接收中断和传送中断来接收指令和发送指令,此时就实现了用户程序对通信口操作的有效控制。

通过寄存器SMB130和SMB30来准确的设置PLC的通信参数,校验方式、波特率以及数据位等参数都应与单片机保持一致,其内部的运行流程为:程序开始-设置通讯端-等待接收-按照相应的协议处理数据-检验数据并进行相应的操作。

1.2 通讯协议的实现

1.2.1 单片机初始化部分子程序

void init_serialcomm(void)

{SCON=0x50; /*串口工作方式1,允許接收*/

TMOD=0x20; PCON=0x00; /*SMOD=0*/

TH1=0xFD; /*波特率为9.6K*/

TL1=0xFD; IE=0x95; /*开总中断,开串口中断, 开外部中断0,开外部中断1*/

……}

单片机发送数据的子程序

void send_data() interrupt 0 using 2

{EX0=0; delay1(4) ; if(KEY==0)

{ for(j=0;j<33;j++)

{SBUF=tab[j] ; /* 将数据发送到串口*/

while(!TI) ; /* 等待串口数据发送结束*/

TI=0; /*复位串口中断*/}}

EX0=1;}

单片机接收数据子程序

void intcom() interrupt 4 using 0 /*输入中断*/

{EX0=0; EX1=0;

For(i=0;i<21;++)

{If(RI); RI=0; rc[i]=SBUF;}}

1.2.2 PLC的部分通讯程序

(1)PLC的主程序部分

LD SM0.1

CALL SBR_0:SBR0 //首次扫描调用初始化程序

LDB=VB134, VB199 // 指令中的站地址与本站地址相符

AB=VB102, 6 //指令类型为写指令

A M0.0 //BCC校验码正确

CALL write:SBR1 // 调用写子程序

LD M0.1

CALL verify:SBR3 // 调用BCC 校验码子程序

LD SM0.0

CALL SBR_2:SBR2 //调用电动机控制子程序

LD SM4.5 //当端口空闲时启动RCV

RCV VB100, 0

(2)PLC的初始化程序

LD SM0.0

MOVB 9, SMB30 //自由口协议,9600bps,8个数据位,无校验位

LD SM0.0 //RCV指令初始化

MOVB 16#EC, SMB87

MOVB 103, SMB88

MOVB 71, SMB89

MOVW +1000, SMW92

MOVB 35, SMB94

R SM87.2, 1

LD SM0.0

ATCH INT_0:INT0, 23 //接收完成事件连接到中断程序0

LD SM0.0

ATCH INT_1:INT1, 9 //发送完成事件连接到中断程序1

LD SM0.0

ENI

LD SM0.0

MOVB 3, VB199 //将本机站地址装入寄存器

LD SM0.0

MOVD &VB102, VD149 //装入地址指针

MOVB 0, VB179 //BCC码寄存器清零

MOVD &VB156, VD181 //装入地址指针

MOVB 0, VB180 //BCC校验码寄存器清

2 基于单片机与PLC通讯系统硬件的连接

此通讯系统的硬件部分主要由四部分组成,分别为三相异步电动机、S7-200PLC、STC89C52单片机和MAX485接口芯片,在单片机的开发板上同时集成了MAX485接口芯片和STC89C52单片机,并且在其上面的电平已经被转换成了RS232电平,因此,RS485总线与开发板就是直接相连的,之后连接PLC,控制电动机主要是依靠PLC上的输出信号控制继电器这一功能。

2.1 232/485电平转换电路。由于单片机的通信口采用的为RS232,而PLC采用的则为RS485,它们的电气规范是无法较好的相容的,那么就用有中间电路来匹配RS232转RS485,而PLC上的PPI电缆正是这样一种匹配电缆。在RS232接口上,发送TXD线和接收RXD线是相互独立的,接收和发送的工作也是可以同时进行的,因此,应将RS232设计成两个设备之间的单独通讯,对于两个设备的联接工作并不适用,因此,在它同时进行接收和发送工作时也是不会发生通讯碰撞的。RS485在其通訊过程中采用的为两根差分的A线和B线,0和1分别代表其相对的电平,而在同一个时间段是只能由一个设备来驱动总线的。作为Maxim公司最新生产的一种使用RS485的接口芯片,MAX485接口芯片的工作环境为+5V的单一电源,并且其采用的为半双工的通讯方式。

图1为PLC与MAX485接口芯片的连接图,其中DI脚是数据输入引脚,RO脚是数据输出引脚,DE脚是DI脚的使能端,在高电平时选通,而RE脚则是RO脚的使能端,在低电平时有效。A和B两个脚同时是该芯片的输入端和输出端,而在具体确定MAX485接口芯片是该进行输入还是输出的操作时,则应充分的考虑到DE脚和RE脚的电平情况。

通过以上的论述,对基于单片机与PLC通讯系统软件的设计以及基于单片机与PLC通讯系统硬件的连接两个方面的内容进行了详细的分析和探讨。此通讯系统采用的是S7-200PLC和51单片机串行的方式,其采用的为差分接收和平衡驱动的RS-485的接口标准,具体开发成本低并且操作简单等特点,在其实际运行的过程中,具有较强的抗干扰能力,并且性能十分稳定。因此,应继续以此系统为原型,将智能传感技术和网络技术应用其中,加强其功能,从而使此系统得到更加广泛的应用。

参考文献

[1]杨汉生.单片机多机通信的Proteus仿真设计[J].四川兵工学报,2010.

[2]段玉涛.虚拟PLC硬件仿真系统的研究与设计[J].广东工业大学,2011.

作者简介:孙永波(1980-),身份证号:230106198012252014,本科学历:电气自动化专业,2000年至2014年4月在百威英博哈尔滨啤酒有限公司历任自动化技术员,工程师、生产维护主管工作,有较丰富的电气自动化系统设计及维护经验。

猜你喜欢
单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
基于单片机的平衡控制系统设计
Microchip推出两个全新PIC单片机系列