你好!我是你的学习助手。今天我们来一起学习"综合实现"课程中的产品框架部分。我们将通过三张图片,逐步理解整个产品的硬件组成、设计思路、软件结构以及上位机界面。我会用最通俗的语言,把你当成零基础来讲解,确保你完全明白。每一部分我都会告诉你对应的图片放在哪里,方便你复习时对照。
1. 整体概述
在一个典型的物联网或工业控制系统中,通常有以下几个角色:
-
上位机:就是电脑或者平板上的控制软件,用来给人操作和查看数据。
-
中控:一个中间设备(比如智能网关),负责连接上位机和各种传感器,并处理通信。
-
传感器:实际测量温度、湿度、压力等的设备,它们可能通过不同的通信协议连接。
今天我们要讲的这个产品框架,就是围绕"上位机---中控---传感器"这三层来设计的。下面我们分别从硬件、设计思路、软件和界面四个角度来学习。
2. 9.1.1 硬件框架

这张图展示了整个系统的硬件连接关系。我们把它拆解开来解释:
2.1 图中的元素
-
上位机:最上方的"上位机"方块,它通过两个串口(com1 和 com2)连接到下面的中控。
-
中控:中间有两个"中控"方块,分别是"中控1"和"中控2"。每个中控有自己的通道(channel1 和 channel2),用来连接不同的传感器。
-
传感器:底部有很多传感器,分为两类:
-
非Modbus传感器:比如传感器1(非Modbus)和传感器m,它们可能使用自定义协议,不遵循Modbus标准。
-
Modbus传感器:大量的传感器(传感器1、2、3、n、k、x、y等)都标有"Modbus",表示它们支持Modbus通信协议。
-
2.2 连接关系
-
上位机通过 com1 连接到中控1,通过 com2 连接到中控2。
-
中控1通过 channel1 连接多个Modbus传感器(传感器1、2、3...n),同时还可能连接一个非Modbus传感器(传感器1非Modbus)。注意:这里"传感器1"出现了两次,可能是为了区分不同接口,实际中同一个传感器只能有一种连接方式。
-
中控2通过 channel2 连接另一组Modbus传感器(传感器k、x、y)以及一个非Modbus传感器(传感器m)。
2.3 为什么要这样设计?
-
中控的作用是协议转换和集中管理。它把来自不同传感器的数据统一起来,让上位机只需要跟中控通信,而不需要关心底下有多少种传感器。
-
通道(channel)可以理解为中控上的不同物理接口(比如RS485总线),每个通道可以挂载多个Modbus设备(通过不同的设备地址区分)。
-
非Modbus传感器可能需要额外的电路或协议转换,所以单独列出。
这样,硬件框架就构成了一个树形结构:上位机 → 中控 → 通道 → 传感器。
硬件框架的生活例子
[请对照上图:硬件框架]
-
上位机 → 物业总控制室的大屏幕电脑
物业管理员在这台电脑上查看整栋楼的设备状态、下发指令。它只跟下一级的"楼层管理员"打交道,不直接管每个房间的设备。
-
中控1、中控2 → 1楼和2楼的楼层管理员
每个楼层有一个管理员(中控),他们手里有两部对讲机(channel1 和 channel2),分别负责不同的区域。
-
中控1(1楼管理员)用对讲机1(channel1)联系1楼东区的各个房间设备;用对讲机2(channel2)联系1楼西区的设备。
-
中控2(2楼管理员)类似,用对讲机1(channel1)联系2楼东区,对讲机2(channel2)联系2楼西区。
-
-
Modbus传感器 → 支持标准对讲协议的智能设备
比如智能灯泡、智能插座,它们都听得懂楼层管理员用标准指令(Modbus协议)说的话。每个设备有一个唯一的编号(设备地址),管理员喊"设备5,打开灯光",设备5就会执行。
-
非Modbus传感器 → 老式设备或特殊设备
比如一台老式空调,它只听得懂红外遥控指令(非Modbus),不能直接用对讲机控制。这时楼层管理员需要用一个红外转发器(特殊接口)来转换指令,所以图上单独列出"非Modbus传感器"。
-
串口(com1、com2) → 总控制室到楼层管理员的专用电话线
物业管理员通过电话线 com1 直接呼叫 1楼管理员,通过 com2 呼叫 2楼管理员。电话线是物理连接。
生活场景模拟 :
物业管理员想查看 1楼东区 3号房间的智能灯泡是否亮着。他拿起电话 com1 打给 1楼管理员(中控1),说:"请帮我查一下 channel1 上 设备地址5 的灯泡状态。" 1楼管理员马上用对讲机1(channel1)呼叫设备5,获取状态,再通过电话告诉物业管理员。
3. 9.1.2 设计思路
这部分虽然没有图片,但它是整个系统的灵魂,解释了"上位机如何找到传感器"以及"数据如何流动"。我们结合硬件框架来理解。
3.1 上位机如何定位到传感器?
站在上位机的角度,它要读写某个传感器(比如"Modbus传感器2"),需要知道以下5个参数:
-
串口 :使用com1 还是 com2?因为上位机通过不同的串口连接不同的中控。
-
通道 :使用channel1 还是 channel2?因为中控可能有多个通道,每个通道下挂载不同的传感器。
-
Modbus设备地址:在同一个通道上,每个Modbus传感器有一个唯一的地址(比如1~247)。
-
寄存器类别:Modbus协议中有多种寄存器,比如线圈(Coils)、离散输入(Discrete Inputs)、保持寄存器(Holding Registers)、输入寄存器(Input Registers)。上位机需要指定要读哪一类。
-
寄存器地址:该类寄存器内的具体地址(比如0x0001)。
所以,当用户在上位机界面上添加一个"点"(即一个监控对象)时,就需要填写这5个参数。
3.2 上位机如何读写传感器?
为了简化上位机的设计,我们让上位机只跟中控通信。也就是说,上位机根本不知道下面有那么多传感器,它只认为中控就是一个大设备,中控内部有很多寄存器。这些寄存器被映射到实际传感器的数据。
-
映射关系:上位机把用户填写的5个参数打包成一个"映射规则",然后发送给中控。中控收到后,就会建立一张映射表:比如"中控的寄存器A"对应"通道1上的设备地址2的保持寄存器0x0010"。
-
读操作:当中控需要读取某个传感器的数值时,它主动轮询(不断读取)这些传感器,并把最新值保存到自己的寄存器中。上位机要读数据时,直接读中控的对应寄存器即可,非常快。
-
写操作:如果上位机要控制某个设备(比如写线圈),它会发送写命令给中控,中控再根据映射表转发给对应的传感器。
3.3 中控如何读写传感器?
中控内部运行着一个后台程序,它负责:
-
根据映射表,定时通过Modbus协议读取传感器的数据(轮询)。
-
接收上位机的写命令,并立即去写传感器。
-
维护与上位机的通信(比如通过串口或网络)。
3.4 上位机如何发送映射关系、传输固件?
当用户在上位机界面上配置好所有"点"之后,需要把映射关系下发给中控。另外,有时还需要升级中控的固件。这里用到Modbus的一个特殊功能:Write File Record(写文件记录)。这个功能允许通过Modbus协议传输大块数据,甚至整个文件。所以上位机可以把映射关系表(一个文件)或者固件文件,用这个功能发送给中控,中控再写入自己的Flash存储器中。
4. 9.1.3 软件框架

