public bool ReconnectPlc() { Stopwatch sw = new Stopwatch(); sw.Start(); while (true) { // 等待5s的重连 if (sw.Elapsed > TimeSpan.FromSeconds(5)) { break; } int result = _s7Client.ConnectTo(PlcIPAddress, Rack, Slot); Thread.Sleep(50); if (result == 0) { ReconnectEvent?.Invoke(this, null); _isConnected = true; break; } Thread.Sleep(800); } sw.Stop(); if (_isConnected) { _hbTimer.Start(); } return(_isConnected); }
private void InitPlcConnect(object state) { CancellationToken token = (CancellationToken)state; int result = _s7Client.ConnectTo(PlcIPAddress, Rack, Slot); Thread.Sleep(10); // 很小的复位时间 while (true) { if (token.IsCancellationRequested) { break; } if (result == 0 /* && _s7Client.Connected()*/) { _initEvent.Set(); ReconnectEvent?.Invoke(this, null); _isConnected = true; _initPlcConnect = true; break; } Thread.Sleep(2000); // 等待2s延时连接 result = _s7Client.Connect(); Thread.Sleep(10); } }