基于Modbus协议的触摸屏与PIC单片机的通信实现_图文

  2009年  第 10期

仪表技术与 传感器
Instrument Technique and Sensor

20 09  No.10 

基于 Modbus协议的触摸屏与 PIC单片机的通信实现

孟  华 , 王鹏达 , 李明伟
(大连理工大学电子与信息工程学院 , 辽宁大连   116023)

  摘要 :介绍了 PIC单片机与威伦触摸屏的通讯方法及实现过程 。 简要分析了 Modbus通讯协议 , 给出了 PIC单片机与 触摸屏异步串行通讯的硬 件连接图和软件主要功能流程图 , 对测试结果进行了 分析 。实 验验证 :该方法稳定 可靠 , 目 前已 成功应用于光电 色选机系统 , 同时也为开发者采用触摸屏与带串行接 口的智能设备之间的通信连接提供了参考 。 关键词 :PIC单片机 ;威伦触摸屏 ;Modbus协议 ;串行接口 中图分类号 :TP393   文献标识码 :A   文章编号 :1002 -1841(2009)10 -0058 -03
ImplementationofCommunicationbetweenPIC SignalChip ProfessorandTouch-screenBasedonModbusProtocol

MENG Hua, WANGPeng-da, LIMing-wei (SchoolofElectronicandInformationEngineering, DalianUniversityofTechnology, Dalian116023, China)
Abstract:ThispaperintroducedthecommunicationmethodbetweenPICsignalchipprofessor(SCP) andWeiluntouchscreenanditsimplementation.ItbrieflyanalyzedModbusprotocol, providedschemediagramofasynchronousserialcommunication betweenPICSCPandWeiluntouch-screen, andpresentedpartsofkeyprogramchart.Theexperimentalresultsshowthatthismethodissteadyandreliable, anditprovidesreferencetothedeveloperswhouseWeiluntouch-screenandPICSCP. Keywords:PICsignalchipprofessor;Weiluntouch-screen;modbusprotocol;serialinterface

0 引言 光电分选机是 基于光 电技 术所开 发的 一种 新型 颗粒 状物
料品质检测与分级设 备 , 是典型的光 、机 、电一体 化的高新 技术 产品 。
光电色选系统的 总体结构如图 1所 示 。 当系统 工作时 , 触 摸屏作为人机交 互界 面 , 提供系 统所 需的各 种工 作参 数 , 包括 温度 、分选精度 、供料速 度等 。 主 控制 系统 根据 触摸 屏提 供的 设置信息控制各子系 统协调工作 , 并 对开关信 号 、状 态信号 、指 示灯等外围电路进行 功能控制 。 如发现物 料中的不 合格品 , 信 号判别板产生分选信 号 , 然后由分选 控制板驱动 气枪板剔 除不 合格物料 。 由此可 见 , 在光电 分选 机系 统中 , 人 机界 面是 不可 缺少的重要组成部分 。该部分 以 PIC单片机 为核心 , 选用 支持 Modbus协议的威伦触摸屏 作为人 机界面 , 具有 电路连 接简 单 , 软件部分易于实现的 优点 , 有效地缩短了开发周期 。
图 1 光电色选系统结构图 1 Modbus通信协议 1.1  Modbus协议简介 收稿日期 :2008 -07 -18 收修改稿日期 :2009 -06 -22

