Visual Studio 2010--C#跟西门子1200(Sharp7)窗体控制⑨--循环读取
上期回顾(上期完成了IO监控的窗体界面的搭建,做了文本注释,以及状态框):
本期我们说一下怎么把PLC的输入输出,捕捉到C#窗体上显示监控状态,上次搭好框架后,这期就开始写代码了
1.0 这里需要调用EBRead的方法,这个方法是读取PLC输入地址数据的,这里从0开始到1的2个字节,共16位相当于I0.0~I1.7
var buffer = new byte[2];
//读取PLC的输入地址0开始的2个字节的数据,读到buffer
client.EBRead(0, buffer.Length, buffer); //PLC的输入读取
2.0 读取两个字节到缓冲区后,把第一个字节I0.0-I0.7的8位,先取出来放置到,Label控件OK中显示
var buffer = new byte[2];
//读取DB1的从地址0开始的38个字节的数据,读到buffer
client.EBRead(0, buffer.Length, buffer); //PLC的输入读取
byte db1da16 = S7.GetByteAt(buffer, 0);
OK.Text = db1da16.ToString();
3.0 然后再写一个位的,把第一个字节的第一位I0.0,单独拿出来放到db1dbx00,然后判断是true/false,然后显示不同的背景色
bool db1dbx00 = S7.GetBitAt(buffer, 0, 0);
if (db1dbx00 == true)
{
I0_0.BackColor = Color.Green;
}
else
{
I0_0.BackColor = Color.White;
}
4.0 按照上面的例子,依次写下I0.2,I1.0的点位反馈
bool db1dbx02 = S7.GetBitAt(buffer, 0, 2);
if (db1dbx02 == true)
{
I0_2.BackColor = Color.Green;
}
else
{
I0_2.BackColor = Color.White;
}
bool db1dbx10 = S7.GetBitAt(buffer, 1, 0);
if (db1dbx10 == true)
{
I1_0.BackColor = Color.Green;
}
else
{
I1_0.BackColor = Color.White;
}