Skip to content

Commit 8bc22d8

Browse files
committed
allow writing complext type boiler from OPC UA client by using the server EncodeableFactory from the PlcNodeManager
1 parent 1625560 commit 8bc22d8

File tree

2 files changed

+3
-68
lines changed

2 files changed

+3
-68
lines changed

src/PlcNodeManager.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ public PlcNodeManager(IServerInternal server, OpcPlcConfiguration config, Applic
2323
PlcSimulationInstance = plcSimulation;
2424
_pluginNodes = pluginNodes;
2525
_logger = logger;
26-
SystemContext.NodeIdFactory = this;
26+
SystemContext.NodeIdFactory = this;
27+
SystemContext.EncodeableFactory = Server.Factory;
2728
}
2829

2930
public PlcSimulation PlcSimulationInstance { get; }
@@ -241,7 +242,7 @@ public void LoadPredefinedNodes(Func<ISystemContext, NodeStateCollection> loadPr
241242
public void AddPredefinedNode(NodeState node)
242243
{
243244
base.AddPredefinedNode(SystemContext, node);
244-
}
245+
}
245246

246247
protected override NodeStateCollection LoadPredefinedNodes(ISystemContext context)
247248
{

tests/Boiler2Tests.cs

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -246,70 +246,4 @@ public void SetOverheatInterval()
246246
var currentMaintenanceInterval = (uint)Session.ReadValue(overheatIntervalNodeId).Value;
247247
currentMaintenanceInterval.Should().Be(newValue);
248248
}
249-
250-
[TestCase, Order(8)]
251-
public void SetBaseTemperature()
252-
{
253-
var newValue = 25f;
254-
var baseTemperatureNodeId = NodeId.Create(BoilerModel2.Variables.Boilers_Boiler__2_ParameterSet_BaseTemperature, OpcPlc.Namespaces.OpcPlcBoiler, Session.NamespaceUris);
255-
var statusCode = WriteValue(baseTemperatureNodeId, newValue);
256-
statusCode.Should().Be(StatusCodes.Good);
257-
var currentBaseTemperature = (float)Session.ReadValue(baseTemperatureNodeId).Value;
258-
currentBaseTemperature.Should().Be(newValue);
259-
}
260-
261-
[TestCase, Order(10)]
262-
public void SetTargetTemperature()
263-
{
264-
var newValue = 125f;
265-
var targetTemperatureNodeId = NodeId.Create(BoilerModel2.Variables.Boilers_Boiler__2_ParameterSet_TargetTemperature, OpcPlc.Namespaces.OpcPlcBoiler, Session.NamespaceUris);
266-
var statusCode = WriteValue(targetTemperatureNodeId, newValue);
267-
statusCode.Should().Be(StatusCodes.Good);
268-
var currentTargetTemperature = (float)Session.ReadValue(targetTemperatureNodeId).Value;
269-
currentTargetTemperature.Should().Be(newValue);
270-
}
271-
272-
[TestCase, Order(11)]
273-
public void SetTemperatureChangeSpeed()
274-
{
275-
var newValue = 10f;
276-
var temperatureChangeSpeedNodeId = NodeId.Create(BoilerModel2.Variables.Boilers_Boiler__2_ParameterSet_TemperatureChangeSpeed, OpcPlc.Namespaces.OpcPlcBoiler, Session.NamespaceUris);
277-
var statusCode = WriteValue(temperatureChangeSpeedNodeId, newValue);
278-
statusCode.Should().Be(StatusCodes.Good);
279-
var currentTemperatureChangeSpeed = (float)Session.ReadValue(temperatureChangeSpeedNodeId).Value;
280-
currentTemperatureChangeSpeed.Should().Be(newValue);
281-
}
282-
283-
[TestCase, Order(12)]
284-
public void SetOverheatedThresholdTemperature()
285-
{
286-
var newValue = 100f;
287-
var overheatedThresholdTemperatureNodeId = NodeId.Create(BoilerModel2.Variables.Boilers_Boiler__2_ParameterSet_OverheatedThresholdTemperature, OpcPlc.Namespaces.OpcPlcBoiler, Session.NamespaceUris);
288-
var statusCode = WriteValue(overheatedThresholdTemperatureNodeId, newValue);
289-
statusCode.Should().Be(StatusCodes.Good);
290-
var currentOverheatedThresholdTemperature = (float)Session.ReadValue(overheatedThresholdTemperatureNodeId).Value;
291-
currentOverheatedThresholdTemperature.Should().Be(newValue);
292-
}
293-
294-
[TestCase, Order(13)]
295-
public void SetMaintenanceInterval()
296-
{
297-
var newValue = 360u;
298-
var maintenanceIntervalNodeId = NodeId.Create(BoilerModel2.Variables.Boilers_Boiler__2_ParameterSet_MaintenanceInterval, OpcPlc.Namespaces.OpcPlcBoiler, Session.NamespaceUris);
299-
var statusCode = WriteValue(maintenanceIntervalNodeId, newValue);
300-
statusCode.Should().Be(StatusCodes.Good);
301-
var currentMaintenanceInterval = (uint)Session.ReadValue(maintenanceIntervalNodeId).Value;
302-
currentMaintenanceInterval.Should().Be(newValue);
303-
}
304-
305-
[TestCase, Order(14)]
306-
public void SetOverheatInterval()
307-
{
308-
var newValue = 150u;
309-
var overheatIntervalNodeId = NodeId.Create(BoilerModel2.Variables.Boilers_Boiler__2_ParameterSet_OverheatInterval, OpcPlc.Namespaces.OpcPlcBoiler, Session.NamespaceUris);
310-
var statusCode = WriteValue(overheatIntervalNodeId, newValue);
311-
statusCode.Should().Be(StatusCodes.Good);
312-
var currentMaintenanceInterval = (uint)Session.ReadValue(overheatIntervalNodeId).Value;
313-
currentMaintenanceInterval.Should().Be(newValue);
314-
}
315249
}

0 commit comments

Comments
 (0)