当前位置: 代码迷 >> 综合 >> Visual Studio 2010--C#跟西门子1200(Sharp7)窗体控制⑨--循环读取
  详细解决方案

Visual Studio 2010--C#跟西门子1200(Sharp7)窗体控制⑨--循环读取

热度:85   发布时间:2024-02-01 13:03:28.0

Visual Studio 2010--C#跟西门子1200(Sharp7)窗体控制⑨--循环读取

 

上期回顾(上期完成了IO监控的窗体界面的搭建,做了文本注释,以及状态框):

image.png

本期我们说一下怎么把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的输入读取

image.png

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();

image.png

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;

            }

image.png

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;

            }

image.png

 

 

  相关解决方案