APP下载

STM32 单片机与西门子Smart 700触摸屏通信的实现

2021-03-24鹏,王

关键词:通信协议校验上位

李 鹏,王 莉

(江汉大学 智能制造学院,湖北 武汉 430056)

0 引言

随着工业技术的快速发展,借助于检测终端、控制终端、显示终端及无线传输端为一体的智能化控制系统逐渐成为工控领域的发展方向。在工业领域大多采用可编程逻辑控制器(pro⁃grammable logic controller,PLC)与触摸屏结合的方式完成现场操控[1],PLC 技术稳定性好、抗干扰性强,但是成本较高。微控制器技术采用超大规模集成电路技术把中央处理器CPU、随机存储器RAM、只读存储器ROM、中断系统等功能集合为一体[2],具有体积小、功耗低及成本低等特点。微控制器技术可广泛用于自动化控制领域,替代传统可编程控制器的部分功能,实现现场对象的逻辑控制,有较好的应用前景。

传统的工控领域大多采用的是同厂商的触摸屏与PLC 相互结合的应用方案[3]。本文以STM32 单片机与西门子Smart 700 触摸屏为例,为了实现不同厂商设备间的数据通信技术问题,建立与微控制器通信案例,技术上采用Modbus RTU 标准的通信协议建立设备间的通信桥梁。采用Smart 700 触摸屏作为上位机运行人机交互控制界面,STM32 作为下位机完成数据采集及设备控制等功能,设备间采用RS485 接口,按照Modbus RTU 通信协议方式建立单片机与触摸屏的驱动,编写通信协议、设计软件并进行实验测试。

1 西门子Smart 700 触摸屏简介

西门子Smart 700 触摸屏是一种广泛应用于工业现场人机交互的屏幕系统,具备微小的操作系统、高分辨率宽屏显示、节能降耗及强大且丰富的通信能力[4]。Smart 700 触摸屏人机界面功能强大,其界面设计主要是在WinCC flexible 中实现,根据项目需求设计按钮、图形、数字等功能按键来处理、监控、管理多变的信息化显示屏幕。

触摸屏的通信配置在WinCC flexible 软件中进行选型设计(通信−连接−通信驱动程序),驱动选择Modicon Modbus v3 驱动程序,通信协议配置如表1 所示。

表1 HMI 设备通信配置Tab.1 HMI device communication configurations

2 Modbus RTU 协议

Modbus 通信协议是Modicon 公司为使用PLC 通信而发表[5],该协议广泛用于工业现场,通过该协议可以完成多控制器之间、不同型号设备之间的数据通信[6]。该协议采用主从应答通信,明确规定了主从应答通信行为、设备识别码、设备验证码及标准的报文结构格式,目前是工业电子设备之间常用的连接方式。Modbus 主要有以下3 种通信方式:以太网的Modbus TCP、异步串行通信的Modbus RTU、基于高速令牌传递网络的Modbus PLUS[7]。常用的物理接口有RS232/RS422/RS485、光纤、无线等通信接口[8−9]。本文采用异步串行通信,通信接口采用RS485 的连接。

协议格式是完成不同设备间沟通的桥梁,Smart 700 触摸屏配套的组态软件是WinCC flexi⁃ble,该软件内无单片机的驱动。本节研究两个方面的内容,即Modbus RTU 数据通信的命令串格式和触摸屏发出命令的含义。

2.1 Modbus RTU 协议格式

Modbus 通信方式有多种,本文主要采用Modbus RTU 异步串行通信方式,其数据格式包括:地址码+ 功能码+ 数据+ 循环冗余校验(cycle redundancy check,CRC),各部分含义如表2所示。

表2 Modbus RTU 消息帧格式Tab.2 Modbus RTU message frame format

主机对从机的操作有读数据操作和写数据操作,完成对特定内存单元的数据进行读取和预设功能。

主机对从机写数据操作,如表3 所示。

表3 主机对从机写数据格式Tab.3 Writing data format from host to slave

主机对从机读数据操作,如表4 所示。

表4 主机对从机读数据格式Tab.4 Host reading data format from slave

单片机接收到这串数据后,根据消息帧数据开始进行CRC 校验,判断数据是否正确,如果判断数据无误,则返回信息给主机,应答格式如表5 所示。

表5 从机对主机反馈数据格式Tab.5 The data format of the slave to host feedback

地址码主要是用来识别同一线路上不同设备的信息号,区别特定对象上的数据身份,其构成可以从1 到247 标号。主机发送带设备地址的消息帧,从机都可以收到信息,但是只有设置了匹配的设备号才能响应。

功能号主要是用来说明该数据帧的用途,从机根据帧信息完成数据的读取或赋值功能,完成帧数据的动作,常用的功能码如表6 所示。

表6 Modbus RTU 常用功能码Tab.6 Modbus RTU common function codes

