发表于:2022/2/20 20:14:47
#0楼
一个项目两个窗体
一个主窗体和一个软键盘窗体。连接西门子S71200的程序是在主窗体里,可以成功连接plc并读取数据。问题是第二个窗体连接不到plc啊。
哪位大神帮看下
主窗体连接程序
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Plc plc = new Plc(CpuType.S71200, "ip地址", 0, 1); //这里地址改了,因为论坛以为我输入电话号了
private void button1_Click(object sender, EventArgs e)
{
try
{
plc.Open();//连接PLC
}
catch (Exception)
{
MessageBox.Show("连接时间超时,请检查网络");
}
第二个窗体就是软键盘窗体的程序 直接实例化form1,得到form1的对象fo1,调用fo1的plc对象。问题是连接不上
private void label1_Click(object sender, EventArgs e)
{
this.label1.BackColor = Color.Red;
Form1 fo1=new Form1();
if (fo1.plc.IsConnected == false)
{
MessageBox.Show("未连接PLC!", "连接提示", MessageBoxButtons.OK);
}
else
{
try
{
string[] arr = (fo1.txt_read_addr.Text.ToUpper()).Split('.');
string valuetype = arr[1].Substring(0, 3);
if (valuetype == "DBX")
{
fo1. plc.Write(fo1.txt_read_addr.Text.ToUpper(), Convert.ToBoolean(this.textBox1.Text));
}
else if (valuetype == "DBW")
{
var value = short.Parse(this.textBox1.Text);
fo1.plc.Write(fo1.txt_read_addr.Text.ToUpper(), value);
}
else if (valuetype == "DBD")
{
double value = double.Parse(this.textBox1.Text);
fo1. plc.Write(fo1.txt_read_addr.Text.ToUpper(), value);
}
else
{
MessageBox.Show("请检查地址是否输入错误!", "输入提示", MessageBoxButtons.OK);
}
}
catch (Exception Ex)
{
MessageBox.Show("请检查输入的“地址”或“值”是否错误!", "输入提示", MessageBoxButtons.OK);
}
}
一个主窗体和一个软键盘窗体。连接西门子S71200的程序是在主窗体里,可以成功连接plc并读取数据。问题是第二个窗体连接不到plc啊。
哪位大神帮看下
主窗体连接程序
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Plc plc = new Plc(CpuType.S71200, "ip地址", 0, 1); //这里地址改了,因为论坛以为我输入电话号了
private void button1_Click(object sender, EventArgs e)
{
try
{
plc.Open();//连接PLC
}
catch (Exception)
{
MessageBox.Show("连接时间超时,请检查网络");
}
第二个窗体就是软键盘窗体的程序 直接实例化form1,得到form1的对象fo1,调用fo1的plc对象。问题是连接不上
private void label1_Click(object sender, EventArgs e)
{
this.label1.BackColor = Color.Red;
Form1 fo1=new Form1();
if (fo1.plc.IsConnected == false)
{
MessageBox.Show("未连接PLC!", "连接提示", MessageBoxButtons.OK);
}
else
{
try
{
string[] arr = (fo1.txt_read_addr.Text.ToUpper()).Split('.');
string valuetype = arr[1].Substring(0, 3);
if (valuetype == "DBX")
{
fo1. plc.Write(fo1.txt_read_addr.Text.ToUpper(), Convert.ToBoolean(this.textBox1.Text));
}
else if (valuetype == "DBW")
{
var value = short.Parse(this.textBox1.Text);
fo1.plc.Write(fo1.txt_read_addr.Text.ToUpper(), value);
}
else if (valuetype == "DBD")
{
double value = double.Parse(this.textBox1.Text);
fo1. plc.Write(fo1.txt_read_addr.Text.ToUpper(), value);
}
else
{
MessageBox.Show("请检查地址是否输入错误!", "输入提示", MessageBoxButtons.OK);
}
}
catch (Exception Ex)
{
MessageBox.Show("请检查输入的“地址”或“值”是否错误!", "输入提示", MessageBoxButtons.OK);
}
}