资源描述
单片机与PLC之间的串行通信实现
导语:PLC经过PID运算后控制加热圈以保持温度恒定。下面结合 实例就PLC和单片机的通信实现做一下介绍。
1、引言
随着微处理器、计算机和数字通信技术的飞速开展,计算机控制已经 扩展到了几乎所有的工业领域。其中,PLC和单片机在小规模控制系 统中获得了广泛的应用。
在塑料挤出机温度自动控制中,选用S7-200系列PLC作为主控器件, PIC16F877单片机作为温度数据采集和模数转换芯片,单片机通过通 信端口将数据传输给PLC,由于采用了 RS-485接口标准,传输距离 可达lOOOmo PLC经过PID运算后控制加热圈以保持温度恒定。下 面结合实例就PLC和单片机的通信实现做一下介绍。
2、硬件构成
2.1、 PIC16F877 单片机
Microchip公司的PIC16F877单片机采用哈佛总线结构和精简指令集 技术,具有功耗低、运行速度高、驱动能力强和外接电路简洁的特点。 PIC16F877单片机内部集成了串行通信模块即通用同步/异步收发器 USART模块,主要应用目标是系统之间的远距离串行通信。USART 模块所需的两条引脚是RC6和RC7,如图1所示,当发送允许位TXEN 被置1,就可以把发送数据写入TXREG寄存器来完成发送。
2.2、 S7-200 系歹U PLC
S7-200系列PLC通信端口采用异步串行通信方式,通信端口标准采 用平衡驱动、差分接受的RS485接口标准,可以组成半双工串行通 信网络,构成分布式系统,系统中最多可以有32个站。S7-200支持 多种串行通信协议,利用自由端口模式,可以通过语句表或梯形图编 程,实现用户定义的通信协议,很方便地连接不同厂家的智能设备。 在自由端口模式下,可以连续地发送或接收255个字节以内的数据, 这在大块数据通信时是很方便的。
2.3、 MAX485E 芯片
MAX485E芯片是RS-485接口标准专用通信芯片,如图1所示,R0 脚为数据输出脚,它接收RS-485的差模信号VAB,并转换为TTL 电平由R0输出,RE脚为R0的使能端,低电平时选通R0,输出有 效。DI脚为数据输入端,它将TTL电平的数据转换为差模信号VAB, 并由A、B两脚输送出去,DE是DI使能端,高电平选通DL输入 有效。故A、B两脚既是RS-485信号输入端,同时也是该信号的输 出端,关键是由使能端RE、DE的电平来决定。
2.4、 硬件连接图
S7-200PLC采用RS-485接口标准,接收差模信号,而PIC16F877单 片机的输出为TTL电平,所以二者在通信时必须先进行转换,本系 统采用MAX485E芯片作为转换芯片,硬件连接如图1所示。由 PIC16F877单片机的RC4选择数据的输入或输出。
图1硬件连接图
3、通信协议
本工程中由于PIC16F877单片机只是发送数据,PLC单纯接收数据, 所以采用单工串行通信。PLC采用自由端口模式协议,协议由语句表 编程实现;单片机使用USART模块的异步发送模式,协议用汇编语言 编程实现。由PIC16F877单片机的发送缓冲结构可知,一次只能连续 发送两个字节的数据,故PLC采用字符接收完成中断比拟方便。接 口标准采用与PLC侧一致的RS-485,接头采用9针D形连接器,传 输线采用屏蔽双绞线,单片机侧的发送数据需经转换后再发送。
字符信息格式为:1位起始位,8位数据位,无校验位,1位停止位。 异步通信的字符信息格式如图2所示。
图2字符信息格式
数据位的发送顺序为低位在前,高位在后。
异步通信的传输速率即波特率选择为38400bit/so为提高数据传输的 可靠性,采用异或校验,报文采用定长发送,前四个字节参加异或校 验,报文的最后一个字节为校验码。PIC16F877单片机的模数转换精 度为10位,故温度值采用双字节保存。报文帧格式如表1所示。
表1报文帧格式
4、初始设置
4.1、PIC16F877单片机发送数据初始设置
PIC16F877单片机内部集成的USART模块使用的波特率应该和
S7-200PLC相同,当采用高速波特率时,波特率寄存器SPBRG由下 式计算:
SPBRG=F/ (16&TImes;波特率)-1
式中:F 单片机时钟频率。
单片机的数据位、校验位、停止位要和PLC统一。
PIC16F877单片机最多只能连续发送两个字节的数据。其初始设置汇
编语言程序如下:
LISTP=16F877A;伪指令
INCLUDE “P16F877A.INC” ;伪指令
; 体1设置子程序
T1BCFSTATUS, RP1;
BSFSTATUS, RPO;体 1
MOVLWDz 57 ;38400bit/s
MOVWFSPBRG;
MOVLWB' 00100100, ;异步,发送使能
MOVWFTXSTA;高速,8位数据
MOVLWB7 ;RC6, RC7,
MOVWFTRISC;RC4 通信
CLRFINTCON;禁止中断
RETURN;子程序返回
; 体0设置子程序
TOBCFSTATUS, RPO;体 0
BSFPORTC, 4;RC4= 1 通信
MOVLWB' 10000000, ;使能串口
RETURN;子程序返回
4.2S7-200PLC接收数据初始设置
CPU处于STOP模式时,自由端口模式被禁止,使用其它模式的通信, 例如与编程设备的通信。只有CPU处于RUN模式时,才能使用自由 端口模式。如果使用通信端口 0通信,将通过特殊存储器SMB30进 行初始设置。
Network 1
LDSM0.7//假设为RUN模式
EU//上升沿
OSMO. 1〃或首次扫描
MOVB16#01, SMB30//38400bit/s, 8, N, 1
ATCHINTO, 8〃中断与into连接
ENI//允许中断
Network!
LDNSM0.7//假设非 RUN 模式
EU//上升沿
RSM30.0, 1〃设置为PPI协议
DTCH8//禁止中断
5、通信程序
5.1、 PIC16F877单片机发送数据通信程序
报文采用定长发送,每一帧报文由五个字节组成,每一温度值都经数 字滤波后再发送。由于温度值变化缓慢,对通信的实时性要求较低, 在发送数据通信程序中加入了较多的延时程序。由于波特率时钟依赖 于系统时基振荡器,所以单片机进入睡眠状态时不能进行异步通信。 单片机发送N个测温点温度数据通信程序流程图如图3所示。
图3单片机程序流程图
5.2、 S7-200PLC接收数据通信程序
PLC采用字符接收完成中断接收数据,通过起始字节判断接收数据帧 的开始,由数据长度决定接收数据帧的结束,采用异或校验提高接收 数据的可靠性,S7-200PLC在接收完一帧数据后计算出接收到数据的 异或校验码,并与单片机传送过来的校验码比拟,如果不同就舍弃, 不要求重发。本应用中传送数据为温度值,舍弃后接收下一个数据即 可。PLC接收数据通信程序流程图如图4〜图6所示。
6、结论
由PIC16F877单片机和S7-200PLC组成的串行通信系统,采用平衡 驱动、差分接收的RS-485接口标准,与TTL电平兼容,具有开发简 单、本钱低的优点,经过试用证明性能稳定、运行可靠、抗干扰能力 强。如果需要,也可以进行半双工通信或略作改动组成多机通信网络。
展开阅读全文