这张图展示了各个设备上的软件层次和通信方式。我们从上到下解读:
4.1 上位机
上位机软件分为两部分:
-
LVGL(前台程序):这是一个流行的嵌入式图形库,用来绘制漂亮的用户界面。用户看到的按钮、图表等都是它渲染的。
-
后台程序(控制中心):负责处理业务逻辑,比如与中控通信、管理映射关系、处理升级等。前台和后台之间通过某种内部通信(比如JSON RPC)交换数据。
4.2 中控
中控的软件也分层:
-
APP(应用程序) 和 Bootloader:Bootloader是启动加载程序,负责启动APP或升级固件。APP就是实际运行的控制程序。
-
libmodbus:一个开源的Modbus协议库,用来封装Modbus报文,方便与传感器通信。
-
串口API:操作系统提供的串口操作接口。
-
UART HAL:硬件抽象层,屏蔽不同芯片的UART差异。
-
Flash驱动:用来读写中控内部的Flash存储器,用于保存配置信息和固件。
4.3 传感器
传感器同样有 APP/Bootloader ,以及 libmodbus 、UART HAL 、Flash驱动。对于非Modbus传感器,可能没有libmodbus,而是使用自定义协议。
4.4 通信方式
-
上位机与中控 :通过 JSON RPC远程调用 进行通信。JSON是一种轻量级数据格式,RPC(远程过程调用)让上位机可以像调用本地函数一样调用中控的功能。比如上位机发送一个JSON命令:"读取寄存器0x100",中控执行后返回结果。
-
中控与传感器 :通过 Modbus协议(基于串口)通信。中控使用libmodbus库构造Modbus请求,通过串口发送给传感器,传感器解析并回复。
4.5 数据流向
-
用户操作LVGL界面 → 后台程序 → JSON RPC → 中控后台 → libmodbus → 串口 → 传感器。
-
传感器数据返回路径相反。
这样分层设计的好处是每一层职责清晰,易于维护和扩展。
软件框架的生活例子
[请对照上图:软件框架]
现在我们把人物换成他们手里的工具和软件,看看数据是怎么流动的。
-
上位机(物业总控制室电脑):
-
LVGL(前台程序) → 大屏幕上的可视化界面,显示整栋楼的平面图,每个房间的灯、空调图标,还有实时温度数字。物业管理员点点图标就能下发指令。
-
后台程序(控制中心) → 电脑后台运行的"指令处理系统" ,它接收前台的点按事件,转换成具体的任务(比如"查设备5状态"),然后通过 JSON RPC远程调用 把任务打包成标准指令,发送给对应的楼层管理员。
-
-
中控(楼层管理员的智能平板):
-
APP(应用程序) → 平板上的管理软件,负责处理物业发来的任务,调度底层通信。
-
Bootloader → 平板的启动引导程序,平时隐藏,只有在升级管理软件时才出现,保证升级失败还能恢复。
-
libmodbus → 对讲机里的"标准指令手册",APP要跟设备说话时,就调用 libmodbus 把"查状态"翻译成设备能听懂的 Modbus 报文(比如一串数字:设备地址+功能码+寄存器地址)。
-
串口API → 平板的操作系统提供的"拨号接口",APP通过它调用硬件发送数据。
-
UART HAL → 平板的硬件驱动层,把数字信号转换成电信号,从对讲机天线发出去。
-
Flash驱动 → 平板的存储卡读写工具,用来保存"映射表"(哪个房间对应哪个设备地址)和 APP 的升级文件。
-
-
传感器(智能灯泡):
- 也有自己的 APP/Bootloader (灯泡内置的固件和启动程序),以及 libmodbus (听懂标准指令)、UART HAL (接收电信号)、Flash驱动(保存自己的配置,比如亮度记忆)。
-
通信过程:
-
物业管理员在 LVGL 界面上点击"查询 1楼东区 灯泡5"。
-
后台程序收到,用 JSON RPC 打包成一条消息:"中控1,请读 channel1 设备5 的线圈0x0001"。
-
消息通过电话线(串口)传到 1楼管理员的平板。
-
平板的 APP 解析消息,调用 libmodbus 生成 Modbus 查询报文:
[设备地址5] [功能码01] [寄存器地址0x0001] [数据长度1] [校验]。 -
串口API 和 UART HAL 把报文变成电信号,从对讲机1(channel1)发射出去。
-
灯泡5 的 UART HAL 收到信号,libmodbus 解析出"查询线圈",APP 读取自己的状态,原路返回数据。
-
数据层层返回,最终显示在 LVGL 界面上。
-
5. 5. 上位机界面

