PIC单片机与触摸屏串行通信的MODBUS协议实现

时间:2023-03-20作者:佚名

工控中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。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个字符的静止时间,然后才能发送一个新的信息。网络上的设备连续监测网络上的信息,包括静止时间。

PIC单片机与触摸屏串行通信的MODBUS协议实现



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地址名称 含 义 作 用
01 0x 读开关量输出 读取一路或多路开关量输出状态
03 4x 读保持寄存器 读取一个或多个保持寄存器的数据
05 0x
1x
写开关量输出 强置一路继电器的“分/合”输出
16 3x
4x
预置多寄存器 把具体的数据装入一组连贯的保持寄存器

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

表3 触摸屏发送数据结构

数据段名称 数据值
地址 01
功能码 03
读取地址高位 00
读取地址低位 31
读取数据个数高位 00
读取数据个数低位 01
CRC校验码高位 D5
CRC校验码低位 C5

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

表4 单片机应答数据结构

数据段名称 数据值
地址 01
功能码 03
读取字节数 02
寄存器数据高位 00
寄存器数据低位 05
CRC校验码高位 78
CRC校验码低位 47

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

相关阅读

3.3V和5V双向电平转换电路解析

“当我们使用3.3V单片机(STM32系列)和5V的器件通信时(IIC设备),电平转换就势在必行了” 01经典电平转换电路 1.1、这是一款经典的电平转换电路,该电路的核心是一个N沟道场效应管,外...
2023-05-17
3.3V和5V双向电平转换电路解析

月薪 3 千和 1 万的工控师傅,差就在伺服接线和参数

干工控、修设备、伺服是必过的坎。很多师傅栽在两件事:线接错烧驱动器,参数设错跑不动。 今天不讲理论,全是现场能用的实操!接线图 + 核心参数 + 调试步骤,新手照着做就能用。 一...
2026-05-26
月薪 3 千和 1 万的工控师傅,差就在伺服接线和参数

电工上岗证理论考试试题

一、填空题(每小格1分,共30分) 1、负载的作用是把(电能)转换为(其它形式的能)。 2、欧姆定律告诉我们,通过电阻元件两端的(电流)与其两端之间的(电压)成正比;电压固定时,则与...
2023-03-21

带你完全了解电容!(下)

【免费下载】 PLC软件下载_PLC软件安装教程_PLC手册下载_PLC案例下载! 【免费学习】 变频器精品课程_西门子PLC精品教程_三菱PLC精品教程! 上一篇文章非常详细地讲解了电容的含义,如...
2023-06-27

模拟量输入输出算法

大家好!每天学一点,学习更轻松。关注我,感谢大家为我点赞。 模拟量输入算法在日常生活中比较常见,它通常将压力、温度、时间、流量等连续变化的量转换成电压信号0-10V或电流...
2023-04-11
模拟量输入输出算法

热销商品

连发瓦斯枪通用瓦斯射钉钢钉枪瓦斯气体高强度瓦斯射钉枪165气罐

连发瓦斯枪是一款专为高强度瓦斯射钉设计的工具,其特点在于能够连续发射瓦斯气体,适用于多种需要快速穿透和固定材料的场景。这款瓦斯枪配备了165气罐,容量足够满足...
4.5

黄铜镀镍金属电缆防水接头EWM密封格兰头HSM电线固定填料函M20M16

黄铜镀镍金属电缆防水接头EWM密封格兰头(HSM型)是一款高性能电线固定与密封装置,适用于M16和M20螺纹规格。采用优质黄铜材质并表面镀镍处理,具备优异的防腐蚀性、机械...
1.14

消防配件二氧化碳灭火器2 3 5 7KG弯头喷管24Kg干冰CO2外喷头喷嘴

二氧化碳灭火器配件中的2357KG弯头喷管与24Kg干冰CO₂外喷头喷嘴,是专业消防设备的重要组成部分。该弯头喷管采用高强度耐腐蚀材料制造,连接灵活,适用于高压CO₂灭火...
4.5

雷士照明led筒灯孔灯客厅吊顶天花灯嵌入式过道筒灯射灯桶灯家用

雷士照明LED筒灯是一款专为现代家居设计的嵌入式照明产品,适用于客厅、吊顶、过道、卧室等空间。采用高品质LED光源,光线柔和均匀,显色指数高,有效还原真实色彩,营造舒...
5.78

雷士照明嵌入式防眩筒灯射灯窄边过道灯深杯客厅无主灯天花灯米雪

雷士照明嵌入式防眩筒灯射灯——“米雪”系列,专为现代无主灯设计打造。采用窄边深杯结构,有效控制杂散光,实现精准防眩,营造舒适柔和的光环境。适用于客厅、过道、天...
25.67

网站栏目