跳到主要内容

温控仪表

把保持寄存器 0 当作炉温。先在虚拟从站上写业务,再到现场换成串口。

var memory = new ModbusSlaveMemory();
memory.HoldingRegisters[0] = 1800; // 原始值,点表按 0.1 换算为 180.0

await using var app = ZeusHost.Create(builder =>
{
builder.AddAcquisition(TimeSpan.FromMilliseconds(500));
builder.AddVirtualChannel("bus", new ModbusSlaveResponder(1, ModbusTransport.Rtu, memory));
builder.AddModbusRtu("oven", "bus", points: map =>
map.HoldingRegister("temperature", 0, raw => raw * 0.1));
});

await app.StartAsync();
var pv = app.Points.Get<double>("temperature");

现场替换通道:

builder.AddSerialPort("bus", "COM3", 9600);
builder.AddModbusRtu("oven", "bus", unitId: 1);

界面使用 app.Points.BindTo("temperature", label)。协议代码和换通道都不必改。