using IoTClient.Clients.PLC;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MCNet
{
public partial class Form1 : Form
{
//三菱PLC ASCLL
private MitsubishiClient client;
bool boolPLCConnect;
public Form1()
{
InitializeComponent();
}
private void btnConnect_Click(object sender, EventArgs e)
{
try
{
client?.Close();
//三菱PLC需开启TCP通信,并且设置端口号
client = new MitsubishiClient(0,txtIP.Text.Trim(), int.Parse(txtport.Text.Trim()));
var result = client.Open();
if (result.IsSucceed)
{
boolPLCConnect = true;
labStatus.Text = "连接PLC成功";
labStatus.ForeColor = Color.Green;
timer1.Enabled = true;
}
else
{
boolPLCConnect = false;
labStatus.Text = "连接PLC失败";
labStatus.ForeColor = Color.Red;
MessageBox.Show("连接PLC服务器失败!", "系统出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void button1_Click(object sender, EventArgs e)
{
client?.Close();
boolPLCConnect = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (boolPLCConnect)
{
if (client.ReadBoolean("X0").Value)
{
labx1.BackColor = Color.Red;
}
else
{
labx1.BackColor = Color.Gray;
}
if (client.ReadBoolean("X1").Value)
{
labx2.BackColor = Color.Red;
}
else
{
labx2.BackColor = Color.Gray;
}
if (client.ReadBoolean("X2").Value)
{
labx3.BackColor = Color.Red;
}
else
{
labx3.BackColor = Color.Gray;
}
if (client.ReadBoolean("X3").Value)
{
labx4.BackColor = Color.Red;
}
else
{
labx4.BackColor = Color.Gray;
}
if (client.ReadBoolean("Y0").Value)
{
btny1.BackColor = Color.Red;
}
else
{
btny1.BackColor = Color.Gray;
}
if (client.ReadBoolean("Y1").Value)
{
btny2.BackColor = Color.Red;
}
else
{
btny2.BackColor = Color.Gray;
}
if (client.ReadBoolean("Y2").Value)
{
btny3.BackColor = Color.Red;
}
else
{
btny3.BackColor = Color.Gray;
}
if (client.ReadBoolean("Y3").Value)
{
btny4.BackColor = Color.Red;
}
else
{
btny4.BackColor = Color.Gray;
}
if (client.ReadBoolean("M0").Value)
{
btnm1.BackColor = Color.Red;
}
else
{
btnm1.BackColor = Color.Gray;
}
if (client.ReadBoolean("M1").Value)
{
btnm2.BackColor = Color.Red;
}
else
{
btnm2.BackColor = Color.Gray;
}
if (client.ReadBoolean("M2").Value)
{
btnm3.BackColor = Color.Red;
}
else
{
btnm3.BackColor = Color.Gray;
}
if (client.ReadBoolean("M3").Value)
{
btnm4.BackColor = Color.Red;
}
else
{
btnm4.BackColor = Color.Gray;
}
labd1.Text = client.ReadInt16("D100").Value.ToString();
labd2.Text = client.ReadInt16("D101").Value.ToString();
labd3.Text = client.ReadInt16("D102").Value.ToString();
labd4.Text = client.ReadInt16("D103").Value.ToString();
}
}
private void button2_Click(object sender, EventArgs e)
{
short sTemp = Convert.ToInt16(textBox1.Text);
client.Write("D100", sTemp);
}
private void btny1_Click(object sender, EventArgs e)
{
if (btny1.BackColor == Color.Red)
{
client.Write("Y0", false);
}
else
{
client.Write("Y0", true);
}
}
private void btnm1_Click(object sender, EventArgs e)
{
if (btnm1.BackColor == Color.Red)
{
client.Write("M0", false);
}
else
{
client.Write("M0", true);
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
C#上位机与PLC通讯源码 C#与三菱PLC通讯MC协议
最新推荐文章于 2024-07-07 18:36:30 发布
本文介绍了如何在WindowsForm应用程序中使用MitsubishiPLCClient库连接到PLC设备,实现数据读写,监控输入/输出状态以及数值变量的读取和设置。
摘要由CSDN通过智能技术生成