Modbus协议 [ 1] 一种有效支持控 制器之 间以及 控制器 经由 网络 (如以太 网 )与 其他 设备之 间进 行通 信的协 议 , 现已 成为 一种通用工业标准 , 不同厂商生产的控 制设备可 以通过该 协议 连成工业网络 , 集中监控 。
Modbus协议定义了一种通用的消息结构 , 描述了控制器请 求访问其他设备的一个过程 , 包括如何 回应来自 其他设备 的请 求 , 以及怎样侦测错 误并记 录 , 并制 定了消 息域 和内容 的公 共 格式 。 当在此网络上通信时 , 每个控制器 都拥有一 个唯一 的地 址 , 并识别按地址发 来的 消息 , 最终 决定 要产 生何 种动 作 。 如 果需要回应 , 则控制器将生成反馈信息并按此协议格式回应 。 1.2 Modbus通信数据传输模式
Modbus协议包括 2种传输模 式 , 即 ASCII码和 RTU模式 。 控制器可以设置为 2种传输模式中的任何一种在标准 的 Modbus网络上通信 。 该设计采用 RTU传输方式 。
当控制器设备选用 RTU模式通信时 , 消息中的每个字节包 含 2个 4位的十六进制字符 。 这种方 式的主 要优点 是 :在 同样 的波特率下 , 能够比 ASCII码方 式传送 更多的 数据 。 编码 采用 8位二进制 , 十六进制数 0 ~ 9和 A~ F, 消息 中每个 8位 域都是 由 2个十六进制字符组成 。 1.3 ModbusRTU消息帧结构
消息发送至少要以 4个字 符时间 的停顿 间隔开 始 (如表 1 中 T1-T2-T3-T4所示 )。 消息传输的第一个域是设备地址 , 其次 是功能代码和数据域 , 最后传送 CRC校验 。 空闲时网络设备不 断侦测网 络总 线 , 包 括停 顿间 隔 时间 内 。 当 接收 到 第 一个 域 (地 址域 )时 , 每个设 备都进 行解码 判断是 否是发 给自 己的 , 每 帧数据的结束 , 都以 一个至 少 4个 字符 停顿 时间来 标定 , 一 个

  
 第 10期

 
孟华等 :基于 Modbus协议的触摸屏与 PIC单片机的通信实现

 
 59 

新的消息可在 此停顿 后开 始 。 整个 消息帧 必须 作为 一连 续流 传输 。 如果在帧完成之前有超 过 2个字符时 间的停 顿时间 , 接 收设备将刷新不 完整的 消息 并假 定下一 字节 是一个 新消 息的 地址域 。 同样 , 如果一个新消息在小于 4个字符 时间内接 着前 一个消息开始 , 接收 的设 备将认 为是 前一消 息的 延续 , 不 过最 后的 CRC校验不会正确 。 典型的消息帧如表 1所示 。
表 1 ModbusRTU消息帧结构

起始位 地址域 功能代码域 数据域 CRC校验域 结束符

T1 -T2T3 -T4

8 bit

8 bit n个 8 bit 16 bit

T1-T2T3 -T4

1.3.1 地址域 地址域包含一个 字节 。 从 设备 地址 范围为 0 ~ 247 (十进
制 )。 单个设备的地址范围是 1 ~ 247。地 址是通信时身份识别 的标志 , 主设备通过将要联络的从设 备的地址放 入消息中 的地 址域来选通从设备 。 当从设备 发送回应消 息时 , 把自己的 地址 放 入回 应的 地址 域中 , 以 便主 设备 知道 是哪 个设 备作 出的 回 应 , 该设计中从设备地址设为 1。 1.3.2 功能代码域
RTU消息帧中的 功能 代码 域包含 一个 字节 。 可 能的 代码 范围是十进制 的 1 ~ 255。 当然 , 有 些 代码 是适 用 于所 有控 制 器 , 有些是专门应 用于某 种控 制器 , 还有 些保 留以 备后 用 。 当 消息从主设备发往从 设备时 , 功能代 码域将告之 从设备需 要执 行哪些动作 。 部分功能代码域 含义如表 2所示 。
表 2 Modbus部分功能码

触摸屏 功能码
地址名称

含义

作   用

01

0x 读开关量输出 读取一路或多路开关量输出状态

03

4x

读保持寄存器

读取一个或 多个保持 寄存器 的数 据

05

0x 1x

写开关量输出 强置一路继电器的 “分 /合 ”输出

16

3x 4x

预置多寄存器

把具体的数 据装入一 组连续 的保 持寄存器