常用的寄存器地址分配有离散量输入,地址范围0X00001 ~0X0FFFF,输出继电器地址范围0X10001 ~0X1FFFF,输入寄存器地址范围0X30001 ~0X3FFFF,输出寄存器地址范围0X40001 ~0X4FFFF。

2.2 Smart 700 触 摸 屏Modbus 指 令

Smart 700 IE 1000 触摸屏的人机交互界面是通过WinCC flexible 组态编程软件完成功能界面设计,然后下载到触摸屏内。本文建立了Modicon Modbus 标准通信协议驱动,其运行流程如图1 所示。系统运行开始,从起始单元进行主动查询,发送查询功能码,如果工控机有预设操作,系统跳转发送预设参数,完成后继续发送下一个单元请求查询命令;如果上位机无预设指令,上位机继续发送读取内存单元命令。当上位机获取到了响应读取指令,先获取指令值,且上位机地址指针自加并发送下一帧读取命令,同时判断地址指针的范围,范围内继续循环,范围外重新开始新的一轮请求查询。当上位机没有收到响应,在循环周期内继续请求当前读取数据,周期外将会从起始地址开始请求。在一个周期内完成所有内存单元的查询工作,周期循环执行。

图1 Smart 700 触摸屏Modbus 运行流程图Fig.1 Smart 700 touch screen Modbus operation flow chart

Smart 700 IE 1000 触摸屏与单片机通信采用主从通信模式,上位机Smart 700 为主机,从机为STM32 主控板。主机配置有Modicon Modbus 通信协议驱动程序,上电后系统自动开始运行,上位机Smart 700 作为主机自动按周期循环发送请求读取内存数据命令,通过RS485 通信接口发送到STM32 单片机。下位机接收到上位机请求命令后,首先进行CHR 数据校验,如果校验错误,返回重新查询接收;如果校验正确,解析获取功能码。如果是读取命令,单片机按照Modbus命令格式发送内存单元的数值到上位机;如果接收到的是写命令,单片机将对本机内存单元进行赋值操作。解析完成读写命令后,返回重新查询接收,循环查询上位机的请求命令,掉电后自动停止发送,其流程图如图2 所示。

图2 Smart 700 触摸屏与STM32 单片机Modbus 通信流程图Fig.2 Modbus communication flow chart between Smart 700 touch screen and STM32 MCU

3 STM32 单片机的软件设计

STM32F1X 单片机作为下位机[10−11],主要完成功能包括编写Modbus 解析程序、RS485 发送接收程序、传感器信号检测、接收及驱动信号发送等。

3.1 CRC 校验码的生成

CRC 是检查通信可靠性的一种方式,Modbus RTU 为了获取数据的准确性,采用16 位CRC对接收数据进行处理。其校验流程如图3 所示。单片机获取消息帧后,截取总长度的前n ~16位字符串数据,进行累加,获取结果的低16 位数据,然后将计算的CRC 与发送到的CRC 进行对比,完成数据校验。

图3 CRC 数据校验流程图Fig.3 CRC data verification flow chart

以下为单片机CRC 校验的部分脚本程序:

u16 Computes_CRC16(u8 *DAT,u8 L)//指针DAT 为要校验数组,L 为组长

{u16ComCRC = 0xffff;u8 i;u8 j;

for(i = 0;i < L;i++)

{ComCRC = ComCRC ^ DAT[i];

for(j = 0;j < 8;j++)

{if(ComCRC & 0x01)

{ComCRC = ComCRC>> 1;ComCRC = ComCRC ^ 0xA001;}

else{ComCRC = ComCRC>> 1;}

}}return(ComCRC);}

3.2 数据的接收

STM32 单片机数据接收主要采用串口中断模式进行数据的接收[12],Modbus 传输数据是固定的数字帧(屏发送请求信息帧如下所示:01 03 9C 40 00 01 AB 8E),先接收数据存入缓冲区BUFF 内,然后对数据进行分析、校验,将有效的数据提取到运行BUFF 内用于条件判断及数据提取。

3.3 数据的发送

单片机接收到Smart 700 触摸屏的通信请求后,先获取运行BUFF 内的数组,提取校验,数据无误发送Modbus 响应数组,发送函数代码如下所示。

void RS485_TX_DATA(u8 TmpH,u8 TmpL)

{ModTX.Gnm_1[0]= 0x01;//设备号

ModTX.Gnm_1[1]= 0x03;//功能码

ModTX.Gnm_1[2]= 0x02;//发送字符个数

ModTX.Gnm_1[3]= TmpH;//发送字符高八位

ModTX.Gnm_1[4]= TmpL;//发送字符低八位

DataMsg = ModTX.Gnm_1;//数组指针幅值

RXcrc = Computes_CRC16(DataMsg,5);//开始CRC 校验

RS485_Send_Data(ModTX.Gnm_1,7);}//发送一串响应数组

