Udvikling uden fysisk udstyr
Arbejdet med integrationen kan begynde, før udstyret er til rådighed. Simulerede enheder fungerer som modpart, mens I udvikler og afprøver jeres Modbus-klient.
Modbus Digital Twin simulerer TCP- og RTU-enheder, mens I udvikler og tester jeres software. I kan oprette registre og coils og bestemme, hvordan enhederne skal svare, før det fysiske udstyr er til rådighed.
Arbejdet med integrationen kan begynde, før udstyret er til rådighed. Simulerede enheder fungerer som modpart, mens I udvikler og afprøver jeres Modbus-klient.
Både normale driftsforløb og fejlsituationer kan gentages under kontrollerede forhold. Det gælder også timeouts og grænseværdier, som kan være svære at genskabe med fysisk udstyr.
Simulerede Modbus-enheder giver mulighed for at øve konfiguration og fejlfinding uden at ændre på produktionsudstyret.
Simulerede enheder kan indgå i automatiserede regressionstest, når fysisk udstyr ikke er tilgængeligt i buildmiljøet.
De simulerede enheder kan modtage forbindelser fra flere klienter på et Ethernet-netværk.
Den serielle kommunikation har automatisk CRC-beregning og portindstillinger, som I selv kan vælge.
Klienten kan læse digitale indgange og registre samt læse og skrive coils og holdingregistre. Simulatoren understøtter blandt andet disse operationer:
I bestemmer størrelsen på de fire Modbus-dataområder og deres startværdier. Værdierne kan opdateres, mens simuleringen kører.
using ULTRAMEGA.Modbus.DTS;
// Create TCP device on port 502
var device = ModbusDeviceFactory.CreateTcpDevice(
deviceId: 1,
port: 502
);
// Set initial values
device.SetHoldingRegister(0, 1234);
device.SetCoil(0, true);
// Start the device
await device.StartAsync();
// Device now responds to Modbus TCP requests
Console.WriteLine("Device running on port 502");
Console.ReadKey();
await device.StopAsync();
// Create RTU device with serial settings
var device = new ModbusRtuDevice(
deviceId: 2,
portName: "COM3",
baudRate: 9600,
parity: Parity.None,
dataBits: 8,
stopBits: StopBits.One
);
// Configure timeouts
device.ResponseTimeout = TimeSpan.FromMilliseconds(500);
// Start the device
await device.StartAsync();
public class TemperatureSimulator : ModbusTcpDevice
{
private Random random = new Random();
public override void SimulateData()
{
// Simulate 10 temperature sensors
for (int i = 0; i < 10; i++)
{
float temp = 20 + (float)(random.NextDouble() * 15);
SetHoldingRegister(i, (ushort)(temp * 10));
// Set alarm if temperature exceeds threshold
SetCoil(i + 100, temp > 30);
}
base.SimulateData();
}
}
Tallene stammer fra interne målinger og afhænger af computeren og omfanget af simuleringen. Simuleringens registerkort, timing og adfærd skal kontrolleres i forhold til den konkrete enhed. Den afsluttende test skal fortsat udføres med det fysiske udstyr.
Fortæl os, hvilke enheder, registerkort og testforløb I har brug for at simulere. Så gennemgår vi muligheder, licens og integration med jeres testmiljø.