欢迎到访荟彩官网,24小时在线客服,提供专业解决方案,期待与您真诚合作!

持续创新|卓越品质|创造价值

照度计,亮度计,色彩校正,制造厂家

服务热线:

0755-23179385

深圳市荟彩科技有限公司

技术文章

CL照度计和CI亮度计通讯指令说明和二次开发平台说明

  • 发布时间:2026-07-23
  • 浏览次数:1

一 通讯概述

1.1 通讯说明

照度计和亮度计与PC电脑通讯的物理接口方式:串口(USB转虚拟串口,win10或win11电脑免驱动)或BLE蓝牙。

通讯协议:基于串口的Modbus RTU协议,照度计和亮度计默认设备地址为1。

高配的照度计和亮度计可测试80多项光度和色度参数,PC电脑可通过读取对应寄存器地址,读取对应的参数数据,配置弹性灵活,适应性强,读取指令和寄存器地址参照对应的技术文档。

通过USB bub扩展,一台PC电脑可以连接最多255台照度计和亮度计同步测试,借助HUICOLOR开发demo示例,用户可以快速部署自己的项目,实现多台设备同步测试各种光度参数。

image.png 

图 1

1.2 通讯流程

PC电脑连接照度计和亮度计后,PC向仪器发送测试指令的流程如图2所示:


 

图 2

PC电脑连接照度计和亮度计后,PC向仪器发送读取仪器记录的流程如图3所示:

 

图 3

1.3 通讯参数说明

由于所有寄存器的值是直接读取仪器的数据,仪器数据是按小端存储,所以所有寄存器值都要先对调字节序,然后转换成字节数组再按相应类型组装起来。

数据类型说明:

A.Float:单精度浮点数,4字节,用两个寄存器存储;

B.Int32:有符号32位整数,4字节,用两个寄存器存储;

C.UInt32:无符号32位整数,4字节,用两个寄存器存储;

D.Int16:有符号16位整数,2字节,用一个寄存器存储;

E.UInt16:无符号16位整数,2字节,用一个寄存器存储;

F.Bytes[N]:字节数组,每个寄存器存储两个字节;

G.Bool:存尔类型,一位。

文档“照度计,亮度计Modbus通讯寄存器说明.xlsx”寄存器列表中的值并非所有型号的仪器都有效,如在支持400-700nm光谱范围的仪器,400nm以下及700nm以上的辐射光谱数据为无效值,具体哪些数据有效,可参考仪器规格书中所支持的参数。

具体如何转换请参考示例程序(C# DEMO)。

 image.png

图 4

image.png

 

图 5

二 通讯命令说明

2.1 Modbus命令说明

注:除了modbus的寄存地址及长度,所有其他结构化数据都是小端模式.

2.2 读取仪器状态

- 类型:离散量输入;

- 地址:0x0000;

- 数量:`8`位;

状态位说明:

- `status[0]`: busy位,置位表示忙,复位表示就绪;

- `status[1]`: 操作执行结果指示,1表示执行成功,0表示执行失败;

- `status[2:7]`: 保留;

注意:像下面的测量、删除记录等操作都不会立即完成,需要读取状态查看是否执行结果.

2.3 获取仪器信息

- 类型:输入寄存器;

- 地址:0x0000;

- 数量:`sizeof(struct DeviceInfo_t)`字节;

struct DeviceInfo_t {

  char model_name[20];       // 仪器型号名称

  char sn[10];               // 序列号

  char software_version[20]; // 软件版本

  char hardware_version[20]; // 硬件版本

  uint16_t product_id;     // 产品识别码

  char probe_number[12];   // 测量头编号  

};

2.4 设置仪器时间

- 类型:保持寄存器;

- 地址:0x0000;

- 数量:`3`半字,必须同时输入;

struct Time_t {

  uint8_t year;    // 年份-2000

  uint8_t month;   // 月

  uint8_t day;     // 日

  uint8_t hour;    // 时

  uint8_t minute;  // 分

  uint8_t second;  // 秒

};

2.5 测量

- 类型:保持寄存器;

- 地址:0x0100;

- 数量:1,指明测量类型,`0`表示自动,大于零的值表示积分时间,单位为`ms`。

测量比较慢,可以通过遍历状态位来查看测量是否完成,将状态变成就绪且结果ok时,可以通过`读取测量结果`读取.

2.6 读取测量结果

- 类型:输入寄存器;

- 地址: 0x1000;

- 数量:256,数据结构参考`Record_t`。

2.7 获取记录个数

- 类型:输入寄存器;

- 地址:0x200;

- 数量:1;

2.8 读取记录

读取记录需要先通过`设置读取ID`设置要读取的记录的ID,然后读取下面的地址

- 类型:输入寄存器;

- 地址:0x2000;

- 数量:256

2.9 写入记录

先在下面地址写入要存储的记录:

- 类型:保持寄存器

- 地址:0x2000

- 数量:256

然后通过执行`设置写入记录ID`将让记录写入到指定ID位置。

...... 

三 仪器在电脑PC端的二次开发

注:本文档仅作为相关技术方案的示例阐述与可行性说明使用,文档中提及的所有软件均不提供任何非授权安装包,请您务必通过对应产品的官方网站、正规授权代理商等合法合规渠道获取正版软件。

QModBus是和串口助手一样的通用软件,QModBus RTU本质还是串口通讯,通讯和串口大同小异。用户可以借助QModBus助手快速与仪器通讯进行初步验证。

3.1 C++平台的二次开发

libmodbus驱动库是一个基于C语言实现的Modbus驱动库,可以部署MFC上。Qt平台可以QModbusRtuSerialServer类构建串口服务器,通过该类来构建PC电脑和仪器的通讯,开发适合自己的应用程序。

上位机软件HIQC就是采用QT平台开发的。

image.png 

图 6

3.2 C#平台的二次开发

C#中实现Modbus通信主要通过NModbus库完成,通过该库来构建PC电脑和仪器的通讯。参照例程DEMO,快速实现多台仪器的同步测试。

image.png 

图 7

3.3 LabView的二次开发

labVIEW中实现Modbus通信主要通过NI Modbus Libaray库完成,通过该库来构建PC电脑和仪器的通讯,参照例程DEMO,快速实现测试。

image.png 

图 8