电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 单片机 > 详细信息
单片机:PIC单片机与触摸屏串行通信MODBUS协议
来源:   时间: 2007-4-16 11:50:43    
摘要:介绍一种在PIC单片机与触摸屏之间采用Modbus协议实现异步串行通信的方法。简单介绍了Modbus通信协议,给出了硬件电路连接图、程序流程图以及用PIC单片机C语言编写的部分通信程序。实际使用证明该方法数据传输稳定可靠,并提供了良好的人机交互环境。 

    关键词:触摸屏 PIC单片机 Modbus协议 通信

工控中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modicon公司推出的一种有效支持控制器之间以及控制器经由网络(例如以太网)和其它设备之间进行通信的协议。本文以PIC16F877单片机和人机电子有限公司的eView MT510T型触摸屏为例,介绍其通信程序的开发过程。

1 系统结构

实现触摸屏与单片机的通讯,主要是解决通讯协议的问题。本文使用开放的Modbus通讯协议,以触摸屏作主站,单片机作从站。eView触摸屏本身支持Modbus通讯协议,如果单片机也支持Modbus协议,就可以进行通信了。触摸屏与单片机之间采用的RS-232C兼容接口直接连接,传输速率设置为9600kb/s。图1为该系统的电路图。

将PIC16F877单片机RC6、RC7口设置为异步串行通信模式,经过MAX232芯片将TTL电平转换为RS232电平,再与eView触摸屏PLC[RS-232]接口相连,即完成了硬件连接。eView触摸屏PLC[RS-232]接口的管脚2为TXD,管脚3为RXD。

2 Modbus通信协议介绍

Modbus通信协议是一种串行的主从通信协议,网络里仅有一台设置可作为主机(称Master),其它设备作为从机(称Slaver),主机不需编号,从机必须编号。协议定义了主机查询及从机应答的信息帧格式。通信时,主机首先向从机发出请求信息,符合相应地址码的从机接收通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务,然后把执行结果返给主机。若从机接收到的校验码与本机计算的不同,则说明数据在通信过程中出现错误,从机把这次请求视为无效,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。当主机收到这一信息时,会重新发送请求信息。校验方式分为LCR(传送数据为ACSII时)校验或CRC(传送数据为二进制时)校验,这里采用CRC校验方式。
信息传输为异步方式,并以字节为单位。主从站之间通讯的字格式如表1所示。

表1 通讯的字格式

字格式(串行数据) 10位二进制 
起始位 1位 
数据位 8位 
奇偶校验位 无 
停止位 1位 


Modbus协议可支持ASCII码或二进制格式的数据传输。ACSII码方式下每一个字节数据分两个字节传送,二进制方式下用一个字节传送,为了减少数据传输量,一般选二进制数据方式。各个区允许发送的字节均为16进制的0~9,A~F。二进制信息帧标准结构为:

初始结构 ≥4字节的时间

地址码 1字节

功能码 1字节

数据区 N字节

错误校验 16位CRC码

结束结构 ≥4字节的时间

二进制模式中,信息开始至少需要3.5个字符的静止时间,依据使用的波特率,很容易计算这个静止时间。发送完最后一个字符后,也有一个至少3.5个字符的静止时间,然后才能发送一个新的信息。网络上的设备连续监测网络上的信息,包括静止时间。

按此在新窗口浏览图片


 

3 单片机与触摸屏地址的对应关系

eView触摸屏只支持Bit和Word地址类型,而实际的单片机或其它控制器还有Byte、Double Word等表示方法,因此在进行通信时,需要把单片机和触摸屏的数据进行变换。触摸屏画面元件读取地址的设备类型有LW、0x、1x、3x、4x、RWI、RW等选项。其中,LW表示该元件读取的是触摸屏内部的地址,如其它元件的地址;0x表示读取的是控制器的输出信号;1x表示读取的控制器的输入信号;3x和4x指控制器的寄存器地址类型,其中4x是可读可写的,3x是只读的;RWI、RW都是触摸屏的内部地址,起辅助作用。使用这些读取地址的设备类型,触摸屏即可显示或设定控制器寄存器或I/O口的数值。以“数值输入”元件为例,通过“小键盘”输入数据即可设置单片机寄存器或I/O口的数值。如果启动了“触发地址”,那么当被触控时,输入的数据就被存放到了指定的单片机地址中。

4 通信程序的开发

触摸屏与单片机的通信程序采用PIC单片机C语言编写。编译工具选择Hitech公司的PICC编译器。程序共分三大模块,即初始化模块、数据接收模块以及数据处理及发送模块。主程序流程图如图2所示。


PIC16F877单片机USART功能模块带有一个八位的波特率发生器BRG,BRG支持USART的同步和异步工作方式。用SPBRG寄存器控制一个独立的八位定时器的周期。在异步方式下,发送状态/控制寄存器TXSTA的BRGH位(即D2)被用来控制波特率。对串行口进行的初始化如下:

GIE=1; %全局中断允许;

SPBRG=25; %设置波特率为9600;

TXSTA=0x04; %选择异步高速方式;

RCSTA=0x80; %允许同步串行口工作;

RTISC6=1;

TRISC7=1; %将C口的RC6和RC7设置为异步串行通信模式;

PFIE=1; %外围接口中断允许;

RCIE=1; %USART接收中断允许;

