Visual Studio 2010--C#跟西门子1200(Sharp7)窗体控制⑦--循环读取
上期回顾(上期完成了PLC的Dint变量数据,循环周期读取,并计数扫描次数):
本期在说下其他类型变量的读取,以及PLC的IO监控的状态的读取
1.0 看下图,我们准备读取PLC的DB1,地址4.0开始的实数Real
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();
}
3.0 保存,按F5调试,代码正确的话,你就会看到检测的数据了,13.14,如果你的类型没对好,可能就会出现13.1400000034什么的,所有要注意下