1.3.3 数据域 数据域根据功 能码 的不 同而不 同 。 数 据区 包含 需要 从机
执行什么动作 , 或由从机采集的返 送信息 。 这些 信息可以 是实 际数值 、设置点 、也 可以 是主机 发送 给从机 或从 机发 送给 主机 的地址 。 例如 , 主机要 读取从 机中 寄存 器的值 , 则数 据区 必须 包含要读取寄存器的 起始地址及读取数据的字节数 。 1.3.4 CRC校验域
在 RTU模式下 , CRC校验域 [ 2] 包含 16 bit值 (用 2个 8位 的字符来实现 )。 其内容是通过对消息内容 进行循环冗 长检测 方法得出 。 CRC域附加在消息的最后 , 需要 注意的是添 加时先 是低字节然后是高字 节 , 故 CRC的高位字节是发送消息的最后 一个字节 。 根据 CRC校验码 , 可以检验数据传输的正确性 。 2 通讯系统设计 2.1 微处理器 PIC16F877
PIC16F877[ 3] 是一款单片机 。 它具 有高性 能 、低 功耗 , 性价

比高的优点 , 采 用 哈佛 总线 类 型 , 两级 指 令流 水 线结 构 , RISC CPU核心 , 外接晶振 20 MHz时 , 指令周期可达 200 ns, 在工业 、 家用电器等领域有较为广泛的应 用 。 2.2 威伦触摸屏
台湾威伦公司生 产的 触摸 屏具有 强大 的图形 显示 功能 和 数据处理功能 , 并支持 RS-232, RS-485 2种 通讯接口 。 系统 采用通信工业 中应 用 最广 泛 的 RS-232串 行接 口 进行 通信 。 配套组态软件 EasyBuilder500功 能强大 , 用 户可以 最快 的速 度 掌握其设计 方法 , 创 建 出直 观的 屏 幕画 面 , 完 成 监控 、数据 显 示 , 报警等画面的设 计 。 该 部分 中触 摸屏 参数 设置 为 :PLC类 型为 ModbusRTU, 通讯口类型设置 为 RS-232 2W, 波特率 、数 据位个数 、效验位 、停止位个数设置成和单 片机系统一致 。 2.3 硬件结构
人机界面部分主要由威伦触 摸屏 、PIC单片机 、以及 电平转 换电路组成 。 单片机 完成 控制现 场 FPGA、数据 采集 和数 据处 理功能 , 威伦触摸屏 完成 数据显 示 、参数设 定 、以及 报警 功能 , MAX232芯片将 TTL电平 转换 为 RS-232电 平 。 PIC的 RC6、 RC7口设置为异步串行通讯模式 的输入输出 口 , 传 输速率 设置 为 9 600 kbit/s, 系统采用 20 MHz晶振 。系统通 讯连接图如图 2 所示 。
图 2 PIC16F877与触摸屏间的通信电路原理图 3 软件设计
触摸屏 与 PIC单 片机的 通信程 序用 C语言 [ 4] 编写 。 编译 工具选择 PICC编译器 。 采用 PIC16F877自 带的通 用同步 异步 收发器 (USART)与触摸屏 通信 。 在 通信 前首先 要对 串行 口进 行初始化 , 例如 , 选 用的 通信方 式 、波特 率 、串 行接 口中 断使 能 等 。 初始化程序列出如下 :
voidInitCom(void) { SPBRG=0x19;//设置波特率为 9 600; TXSTA=0x04;//选择异步高速方式 ; RCSTA=0x80;//允许同步串行口工作 ; TRISC6 =0;//将 C口的 RC6设为输出 ; T2CON=0x17;//定时器 2定时 3.6 ms; TMR2IE=1;//定时器 2中断允许 ; PEIE=1;//外围接口中断允许 ; RCIE=1;//USART接收中断允许 ; TXIE=1;//USART发送中断允许 ; GIE=1;//全局中断允许 ;

  
  6 0

 
InstrumentTechniqueandSensor

} 触摸屏每隔 3 ms左右即向单片机发一次中 断请求 , 可以设 置超时控制 , 如果接收超时 , 则重新发送 数据 。 PIC单片 机串行 接口中断子程序流程 图如图 3所示 。

 
Oct.20 09 