TXIE=1; %USART发送中断允许;

数据接收模块由一个中断函数组成。该中断函数将触摸屏发来的Modbus数据帧存储在一个自定义的数组中,当一帧数据接收完时,置接收结束标志位为1,转入数据处理及发送模块。串行通信接收器的核心是接收移位寄存器RSR,当接收到停止时,如果RCREG缓冲器为空,RSR就把接收到的数据送入RCREG。传送完成后,接收中断标志位RCIF被置1。实际的中断是否被CPU响应,可以通过设置外围接口中断允许寄存器PIE1的中断允许位RCIE来控制。


按此在新窗口浏览图片

 

数据处理及发送模块执行Modbus协议功能码对应的运用。eView触摸屏与单片机以Modbus协议通信,用到的Modbus功能码如表2所示。

表2 通信程序用到的功能码

功能码 eView地址名称 含  义 作  用  
1 0x 读开关量输出 读取一路或多路开关量输出状态 
3 4x 读保持寄存器 读取一个或多个保持寄存器的数据 
5 0x 写开关量输出 强置一路继电器的“分/合”输出 
1x 


以Modbus功能码03为例来说明触摸屏及单片机的实际通信数据格式。如单片机地址编号为01H,触摸屏需要查看单片机中地址为0031H的寄存器的值,发送命令格式如表3所示。
表3 触摸屏发送数据结构

数据段名称 数据值 
地址 1 
功能码 3 
读取地址高位 0 
读取地址低位 31 
读取数据个数高位 0 
读取数据个数低位 1 
CRC校验码高位 D5 
CRC校验码低位 C5 


假设单片机中地址为0031H的寄存器中断为05H,则单片机的回复命令如表4所示。

表4 单片机应答数据结构

数据段名称 数据值 
地址 1 
功能码 3 
读取字节数 2 
寄存器数据高位 0 
寄存器数据低位 5 
CRC校验码高位 78 
CRC校验码低位 47 


当波特率达到38400kb/s时,通信仍然稳定可靠。本系统具有连接电路简单、组态灵活、通信可靠性高等特点,并已成功应用于物料筛选控制系统项目中。由于Modbus通信协议的开放性的特点,国外进口控制器串行通信大者支持该协议,因此本文所实现的采用Modbus协议的串行通信具有广泛的应用价值。 

相关信息
发表评论
打印本页 关闭本页
基于RS232及红外接口的多功能通讯实验板的设计
  1 引言 计算机控制系统中经常采用多机系统进行通信,在由PC机和单片机构成的分布式控制系统中,往往以PC机为上位机完成较为复杂的数据处理和对前沿机的监督管理,以及对下位机进行多机协调,单片机主要执行上位机的命令,对来自微机串行口的命令进行操作,完成对被控对象的直接控制,并把被控对象的信息上报给上位机,异步串行通信是一种常用的多机通信手段,本文介绍一种将RS232,RS48...
>>详细内容
RS-232、RS-422与RS-485协议标准及应用概述
  一、RS-232、RS-422与RS-485的由来     RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传...
>>详细内容
MAX232获得正负电源的另一种方法
  MAX232获得正负电源的另一种方法  在单片机控制系统中,我们时常要用到数/模(D/A)或者模/数(A/D)变换以及其它的模拟接口电路,这里面要经常用到正负电源,例如:+9V,-9V;+12V,-12V.这些电源仅仅作为数字和模拟控制转换接口部件的小功率电源。在控制板上,我们有的只是5V电源,可又有很多方法获得非5V电源。  1.外接;2.DC-DC变换......在这里我介绍一块大家常用的芯片:MAX23...
>>详细内容
为RS-232C接口通信设计可视光链路
  图1所示的设计是一条看得见的光链路,可供需要观看被传送的数据的人使用。该设计的一个附加优点是隔离电平高达5000V以上。对该系统的测试使用了数据采集系统的COM输入端以及标准PC的COM端口。MC1489将RS-232C的数据变换成TTL信号,7404门电路再将TTL信号倒相。7404的输出信号驱动Q1,即2N3055型功率晶体管。该功率晶体管驱动3只发光二极管(LED),以组成一个光源。当RS-232C端口上没有数...
>>详细内容
集UART与RS232于一体的MAX3110E原理及应用
  摘要:MAX3110E是MAXIM公司推出的全功能收发器,它内部包括一个兼容SPITM/MICROWIRETM接口的UART以及内置电泵电容和土15kV ESD保护的双RS-232收发器。该芯片集成度高,使用灵活,性能优越。文中详细介绍了MAX31OOE的特点、原理及应用电路。 关键词:MAX3110E; UART; RS-232收发器; SPI串行接口 分类号:TN919.3 文献标识码:B 文章编号:1006-6977(2003)01-0027-05 1 概述MAX3110...
>>详细内容
CAN-RS232通信转换模块的设计与实现
  1 引言 RS232作为标准的计算机串行接口已被广泛使用,与此同时,随着现场总线技术的飞速发展,具有实时性好、可靠性高、结构简单等优点的CAN总线在测控系统中也越来越多地被采用,但由于两者的总线结构、通信协议及传输特点各不相同,因而给不同设备之间的连接带来诸多不便。因此,如何以最简单的方式实现CAN节点与RS232串行口的通信就成为工程实践中一个不可回避的问题。 本文采用典...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com