时间:2024-05-04
吴晨红
(合肥工业大学电子科学与应用物理学院,安徽合肥,230601)
如今,嵌入式系统在人们的生活中随处可见。从应用的角度,嵌入式系统包括监视装置[1]。在嵌入式系统中,此信号采集系统属于是监视装置。在各种工业现场总线被应用于各行各业的电压监视装置中时,并没有一个标准化统一的总线协议,导致使用者感受到数据可读性差或难度较大且复杂。所以使用一种开放性、可扩充性和标准化的通信协议对促进嵌入式系统的监视装置的发展显得尤为重要。Modicon 公司于1927 年发明Modbus 协议[2],具有划时代意义。Modbus 协议以其开放性、高可靠性、高效简单性、免费等优点,在监视装置领域被广泛使用,表现出Modbus协议强大的生命力,在我国监视装置领域已经成为标准。Modbus 协议支持RS-485 通信接口。因此,如果我们实现了在下位机与PC 端之间通过RS-485 总线并以Modbus 通信协议进行 的正常通信,就可以达到电压监视装置开放性、可扩充性和标准化的目的。
在此系统中,下位机之间选用CAN(Controller Area Network,控制器局域网现场总线)总线[2]完成数据传输。在强噪音的环境下,CAN 总线目前今在监控装置中应用较多的RS-485 总线的误码率低。同时,CAN 总线具有稳定简单的开放性设计,以及成本低廉[3]的特点。因而CAN 总线可在电压监视装置中应用,使离散的数据检测实现可靠性和实时性的数据交换。
因为人们对更为方便的生活需求逐渐变强,不断促进着工业的发展。工业现场中出现多台设备之间的通信需求促进了监视装置的发展进步。为提供对控制系统的集中管理,此设计基于各总线技术的基础,结合Modbus 协议的方式来实现对监控点电压信号的检测与数据传输。且该系统对需要基于Modbus协议实现数据传输的监控设备具有参考意义,如温度、湿度和水位等数据。
基于Modbus通信协议的信号采集系统的功能流程如下:
(1)下位机2 将信号源转换为电信号,单片机将接受的数据通过CAN 总线发送给下位机1;
(2)下位机1通过按键控制接受对电压模拟信号的采集;
(3)当PC 端发送Modbus 协议的查询指令,下位机1 则通过RS-485 总线以Modbus 协议把数据上传到PC 端。
基于Modbus 通信协议的信号采集系统将以STM-32F103C8T6 微控制器(Microcontroller Unit,MCU)控制各模块,完成对信号源电压信号的采集。此信号采集系统可以将采集的模拟信号转换为数字信号,同时也能将所采集的电压数字信号发送给PC 端,以达到一定距离的电压监控目的。综上所述,基于Modbus 通信协议的信号采集系统可由以下6 个部分组成:信号源、电压采集模块、STM32 微控制器模块、CAN 总线传输模块、RS-485 总线传输模块和PC端接收模块。
电压采集系统的工作原理如下:信号源的电压信号先通过电压采集模块,即通过STM32 的ADC(Analog-to-Digital Converter,模拟数字转化器)将电压模拟信号转换为电压数字信号,由下位机2 的STM32 微控制器模块保存,再经过CAN 总线传输到下机位1。信号经下机位1 的MCU 微控制单元处理后,数据将通过以Modbus 协议由RS-485 总线上传给电脑端的串口助手接收,如图1 所示。
图1 基于Mobus 通信协议的信号采集系统框图
STM32 的ADC 模块起着将模拟信号转化为数字信号的中介作用。STM32F103 系列MCU 上自带12 位的ADC 模/数转换器[4],具有的18 个通道模/数转换有单次和连续的模式,将模拟信号转化为数字信号,并以二进制[4]的形式保存。
ADC 的重要参数包括量程、分辨率和精度[1]等。在此系统中的STM32F103C8T6 芯片[5],由PA0 脚接外部信号源。芯片以1MHz 转化速率、12 位转化结果(12 位0~4095)。电压量程为单极性,范围为0~+3.3V;分辨率为12 位;最小精度位3.3V/212=0.0008056640625V;将采集的数据用电压来显示,设采集的数据为C(0~4095),则采样电压为U(V)计算公式为:
CAN 通信系统的每个节点都包括CAN 收发器、CAN 控制器[6]和微处理器3 个部分。微处理器STM32F103C8T6可控制CAN 节点数据的收发、处理和缓存;CAN 收发器选用JTA1050 芯片,这是一款有较强的抗干扰能力、速率较高的芯片;STM32F103C8T6 芯片以其内部自带bxCAN[7](Basic Extended CAN,基本扩展CAN)作为CAN 控制器。用来以CAN 的协议格式发送或接受数据。
作为一款标准高速CAN 收发器,TJA1050 芯片当作物理总线和STM32F103C8T6 之间的接口。TJA1050 是一款5V 供电的芯片,可以给予CAN 控制器差动接收功能,以及给予CAN 总线差动发送性能。CAN 物理层的模式选用闭环通信网络,总线通讯速度最高为1Mbps,最大长度有40m。CAN 总线遵照ISO11898 标准是短距离的、高速的网络。总线的左右两边分别加上一个“120 欧”的终端电阻,如图2 所示。
图2 CAN 接口电路
STM32F103C8T6 将USART3 作 为RS-485 接 口[8]电路使用,而接口芯片选用的是MAX3485 芯片,这是一款3.3V供电的RS-485 芯片。MAX3485 芯片的DI 和RO 管脚分别接STM32 的PB10 和PB11 管脚,作为信号的接收和发送端;芯片的DE和两个管脚分别是发送使能端和接收使能端,如图3 所示。系统通信利用STM32 的USART3 外设作为通信节点中的串口控制器,连接MAX3485 芯片收发引脚,以完成由USART3 外设的TTL 电平信号转化成RS-485 的差分信号。
图3 RS—485 接口电路
Modbus 协议用在RS-485 通讯接口。因此,在下位机与上位机之间的通信我们通过基于Modbus 协议的RS-485总线来完成通过RS-485总线进行基于Modbus协议的通信。
此系统采用针对嵌入式平台的Modbus 协议作为上位机与下位机之间的通信协议。Modbus 协议的RTU(Remote Terminal Unit,远程终端装置)模式[9]。RTU 方式下,数据收发的判定是经过时间标记器来确定数据帧的起始端和末端,并通过CRC(Cyclic Redundancy Check,循环冗余校验码)数据校验[2]。Modbus RTU 协议[2]进行通信时,每条指令需要连续的传输,并且指令中每8 位字节则分成两个4 位十六进制的字符。电压采集系统以PC 端为主站,数据采集系统为从站,PC 端发送查询指令到下位机,下位机根据各自的编号向上位机返回各项采集的数据,返回的数据通过Modbus 调试精灵显示和查询。此系统使用03 功能码读取保持寄存器,以及获取十六进制电压数据的高位和低位。03 功能码查询指令和应答格式如图4 所示。
图4 03 功能码指令格式
Modbus RTU 协议需要对每个从站分配不同的地址,以完成一个一主机与多个从机进行通信。系统软件采用模块化设计的思想,其中下位机1 主要分为STM32 微控制器模块、CAN 总线传输模块和RS-485 总线传输模块,如图5 所示。下位机1 首先要完成系统初始化,配置好各通信参数,再调用串口接收命令读取上位机查询指令的数据帧;确定查询地址正确后,再确定CRC 校验正确与否;若校验都正确,则将对应的电压数值保存到Modbus 的返回指令的数据位中;否则,上位机接收不到返回数据。
图5 下位机1 系统采集流程图
PC 端与下位机1 通过USB 转RS-485 转换器连接来配置各通信参数,构建测试环境。可以得到读寄存器区的收发指令分别为:
(1)上位机发送查询指令:04 03 00 00 00 02 C4 5E;
(2)上位机接收到的指令:04 03 04 00 E6 00 07 0F 06;
其中接收指令格式如下:设备地址、03功能码、4个字节、十六进制电压的低八位数值、十六进制电压的高八位数值、CRC 校验位。综上所述,此时采集的十六进制电压数据为07E6,即对应十进制数据2022,将数据带入公式(1)可以得到:采样电压=(2022/4096)×3.3V=1.629V。
由上述计算过程得到的测试结果可知:在一定误差内,所得采样电压值与测试点实际电压值近似相等。所以该系统可以实现以Modbus 通信协议格式获得信号源的电压,符合系统要求,如表1 所示。
表1 数据采样表
此系统包含信号源、电压采集模块、STM32 微控制器模块、CAN 总线传输模块、RS-485 总线传输模块、电脑端串口助手数据接收模块6 个组成部分,从而电脑端可实时查询信号源的电压值,实现了电压监视装置与Modbus 协议的结合,并完成了电压数据的正常传输。本文对需要基于Modbus 协议实现数据传输的监控设备具有参考意义,实现了一定距离的更具兼容性的通信系统,具备推广价值,可助力工业现场自动化的快速发展。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!