图 3 串行接口中断子程序流程图
按照 ModbusRTU模式协 议中的 规定 , 程 序中使 用了 一个 定时器来判断 帧的起 始和 结束 。 如 检测到 4个 或更 多的 传输 字符的停顿时间 , 则设定帧的起始 标志 。 接收帧 的过程中 如检 测到 2个传输字 符的停 顿时 间 , 则重新 刷新 帧的 起始 标志 ;如 检测到 4个传输 字符的 停顿 时间 , 则设 定帧 的结 束标 志 , 然后 进入帧数据的处理过 程 。定时 器中断流程图如图 4所示 。
接收完 1帧数据 后 , 主函 数中要 对数 据进 行分 析 处理 , 包 括接收数据存储 和发 送应 答 , 其 格式 在协议 中都 已详 细给 出 , 下面仅给出数据帧分 析处理程序片断 , 如下所示 :
voidAnalyzeRecieve(void)  { if(RecieveBuf[ 0] ==1)//地址是否匹配  { DataLen=receCount-2; switch(RecieveBuf[ 1] ) {  case0x01:if(receCount>=8)  {receCount=0;ReadoutB();}break;  case0x02:if(receCount>=8)  {receCount=0;ReadinB();}break;  case0x03:if(receCount>=8)  {receCount=0;ReadOutR();}break; case0x04:if(receCount>=8)

图 4 定时器中断流程图
{receCount=0;ReadInR();}break; case0x05:if(receCount>=8) {receCount=0;ForceCoil();}break; case0x06:if(receCount>=8) {receCount=0;WriteByte();}break; default:receCount=0;  } } } 4 测试结果 以 Modbus功能码 03 为例来 说明 触摸屏 与单 片机 的通 信 数据格式 。 单片机地址编号为 01, 如触摸屏需要查看单 片机中 以 0x50为起始地址的连续 3个寄存器的值 , 发送命令格式如表 3所示 。 假设单片机中 3个 寄存 器的值 分别 为 0x50 =10、0x51 =2000和 0x52 =30, 则 单片 机 的回 复命 令 如表 4所 示 。 测 试 中 , 主机为威伦触摸屏 , 从机为 PIC单片机 。
表 3 触摸屏发送数据结构

动作 站号 功能码 地址高位 地址低位 高位 低位 CRC低位 CRC高位

发送 01 03 00 49 00 03 F4 0E

(下转第 75页 )

  
 第 10期

 
李宗帅等 :基于 DeviceNet现场总线的两轴伺服电机运动控制器

 
 75 

