Ich verwende das durch Secondshiftengineer erstellte McProtocol Nuget -Paket. Richtig. Wenn das LAN -Kabel jedoch nicht angeschlossen und wieder eingesteckt ist, wird die Funktion close () die Trennung nicht ordnungsgemäß behandelt.
Code: Select all
private async Task ConnectToPlc(int timeoutMs = 2000)
{
try
{
var connectTask = Task.Run(() =>
{
PLCData.PLC = new Mitsubishi.McProtocolTcp(_plcIp, _plcPort, Mitsubishi.McFrame.MC3E);
PLCData.PLC.Open();
return PLCData.PLC.Connected;
});
var timeoutTask = Task.Delay(timeoutMs);
var completed = await Task.WhenAny(connectTask, timeoutTask);
if (completed == timeoutTask)
{
AppManager.Instance().IsConnected = false;
Console.WriteLine($"[PLC] Connect TimeOut({timeoutMs}ms 초과)");
return false;
}
bool connected = await connectTask;
AppManager.Instance().IsConnected = connected;
return connected;
}
catch (Exception ex)
{
AppManager.Instance().IsConnected = false;
Console.WriteLine($"[PLC] Exception: {ex.Message}");
return false;
}
}
< /code>
Hier ist der Trennungscode: < /p>
private async void DisconnectToPlc()
{
try
{
PLCData.PLC.Close();
Console.WriteLine("[PLC] Disconnected");
}
catch (Exception ex)
{
Console.WriteLine("[PLC] Disconnected_Exception");
}
}
Bildbeschreibung eingeben.>