4 STM32 单片机与Smart 700 触摸屏的通信测试

系统测试对象是基于水泥灌浆自动控制系统的通信测试,主要包括触摸屏西门子Smart 700设备、STM32 为主的主控板和现场压力传感器等,实现设备间通信。系统测试分为两个部分,第一部分是Smart 700 触摸屏循环请求获取内存单元值命令调试,串口反馈数据给触摸屏;串口调试数据如图4 所示。

图4 Smart 700 触摸屏通信测试Fig.4 Communication test of Smart 700 touch screen

屏请求数据:01 03 9C 40 00 01 AB 8E,是请求40000 地址一个数据。

串口响应信息:01 03 02 00 13 F9 89,响应一个数据19 给40000 地址。

屏请求数据:01 03 9C 41 00 01 FA 4E,响应格式同上。

屏请求数据:01 03 9C 42 00 01 0A 4E,单片机响应后,继续请求,地址增加,在预定周期内请求所有输入寄存器的数据,完成后,程序从起始地址循环发送请求数据。

第二部分是触摸屏与下发控制命令调试,给串口发送预设值,为单片机测试做准备。如图4所示,人机交互界面有按钮控件,点击压力预设按钮,确认下发后,串口响应后的指令如下:

屏预设数据:01 06 9C 47 00 07 56 4D,其中01 是设备号,06 是预设功能码,0x9C、0x47 为寄存器位地址码,0x07 为系统预设的压力值,0x56、0x4D 为CRC 校验码。其他控制测试为同样方法。

最后就是总体功能测试,主要完成主控板与Smart 700 触摸屏间的数据通信测试,其测试结果如图5 所示。测试方法是主控板通过仿真器与触摸屏设备进行联调,观察接收寄存器数据,该数据为触摸屏下发的Modbus 数据帧,然后进行数据的处理、显示及分析等。

如图5 所示,当前显示实时压力为3.5MPa,运行中触摸屏请求数据帧格式为:01 03 9C 47 00 01 1A 4F,该指令为屏请求获取内存地址40007 单位的值,也就是实测压力值。

单片机接收到上位机请求数据帧后,按照通信协议,将当前检测到的实测压力值按照双方的通信格式,发送响应帧为:01 03 02 00 23 F9 9D,其中0x00、0x23 为响应的压力值,当前压力传感器数据(十六进制发送),发送到触摸屏进行显示。

触摸屏的按钮功能测试,点击触摸屏预设压力下发控制按钮后,触摸屏下发命令格式为:01 06 9C 49 00 06 F6 4E,当单片机读取到该数据帧后,获取第二位0x06 为功能码,知道当前操作为预设操作,单片机开始提取数据,获取到的第四位和第五位的数据为0x00、0x06,即为触摸屏下发的预设压力值。单片机将获取的数据赋给全局变量,用于程序逻辑控制、计算及显示等,如图5 所示,预设压力为0.6 MPa(Set_YaLi= 0x06),其他触摸屏按钮功能预设方法一样,如其中管道长度预设值为0.7 m(Set_GuanDao_Long = 0x07),钻孔预设深度为0.5 m(Set_ZuanKong_Long = 0x05)等。

触摸屏发送请求命令周期是小于50 ms,触摸屏控制变量不多,1 s 周期内基本可完成全部内存单元的查询,通过单片机单位时间内收到的数据可判断其稳定性。Modbus 通讯方式是标准的信息帧,还带有CRC 数据校验功能,实验过程数据传输稳定,实现了两者之间的数据通信。

图5 STM32 单片机与Smart 700 触摸屏联合调试Fig.5 Joint debugging of STM32 MCU and Smart 700 touch screen

5 结语

本文分析了Modbus RTU 的通信规则及Smart 700 触摸屏的Modbus 驱动配置,了解了报文信息的规则,然后结合STM32 单片机的结构特征,编写了Modbus 的数据通信协议,完成了人机界面设计,最后通过实验测试,实现了单片机与触摸屏的数据通信,达到了设计的要求。本次实验可以加大单片机技术在触摸屏领域的应用,替换传统可编程控制器与触摸屏项结合的工业设计模式,减少设备成本,扩展性能强,信号传输稳定,可广泛用于工控领域,具有一定的实际意义,并且该软件具备二次开发性能,可为同类项目通信提供参考。

猜你喜欢

通信协议校验上位
复杂多耦合仿真模型校验工具研究
使用Excel朗读功能校验工作表中的数据
电能表在线不停电校验技术
一场史无前例的乐队真人秀
特斯拉 风云之老阿姨上位
精通文件校验的“门道”
奖状训练器飞行管理系统研究
基于R8C的汽车OBD通用故障诊断仪设计
SIP协议系统模型的形式化研究
基于VC的PLC数据采集管理系统