Driver 报文诊断 - Snet Docs

Driver 报文诊断

本页是底层 Snet.Driver API,不是 IDaq 或 Snet.Core.communication 方法。说明按当前源码核对,使用时须检查实际安装包是否包含这些入口。Snet.Log日志属于独立层。

开启请求摘要

Snet.Driver.Core.Device.DeviceServer.AnalysisLogMessage 默认 false,协议服务器通过继承取得它。开启后,已实现的解析器仅在接收日志(send == false)追加伪调用摘要,原有十六进制/ASCII日志仍保留;该开关不配置日志目标,也不启动服务器。

本地模拟器示例(运行时会打开监听端口):

using Snet.Driver.LogNet;
using Snet.Driver.Profinet.Siemens;

using var log = new LogNetSingle("driver.log");
using var server = new SiemensS7Server
{
    LogNet = log,
    AnalysisLogMessage = true
};
server.ServerStart(1102);
try
{
    Console.WriteLine("模拟器已监听,按Enter停止。");
    Console.ReadLine();
}
finally
{
    server.ServerClose();
}

请求解析成功不代表设备操作成功。不支持的命令可以没有尾注;标量写会显示byte/ushort/bool摘要,大数组仅显示 byte[n] 或 bool[n],并不展开所有值。输出不是可直接重放的C#或完整审计记录。TrafficAnalysis 是internal类型。

解析器覆盖

下表描述源码中存在的实现,不代表全部已做真实设备测试。

协议族 已实现摘要及限制
罗克韦尔 已连接/未连接CIP、PCCC;多服务CIP可能不产生尾注
三菱 MC Binary/ASCII、1E、3C格式1–4、4C格式1–5、FX Links格式1/4、旧/新FX串口
欧姆龙 FINS TCP/UDP、HostLink FINS、C-mode;按实际传输提取核心偏移
西门子 S7、PPI、Fetch/Write;不表示新增传输或读写API
富士 SPH/SPB/CommandSettingType;SPH的I/Q共用代码,摘要显示I
西蒙 / 永宏 Cimon HMI、Fatek Program位/字请求
GE / 汇川 GE SRTP数据帧、EasyNet;GE非数据命令可不解析
基恩士 / 松下 Nano;Mewtocol触点/随机/字请求(RT/RS未解析)
丰炜 / 信捷 Vigor;XinJE私有功能30/31/32/33,不包含标准Modbus帧
安川 / 横河 Memobus标准/扩展/随机请求;Link连续/随机位/字请求
Modbus / LSis 本次仅迁移/转发格式化签名,没有新增协议分析覆写
基础DeviceServer 默认解析为空,由子类实现

FX区域重叠,逆地址助手按固定优先级选取一种可能名称;部分强制位特殊分支尚未实现。MC/FINS多Bool写只显示长度;A3C/A4C适配器为日志提取组装伪帧,不改变实际通信帧。

扩展签名与迁移

BinaryCommunication 位于 Snet.Driver.Core.Net,DeviceServer 位于 Snet.Driver.Core.Device。

// BinaryCommunication:替代旧的两参数受保护覆写。
protected virtual string GetLogTextFromBinary(
    PipeSession session, byte[] content, bool send);

// DeviceServer:实际API拼写为Messafe。
protected virtual string AnalysisLogMessafeTail(
    PipeSession session, byte[] content, IByteTransform byteTransform);

protected string LogTextAddTail(
    string msg, PipeSession session, byte[] content, bool send);

// MelsecA3CServer:3C/4C诊断解析器共用。
protected static string AnalysisLogMessageFromMcCore(
    byte[] content, IByteTransform byteTransform, int coreOffset, bool isBinary);

自定义覆写须迁移到三参数格式化方法,没有旧签名兼容重载。源码公共门禁仅分析接收方向,不能照XML注释宣称收发都会分析。逃逸异常追加 --- faild: 与错误消息;很多协议解析器内部捕获后返回空尾注。日志解析不能代替输入校验或完整协议追踪。

串口模拟器设置

CommunicationServer.StartSerialSlave(Action<SerialPort> inni) 先执行初始化委托,再强制设 ReadBufferSize = 1024、ReceivedBytesThreshold = 1,随后打开串口;这两项会覆盖委托设置,不等于验证了设备分帧正确性。

当前XinJEServer串口完整性代码在“声明长度+6大于等于已接收长度”时也可能返回true,存在提前接受不完整输入的疑点。本轮没有验证该比较,不能描述为已证明正确的分帧修复。

相关页面