技术论坛

 C#改的一个监控IO的小程序

返回主题列表
作者 主题
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 所需的双引号字符还必须包含在双引号中
//当IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
//HDR=Yes,会过滤表头内容,HDR=No,可以读取表头信息,默认情况HDR=Yes

                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读取太慢等等

源码与程序我已打包上传,希望大家多多指点,同时希望大家可以出更好的作品,让西门子论坛百花齐放,每个人都能在此找到自己想要的知识,谢谢!

IO监控.zip

S7NET (3).zip


努力工作,好好学习!
Mists97
侠圣

经验值: 2048
发帖数: 166
精华帖: 0
1楼    2021-02-17 16:32:11
主题:回复:C#改的一个监控IO的小程序

厉害了,学习学习!

云山雾绕
至圣

经验值: 16400
发帖数: 2397
精华帖: 0
2楼    2021-02-17 16:57:05
主题:回复:C#改的一个监控IO的小程序

学习了,谢谢分享!

开心每一天,懂得包容、感恩!
20211111
奇侠

经验值: 7767
发帖数: 1150
精华帖: 1
3楼    2021-02-17 21:21:52
主题:回复:C#改的一个监控IO的小程序

 谢谢分享,,,,,

,,
天芯
至圣

经验值: 18864
发帖数: 2107
精华帖: 0
4楼    2021-02-17 21:23:11
主题:回复:C#改的一个监控IO的小程序

先下载学习

JL4_207
侠圣

经验值: 4545
发帖数: 809
精华帖: 2
5楼    2021-02-17 21:26:28
主题:回复:C#改的一个监控IO的小程序

 学习一下,感谢分享,,,,

暂无
henry.wang
至圣

经验值: 10990
发帖数: 997
精华帖: 31
6楼    2021-02-17 23:08:01
主题:回复:C#改的一个监控IO的小程序

IT和自动化的融合来了。。。

Chance favors the prepared mind.
sph123
侠圣

经验值: 2573
发帖数: 79
精华帖: 2
7楼    2021-02-18 09:17:21
主题:回复:C#改的一个监控IO的小程序

就需要楼主这样的,大家多分享经验

别低估专业,别高估自己,精进的人生,从敬畏专业开始。
CCC@CCC
侠士

经验值: 1751
发帖数: 379
精华帖: 0
8楼    2021-02-18 09:53:57
主题:回复:C#改的一个监控IO的小程序


希望论坛越来越多像楼主这样的人

路漫漫其修远
Hery_Han
侠圣

经验值: 2848
发帖数: 223
精华帖: 1
9楼    2021-02-18 10:41:54
主题:回复:C#改的一个监控IO的小程序

感谢楼主分享

某C
新手

经验值: 23
发帖数: 1
精华帖: 0
10楼    2021-02-18 15:34:26
主题:回复:C#改的一个监控IO的小程序


谢谢楼主,先下载学习了


泮灿锋
侠圣

经验值: 2327
发帖数: 190
精华帖: 0
11楼    2021-02-19 08:09:45
主题:回复:C#改的一个监控IO的小程序

谢谢分享!

1112让人
mengquanshui
至圣

经验值: 11237
发帖数: 3296
精华帖: 4
12楼    2021-02-19 08:21:19
主题:回复:C#改的一个监控IO的小程序

谢谢楼主,先下载学习了

喜欢用SIEMENS,乐水工控生活 打造工业智能家居生活!
ZD_JY
至圣

经验值: 13069
发帖数: 1081
精华帖: 8
13楼    2021-02-19 08:31:28
主题:回复:C#改的一个监控IO的小程序


,楼主是做IT出圈的?现在论坛感觉it风越刮越强

做最好的自己!活出自我!
知乎者也
游侠

经验值: 529
发帖数: 46
精华帖: 0
14楼    2021-02-19 08:34:48
主题:回复:C#改的一个监控IO的小程序

  谢谢分享

唯有努力,不负光阴。
zhcwos
侠圣

经验值: 3103
发帖数: 440
精华帖: 0
16楼    2021-02-19 09:38:00
主题:回复:C#改的一个监控IO的小程序

 

这个高级的东西,值得学习哦

云淡风轻
工控菜鸡
游民

经验值: 129
发帖数: 12
精华帖: 0
19楼    2021-02-19 13:50:14
主题:回复:C#改的一个监控IO的小程序

谢谢楼主分享

有时候正是那些无人看好之人,成就了无人能及的成就。
nufangdeqingnian
侠客

经验值: 867
发帖数: 83
精华帖: 0
20楼    2021-02-19 14:23:12
主题:回复:C#改的一个监控IO的小程序

学习了,谢谢楼主

Mr.小孙
侠客

经验值: 758
发帖数: 148
精华帖: 0
26楼    2021-02-20 11:04:52
主题:回复:C#改的一个监控IO的小程序

 博图有调试工具能看到整个网络及IO点状态  软件很小

QQ群:336416617
heshili
侠圣

经验值: 4014
发帖数: 338
精华帖: 0
27楼    2021-02-20 13:54:31
主题:回复:C#改的一个监控IO的小程序

你这不是小弟能做到的,厉害。

醉心自动化,开开心心工作
Rossi84
侠圣

经验值: 3904
发帖数: 370
精华帖: 1
31楼    2021-02-21 14:23:42
主题:回复:C#改的一个监控IO的小程序

s7net类库挺好用的,虽然我没在实际项目上应用过,论坛里大神门也发过相关的帖子,下载使用200smart也做过了测试,还是很好用的

无法改变之前,努力改变之后
薛辉
游士

经验值: 165
发帖数: 12
精华帖: 0
47楼    2021-02-27 16:22:13
主题:回复:C#改的一个监控IO的小程序



连接PLC就出现这个错误,我系统是WIN10专业版64位

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。