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

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

热度:89   发布时间:2024-01-31 13:43:50.0

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

 

上期回顾(上期完成了PLC的Dint变量数据,循环周期读取,并计数扫描次数):

image.png

本期在说下其他类型变量的读取,以及PLC的IO监控的状态的读取

1.0 看下图,我们准备读取PLC的DB1,地址4.0开始的实数Real

image.png

2.0 切换到VS界面上,C#编程要在原来的Dint读取代码后面,加上float db1da20 = S7.GetRealAt(buffer, 4);,这里要注意一点C#的类型跟PLC的不太一样,在这里强制转换的时候注意对应,像这里float为32位浮点数,而PLC的实数Real也是32位,然后在Lable控件NOK的Text上显示,其实同理也可以做int整型的显示,int整型在C#跟PLC上都是一样的,无缝连接就行,对于PLC的一般常用的也就是这几个,int,Dint,Bool,Real

private void timer1_Tick(object sender, EventArgs e)

        {

            var client = new S7Client();//创建S7客户端对象

            client.ConnectTo("192.168.0.1", 0, 1);//接受来次通讯的结果

            var buffer = new byte[38];

            //读取DB1的从地址0开始的38个字节的数据,读到buffer

            client.DBRead(1, 0, buffer.Length, buffer);

 

            int db1da16 = S7.GetDIntAt(buffer, 8);

            OK.Text = db1da16.ToString();

 

            float db1da20 = S7.GetRealAt(buffer, 4);//float 32位浮点数而PLC的Real也是32位

            NOK.Text = db1da20.ToString();

}

image.png

3.0 保存,按F5调试,代码正确的话,你就会看到检测的数据了,13.14,如果你的类型没对好,可能就会出现13.1400000034什么的,所有要注意下

image.png

 

  相关解决方案