置 (LS7266R1中读取 的数 值 )进 行比 较 , 通过 PID控 制器 输出 至 DAC8221中进而 控制电机 。
4.1  SJA1000的初始化设计
系统的软件程序设计中有 2个难点 是 :SJA1000的初始 化 、 LS7266R1的初始化 , 这 2个初始化程序设计也是系统能否正常 运行的关键 。 SJA1000 的 寄存 器仅 能 在它 复位 期 间进 行写 访 问 , 因此在对这些寄 存器 初始化 前 , 必须确 保系 统进 入复 位状 态 , 在初始化后 , 须清复位请 求位 , 使 SJA1000返 回正常运 行状 态 。 SJA1000的初始化流程如图 4所示 。 SJA1000的初始化代码如下所示 :
 VoidSJA1000()/*SJA1000 的初始化程序 * /  {  P2 =0x10;  SJACR=0x03;  SJAACR=0x00;  SJAAMR=0xFF;  SJABTR0 =0x03;  SJABTR1 =0x18;  SJAOCR=0xFA;  SJACDR=0x4D;  SJACR=0x02;  }
4.2  LS7266R1的初始化设计
该运动控制器中 是通过可编程分频计 数器 LS7266R1来采 集电机上编码器的脉 冲值 , 然后计 算取出电机 的速度 。 它 能否 正确的工作 直接 关系 到电 机控 制的 成败 , LS7266R1的 软件 编 程 , 主要涉及初始化操作以及如何读 取它的计数 值 。 LS7266R1 的初始化流程如图 5所示 。 在读取 LS7266R1中的数值 时要注 意 :首先是 BP指针复位将计数 器中内 容装载到 OL中 , 然 后再 读取 XPR、YPR中的数值 。

5 结束语 设计的基于 DeviceNet现场总线的两轴 伺服电 机运动 控制
器 , 成本低 、容易实现 , 能够满足工业现场 要求不是 很高的 运动 控制系统 , 是一种比较经济的 DeviceNet智 能节点 。 参考文献 : [ 1]  王立萍 .CAN总线技术在电 涡流缓速 器控制系 统中的应 用.仪表
技术与传感器 , 2008(8):47 -48. [ 2]  邬宽明 .CAN总线原理和应用系统设计 .北京 :北京航空航天大学
出版社 , 1996. [ 3]  PhilipsSemiconductors-Home.PCA82C250 DATASHEETA. [ 4]  邓海龙 , CAN总线控 制器 SJA1000 的初 始化程序 设计 .南 通纺织
职业技术学院学报 , 2004(4):11 -13. [ 5]  方晓柯 、徐林 、王建辉 , 等 .DeviceNet现 场总线特 点分析及 节点电
路设计 , 仪器仪表学报 , 2005(11):1174 -1177. 作者简介 :李宗帅 (1982— ), 助教 , 硕 士 , 从事 电力 电子与 电力传 动 、运
动控制方面研究 。 E-mail:zsli@cauc.edu.cn

(上接第 60页 )

表 4 单片机应答数据结构

动作 站号
功能码
字节数 0x50 寄存器值高位 0x50 寄存器值低位 0x51 寄存器值高位 0x51 寄存器值低位 0x52 寄存器值高位 0x52 寄存器值低位 CRC低位 39CRC高位

返回 01
03
06 00 0A 07 D0
00 1E F1

  由表 3、表 4可以 看出 , 触摸屏 和单片 机的 通信准 确无 误 , 不过触摸屏在读 取以 0x50 为起 始地 址的 寄存 器值 时 , 触 摸屏 发送的帧结构中地 址为 0x49, 这是 因为 Modbus协议 中规 定编

程时起始地址要在实 际地址的基础上减 1。 5 结束语

通讯系统采用威 伦触摸屏 , 人机 界面美观 , 价格 低廉 , 操作

方便 。 采用 Modbus协议与 PIC单片机通 信 , 其速度 快 、抗 干扰 性强 、误码率低 、电 路连 接简单 、易 于实 现 , 目 前该 系统 已在 现 场成功运行 , 受到 操作人 员的 一致 好评 。 由 于 Modbus通信 协 议具有开放性 、通用性的特点 , 对 通讯系统进 行少量 改造 , 即可 应用于其他人机界面控制系统中 。 参考文献 : [ 1]  王嗣常 , 周有庆 , 邵霞 , 等 .Modbus协议 在保护测 控装置内 部通信
中的应用 .仪表技术与传感 , 2008(6):61 -64. [ 2]  陈鑫 , 孙苓生 .用 DSP实 现 Modbus协议与 GP触摸 屏通讯 .工业
控制计算机 , 2004, 17(3):15 -16. [ 3]  张明 峰 .PIC单片 机 入门 与 实战 .北 京 :航 空 航天 大 学 出版 社 ,
2004. [ 4]  刘和平 .PIC16F87X单片机实用软件与接 口技术 — C语言 及其应
用.北京 :北京航天航空出版社 , 2002. 作者简介 :孟华 (1958— ), 副教授 , 主要研 究方向 为智能 检测技 术 , GIS
及应用 。 E-mail:mhual163@ 163.com


相关文档

PIC单片机与触摸屏串行通信的MODBUS协议实现
Modbus协议的触摸屏与PIC单片机的通信实现
PIC单片机与触摸屏串行通信MODBUS协议
基于MODBUS协议的触摸屏与单片机通信的实现
Modbus协议下单片机与eView触摸屏的通信方法
modbus协议在单片机与触摸屏通信中的应用
Modbus协议下单片机与eView触摸屏的通信
基于Memorylink协议的GP触摸屏与PIC单片机通信的实现
Memorylink协议的GP触摸屏与PIC单片机通信的实现
基于Modbus协议实现单片机与PLC之间的通讯
电脑版