C#使用S7读写西门子1200
学习慧兰博的C#与工业自动化U盘版,在这里做记录。有什么错误的地方请指出来,互相学习。(PS如果侵权慧兰博请及时联系我删除。)
完整程序包和S7.Net库及使用说明:https://download.csdn.net/download/weixin_38950569/11645430
上传个界面让大家看的更明白一些,感觉我的命名还可以,应该都能直接看懂吧,看不懂我也没办法了~
废话不说直接上代码:
Plc S71200;//声明一个类型为PLC的内部变量
private void Form1_Load(object sender, EventArgs e)
{
comDT.Items.Add("Int");
comDT.Items.Add("DInt");
comDT.Items.Add("Real");
comDT.Text = "Real";
}
//连接
private void btnLink_Click(object sender, EventArgs e)
{
//创建连接对象
S71200 = new Plc(CpuType.S71200, txtAddress.Text, Convert.ToInt16(txtRack.Text), Convert.ToInt16(txtSlot.Text));
S71200.Open();
}
//断开
private void btnBreak_Click(object sender, EventArgs e)
{
S71200.Close();
}
//读数据
private void btnRead_Click(object sender, EventArgs e)
{
//浮点
if(comDT.Text=="Real")
{
double MyPlcData = ((uint)S71200.Read("DB" + txtDB.Text + "." + "DBD" + txtStart.Text)).ConvertToDouble();
MessageBox.Show(MyPlcData.ToString());
}
//整数
else if(comDT.Text == "Int")
{
short MyPlcData = ((ushort)S71200.Read("DB" + txtDB.Text + "." + "DBW" + txtStart.Text)).ConvertToShort();
MessageBox.Show(MyPlcData.ToString());
}
//双整数
else if(comDT.Text =="DInt")
{
int MyPlcData = ((uint)S71200.Read("DB" + txtDB.Text + "." + "DBD" + txtStart.Text)).ConvertToInt();
MessageBox.Show(MyPlcData.ToString());
}
}
//写PLC
private void btnWrite_Click(object sender, EventArgs e)
{
//浮点
if (comDT.Text == "Real")
{
double MyData = Convert.ToDouble(txtWrite.Text);
S71200.Write("DB" + txtDB.Text + "." + "DBD" + txtStart.Text,MyData.ConvertToUInt());
}
//整数
else if (comDT.Text == "Int")
{
short MyData = Convert.ToInt16(txtWrite.Text);
S71200.Write("DB" + txtDB.Text + "." + "DBW" + txtStart.Text,MyData.ConvertToUshort());
}
//双整数
else if (comDT.Text == "DInt")
{
int myData = Convert.ToInt32(txtWrite.Text);
S71200.Write("DB" + txtDB.Text + "." + "DBD" + txtStart.Text,myData);
}
}
完整程序包和S7.Net库及使用说明:https://download.csdn.net/download/weixin_38950569/11645430