4. DataMan通信协议详解
DataMan读码器对外提供三条并行的通信通道:原生TCP/IP端口、Telnet命令端口和HTTP接口。三者面向的使用场景不同——原生TCP用于产线PLC或上位机的高频触发与结果回传,Telnet用于工程调试与参数查询,HTTP用于系统集成、状态监控和结果获取。理解它们的报文格式与触发方式,是后续做网络集成和故障排查的基础。
一、原生TCP/IP协议:端口、报文与触发
DataMan的原生TCP通信默认使用23端口(部分固件版本可配置为其他端口,如5000)。设备作为TCP服务端监听,上位机作为客户端发起连接。连接建立后,双方以ASCII文本形式交换报文,每条报文以回车换行(\r\n)结束。
原生TCP的触发方式主要有两种:命令触发和外部信号触发。命令触发由上位机发送触发指令,设备立即执行一次读码;外部信号触发则由光电传感器或PLC的I/O信号驱动,设备在收到上升沿后自动读码,结果通过TCP主动上报。两种方式可以共存,但需要避免同一时刻重复触发。
常见的原生TCP命令格式如下:
||>TRIGGER\r\n // 触发一次读码
||>GET RESULT\r\n // 获取最近一次读码结果
||>SET TRIGGER ON\r\n // 开启触发模式
||>GET DEVICE NAME\r\n // 查询设备名称
设备返回的结果通常包含状态码、读码内容和符号质量信息。例如一次成功的读码返回可能形如:
||>RESULT 0 "ABC123456" 85\r\n
其中0表示成功,"ABC123456"是解码内容,85是符号质量评分(0–100)。若读码失败,状态码为非零值,内容为空字符串。上位机在解析时应先判断状态码,再决定是否使用解码内容。
二、Telnet命令:调试与参数查询
Telnet通道与原生TCP共用23端口,但交互方式更接近命令行终端。通过Telnet客户端连接后,设备会返回提示符,用户可逐条输入命令并即时看到响应。Telnet适合在调试阶段快速验证设备状态、查询参数或手动触发读码。
常用Telnet命令包括:
get device.name // 查询设备名称
get trigger.mode // 查询触发模式
set trigger.mode 1 // 设置为外部触发
trigger // 手动触发一次
get result // 获取最近结果
reboot // 重启设备
Telnet命令的返回格式通常为key=value或纯文本描述。例如执行get trigger.mode可能返回trigger.mode=1,表示当前为外部触发模式。与原生TCP不同,Telnet不强调报文帧结构,更适合人工交互而非程序化高频调用。
三、HTTP接口:报文格式与结果返回
DataMan内置轻量HTTP服务,默认端口为80。HTTP接口以REST风格提供资源访问,支持GET和POST方法。GET用于查询状态和结果,POST用于触发读码或修改参数。请求和响应均采用标准HTTP报文格式,响应体通常为JSON或纯文本。
触发读码的典型HTTP请求如下:
POST /trigger HTTP/1.1
Host: 192.168.1.100
Content-Length: 0
设备返回的JSON结果示例:
{
"status": 0,
"data": "ABC123456",
"quality": 85,
"timestamp": "2025-01-15T10:23:45Z"
}
查询最近一次结果的请求为GET /result,返回体与上述结构一致。若读码失败,status为非零值,data为空字符串。HTTP接口的优势在于可直接被上层MES、WMS或Web应用调用,无需处理原始TCP报文。
四、三种通道的触发方式与结果解析对比
三种通道在触发方式和结果返回上各有侧重。原生TCP适合高频、低延迟的产线集成;Telnet适合工程调试;HTTP适合系统级集成和远程监控。实际项目中,常见做法是用原生TCP做实时触发与结果回传,用HTTP做状态巡检和参数配置,Telnet仅在调试阶段使用。
| 对比项 | 原生TCP/IP | Telnet | HTTP |
|---|---|---|---|
| 默认端口 | 23 | 23 | 80 |
| 触发方式 | 命令触发 / I/O触发 | 手动命令触发 | POST /trigger |
| 报文格式 | ASCII文本,\r\n结尾 | 命令行文本 | HTTP + JSON |
| 结果返回 | ||>RESULT 状态码 内容 评分 | key=value 文本 | JSON对象 |
| 适用场景 | 产线PLC高频集成 | 工程调试 | 系统集成 / 远程监控 |
status字段,再读取解码内容。状态码为0表示读码成功,非零值表示失败或异常。符号质量评分可作为判断读码稳定性的参考,评分持续偏低时建议检查镜头焦距、光照条件或条码打印质量。
掌握这三种通道的报文格式和触发逻辑后,下一步需要结合具体产线节拍和PLC通信协议,选择合适的通道组合并配置超时、重试和异常处理策略,确保读码结果能够稳定、及时地传递到上位系统。