最后我们来看上位机界面长什么样,用户如何操作。这张图可能有点乱,我们整理出关键区域:
5.1 顶部按钮
-
Upgrade:升级按钮,点击后可以上传固件文件给中控升级。
-
MQTT Setting:MQTT设置,可能用于将数据上传到云平台。
-
Advanced Settings:高级设置,比如网络参数、日志级别等。
5.2 左侧区域 ------ 参数配置区
这里是添加/编辑"点"的地方,对应我们之前说的5个参数。注意图中标注了"1.点击"可能是指点击某个按钮后弹出配置界面。具体参数:
-
RTU / TCP:选择Modbus通信方式是RTU(串口)还是TCP(网络)。这里我们主要是RTU。
-
Period:轮询周期,比如100ms。
-
COM/IP:选择串口号或IP地址(如果是TCP)。
-
Device addr (0x):设备地址,十六进制。
-
Register addr (0x):寄存器地址,十六进制。
-
Function:功能码,比如读线圈(01)、读保持寄存器(03)等。
-
Coils (0x):可能是指线圈数量或具体值。
图中还标注了"①参数1:"、"②参数2:"等,应该对应:
-
①:设备地址
-
②:寄存器地址
-
③:寄存器类别(比如线圈、保持寄存器等)
-
④⑤可能是其他参数,比如通道号、数据格式等。
5.3 右侧区域 ------ 串口/网络设置
这里配置与中控连接的物理参数:
-
COMPORT:串口号,比如COM1、COM2。
-
Baudrate:波特率,比如9600、115200。
-
Data bits:数据位,通常8。
-
Stop bits:停止位,通常1。
-
Parity:校验位,无、奇校验、偶校验。
-
Remote IP:如果使用TCP模式,这里填中控的IP。
-
Remote Port:端口号。
-
Channel:中控的通道号(1或2)。
5.4 右侧下方大量参数列表
图中列出了从"①参数1:"一直到"㊿参数51:"等许多行,但很多都是重复的"127.0.0.1"。这可能是一个占位符,实际界面中可能是一个表格,用于显示已配置的多个"点"的映射关系,或者显示传感器采集到的实时数据。127.0.0.1是本地回环地址,只是示例。
5.5 操作流程
-
首先在右侧配置好串口参数,连接中控。
-
然后在左侧填写5个参数,点击"添加"或类似按钮,创建一个点。
-
可以配置多个点,每个点对应一个传感器数据。
-
配置完成后,点击"Upgrade"或"应用"将映射关系下发给中控。
-
之后界面就会开始显示各个点的实时数值。
6. 总结
通过今天的学习,我们掌握了整个产品的框架:
-
硬件:上位机通过串口连接中控,中控通过通道连接各种传感器。
-
设计思路:上位机只需跟中控交互,通过5个参数定位传感器,中控负责映射和轮询。
-
软件:分层设计,使用JSON RPC和Modbus协议通信,界面用LVGL。
-
界面:用户可配置参数,下发映射,查看数据。
这三张图片分别对应硬件、软件和界面,是理解整个系统的关键。希望你以后复习时,能对照这些图片回忆起今天的内容。如果有任何疑问,欢迎随时提问!