111,113
社区成员




连接PLC程序如下:
private void ConnectPLC_Click(object sender, EventArgs e)
{
LocalPLC = new Plc(CpuType.S71200,"192.168.0.1", 0, 1);
LocalPLC.Open();
if (LocalPLC.IsConnected == true)
{
ConnectPLC.BackColor = Color.Green; //如果通讯成功,连接键变成绿色
}
else
{
MessageBox.Show("连接失败");
}
}
连接上的,按钮会变成绿色
中断PLC程序如下:
private void DisconnectPLC_Click(object sender, EventArgs e)
{
ConnectPLC.Enabled=false; //此前没有这行,后来因为中断不了,加上的,但还是中断不了
LocalPLC.Close();
if (LocalPLC.IsConnected == false)
{
ConnectPLC.BackColor = Color.Gray; //如果通讯中断,连接键变成灰色
}
else
{
MessageBox.Show("中断失败");
}
}
可是中断不了,连接按钮不会变成灰色,也一直没有显示“中断失败”
试一下:
// 声明PLC对象(确保类级别声明)
private Plc LocalPLC { get; set; }
private void ConnectPLC_Click(object sender, EventArgs e)
{
// 清理现有连接
if (LocalPLC != null)
{
LocalPLC.Close();
LocalPLC = null;
}
// 创建新连接
LocalPLC = new Plc(CpuType.S71200, "192.168.0.1", 0, 1);
try
{
LocalPLC.Open();
ConnectPLC.BackColor = LocalPLC.IsConnected ? Color.Green : Color.Red;
}
catch (Exception ex)
{
MessageBox.Show($"连接失败: {ex.Message}");
ConnectPLC.BackColor = Color.Red;
}
}
private void DisconnectPLC_Click(object sender, EventArgs e)
{
try
{
if (LocalPLC != null)
{
LocalPLC.Close();
// 等待连接状态更新(根据库的实现可能需要)
System.Threading.Thread.Sleep(100);
}
// 无论是否成功都更新UI状态
UpdateConnectionState();
}
catch (Exception ex)
{
MessageBox.Show($"断开异常: {ex.Message}");
UpdateConnectionState();
}
}
// 统一更新连接状态
private void UpdateConnectionState()
{
if (InvokeRequired)
{
Invoke(new Action(UpdateConnectionState));
return;
}
bool isConnected = LocalPLC?.IsConnected == true;
ConnectPLC.BackColor = isConnected ? Color.Green : Color.Gray;
// 可选:显示状态提示
statusLabel.Text = isConnected ? "已连接" : "已断开";
}