作者 | 主题 |
---|---|
zunzhi 侠圣 经验值:2714 发帖数:118 精华帖:5 |
楼主 2021-02-17 15:45:30
主题:C#改的一个监控IO的小程序 浏览论坛发现一个C#写的与PLC通信的程序,链接为http://www.ad.siemens.com.cn/club/bbs/post_like.aspx?b_id=7&a_id=1564378 但每次只能读写一个点,于是想能不能加个IO监控功能,直接将IO点写入一个EXCEL表格,然后导入程序,这样我们在办公室就可以直接监控PLC的IO了,不必安装博途,博途确实太大了,对电脑要求太高。由于本人基础太差,只能实现初步的一个简单的功能,抛转引玉,希望大牛门能多多指点! 本文读取excel用了System.Data.OleDb类,使用前需要下载安装支持文件,下载时注意区分32或64位。 程序测试画面如下: 软件经过测试与1500连接正常,只是打开EXCEL读取时有点慢 这是打开excel的方法 public DataSet getData() { var path = "IO.xlsx"; string filesuffix = System.IO.Path.GetExtension(path); if (string.IsNullOrEmpty(filesuffix)) return null; using (DataSet ds = new DataSet()) { string connString = ""; connString = "Provider = Microsoft.ACE.OLEDB.12.0;" + "Data Source =" + path + ";" + "Extended Properties = \"Excel 12.0; HDR = YES; IMEX = 1 \""; //请注意,Extended Properties 所需的双引号字符还必须包含在双引号中 DataTable alldata = null; string sql_select = "SELECT* FROM[Sheet1$]"; using (OleDbConnection conn = new OleDbConnection(connString)) using (OleDbDataAdapter cmd = new OleDbDataAdapter(sql_select, conn)) { NewMethod1(conn); cmd.Fill(ds); } if (ds == null ds.Tables.Count <= 0) return null; alldata = ds.Tables[0]; RowMax = alldata.Rows.Count; return ds; } 下面是添加到ListView的方法 private void button1_Click(object sender, EventArgs e) { listView1.Items.Clear();//清空listView this.listView1.BeginUpdate(); getData(); if (Form1.lianjie == 0) { MessageBox.Show("请连接PLC!"); } for (int i = 0; i < RowMax; i++) { ListViewItem lvi = new ListViewItem(); lvi.Text = "" + i; lvi.SubItems.Add(NewMethod().Tables[0].Rows[i].ItemArray[0].ToString()); lvi.SubItems.Add(NewMethod().Tables[0].Rows[i].ItemArray[1].ToString()); lvi.SubItems.Add(NewMethod().Tables[0].Rows[i].ItemArray[2].ToString()); if (Form1.lianjie == 1)//判断连接状态 { //这句是添加读取PLC的值 lvi.SubItems.Add(S7.Form1.plc.Read(NewMethod().Tables[0].Rows[i].ItemArray[1].ToString()).ToString()); } this.listView1.Items.Add(lvi); } this.listView1.EndUpdate(); } } } 程序需要改进的地方有很多,比如显示方式只有十进制的,后续有时间会增加16进制的,还有就是打开EXCEL读取太慢等等 源码与程序我已打包上传,希望大家多多指点,同时希望大家可以出更好的作品,让西门子论坛百花齐放,每个人都能在此找到自己想要的知识,谢谢!
努力工作,好好学习!
|