Visual Studio 2010--C#跟西门子1200(Sharp7)窗体控制⑤--循环读取
上期回顾(上期主要是对准备读取PLC的统计数据,先在VS上建了4个Lable用来显示,做了一个定时器用来循环读取):
本期开始写定时器怎么定时读取PLC的数据呢
1.0 先在定时器代码下,建立对应PLC的通讯,如下,创建S7客户端的对象,再输入对应PLC的IP,插槽,机架,建立通讯
private void timer1_Tick(object sender, EventArgs e)
{
var client = new S7Client();//创建S7客户端对象
int comectionResult = client.ConnectTo("192.168.0.1", 0, 1);//接受来次通讯的结果
}
2.0 建立读取数据的缓冲区
private void timer1_Tick(object sender, EventArgs e)
{
var client = new S7Client();//创建S7客户端对象
int comectionResult = client.ConnectTo("192.168.0.1", 0, 1);//接受来次通讯的结果
var buffer = new byte[38];
//读取DB1的从地址0开始的38个字节的数据,读到buffer
int readResult = client.DBRead(1, 0, buffer.Length, buffer);
}
3.0 把要的数据读取出来,比如说我要读取PLC的1号DB块,地址8的Dint变量Dintvaniable的数据
4.0 那我C#里面就要这么写,buffer的地址8的字节输出给OK的Text显示,写到这里代码主要功能代码就写完了,下期再写个启动跟计数就可以调试了
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();
}