c#实现上位机数据采集的项目总结

本文总结了一个使用C#开发的上位机数据采集项目,涉及通过ModbusRTU协议采集PLC数据,无协议通讯采集测试仪数据,分机种保存参数以及使用NPOI将数据写入Excel。通过规范代码和利用开源工具提高效率。
摘要由CSDN通过智能技术生成

功能要求

  1. 采集来自PLC的生产数据和报警信息
  2. 采集来自测试仪的测试数据
  3. 可以分机种保存一些参数
  4. 将采集的数据写入Excel,供MES系统查询和现场查看

项目实现

1、采集PLC数据

硬件采用RS232串口,通讯协议使用ModusbusRTU。以前跟PLC通讯,为求简单,一般直接使用无协议,使用倒没问题,但偶尔出现数据丢失也是烦人,要确保对方接收到数据还要双方写返回数据。使用modbus协议,PLC基本不用写通讯程序,而上位机可以直接自己确认对方是否收到数据,再确认是否给对方重发一次。这个项目只要求采集数据,因为读取的频率高于数据变化,所以偶尔读不到都不影响,使用modbus就更合适了。

        /// <summary>
        /// 通过Modbus读取PLC,获取相应数据
        /// </summary>
        private void ScanPLC()
        {
            //创建字节数组
            byte[] result = null;
            //从站号
            ushort DevAdd = 1;
            //起始地址
            ushort Address = 100;
            //长度
            ushort Length = 5;
            while (running)
            {
                if (plcConnected)
                {
                    result = objModbus.ReadKeepReg(DevAdd, Address, Length);
                    DataProcessing(result, Length);
                }
                else
                {
                    try
                    {
                        objModbus.OpenMyCom(9600, comName1, 8, Parity.Odd, StopBits.One);
                        //objModbus.ReadTimeOut = 500;
                        plcConnected = true;
                        textReceive.Invoke(new ExecuteWork(RecRunData), "重连PLC成功");
                    }
                    catch (Exception ex)
                    {
                        textReceive.Invoke(new ExecuteWork(RecRunData), "重连PLC失败:" + ex.Message);
                        plcConnected = false;
                    }
                }
                Thread.Sleep(1000);
            }

        }

 2、采集测试仪数据

硬件也是采用RS232串口,因为测试仪的说明书不完善,modbus协议没有测试成功,而无协议测试成功了,所以直接采用无协议接收数据。采取的采集数据模式是,测试仪有测试数据马上主动通过串口发送,而我的程序只要一直处于接收状态,有数据就记下。所以建了一个线程一直扫描串口数据。

关于串口无协议通讯,以前也有个烦恼。就是接收数据有时会把一条数据拆成两条或者两条数据合成一条接收,要进行一些处理判断很是麻烦。这次发现Serial自带的读取功能很全面(可以在Serialport这个类下找到)。于是我直接采用了下面这个函数,再也不用担心老是读错数据了~


        //
        // 摘要:
        //     一直读取到输入缓冲区中的指定 value 的字符串。
        //
        // 参数:
        //   value:
        //     指示读取操作停止位置的值。
        //
        // 返回结果:
        //   
Soukey采摘网站数据采集软件是一款基于.Net平台的开源软件,也是网站数据采集软件类型中唯一一款开源软件。尽管Soukey采摘开源,但并不会影响软件功能的提供,甚至要比一些商用软件的功能还要丰富。Soukey采摘当前提供的主要功能如下: 1. 多任务多线程数据采集,支持POST方式; 2. 可采集Ajax页面; 3. 支持Cookie,支持手工登录采集数据; 4. 支持采集事务; 5. 支持数据自动及手工导出,导出格式为:文本、Excel、Access、MSSql、Mysql等; 6. 支持在线发布数据; 7. 支持导航网址的采集,导航深度不限; 8. 支持自动翻页; 9. 支持文件下载,可以采集图片、Flash及其他文件; 10. 支持采集结果数据的加工,包括替换、附前缀后缀、截取等操作,支持正则; 11. 采集网址定义不仅支持基本参数定义,也可外接字典数据作为网址参数,进行数据采集; 12. 支持一个任务多实例运行; 13. 提供计划任务,计划任务支持Soukey采集任务、外部可执行文件任务、数据库存储过程任务; 14. 计划任务执行周期支持每天、每周及自定义运行间隔;最小单位为:半小时; 15. 支持任务触发器,即可在采集任务完成后,自动触发执行其他任务(包括可执行文件或存储过程)。 16. 完善的日志功能:系统日志、任务执行日志、出错日志等等; 17. 系统提供MINI浏览器可用于捕获Cookie或POST数据; Soukey采摘并不限制您是否商用此软件,源码完全开放,
### 回答1: 对于“C”这个字母,它是拉丁字母表中的一个辅音字母,它来源于希腊字母“γ”(gamma),在用法和形状上与希腊字母稍有不同。在现代英语和其他一些语言中,C可以产生不同的读音,例如在一些单词中,C的读音为/k/,而在其他单词中,它的读音为/s/或/tʃ/。在编程语言中,“C”也具有重要的地位,它是一种广泛使用的编程语言,旨在提高计算机代码的可移植性和效率。值得一提的是,在音乐领域中,“C”代表着C大调音阶中的主音。另外,C还被用来表示摄氏度单位。总体而言,C这个字母在日常生活和各种学科领域中扮演着重要的角色,给我们提供了许多有趣的用途和意义。 ### 回答2: C是英文字母表中的第三个字母,也是计算机科学中非常重要的一个字符。计算机中的C语言是由美国贝尔实验室的Dennis Ritchie于1972年发明的一种计算机编程语言,它是一种高级编程语言,在计算机科学和软件开发领域中非常流行。 C语言之所以被广泛应用,主要有以下几个原因。首先,C语言是一种相对简单的编程语言,学习和掌握难度相对较小,初学者能够快速入门。其次,C语言是一种高效的编程语言,能够在很多不同的操作系统和计算机上运行,同时支持面向过程和面向对象的编程方法。此外,C语言拥有非常丰富的库函数,开发人员能够轻松地编写出高效、稳定的软件程序。 在计算机科学和软件开发领域中,C语言被广泛应用于许多领域,如操作系统、编译器、数据库、网络通信、嵌入式系统等。C语言编写的操作系统,如Unix、Linux等,被广泛应用于服务器领域,而编写出的编译器则对后续软件开发起到了巨大的推动作用。此外,在物联网和智能家居等领域,C语言也被广泛应用,成为了嵌入式系统开发中必不可少的一部分。 总之,C语言因为各种优势,被认为是一种非常重要的计算机编程语言,无论是初学者还是经验丰富的开发人员,都应该掌握这门语言。 ### 回答3: C是一种编程语言,它是在20世纪70年代由丹尼斯·里奇和肯·汤普森开发的。在计算机科学和软件开发领域中,C语言具有广泛的应用和重要性。 首先,C语言是一门高级语言,它通过编写高级语言程序,可以使计算机执行各种任务。C语言不仅具有广泛的应用,而且非常快速和有效。C语言数据类型和运算符都是直接在计算机硬件上实现的,这是使它真正运行速度快的原因之一。C语言还可以用来编写低级别的操作系统模块和设备驱动程序,这使得C语言在嵌入式系统和操作系统领域中得到广泛使用。 其次,C语言提供了指针的概念,以及简单而灵活的内存管理功能,C语言程序员可以以更高效的方式使用计算机内存。指针允许程序员直接访问计算机内存,这使得C语言非常适合编写需要高度优化程序的应用程序。 此外,C语言还具有可移植性和可重用性。C编译器和库可以在多个操作系统上工作,并且可以编写通用的代码库,以便多个项目可以重用相同的代码库。 最后,C语言的语法简单直观。C语言由基本的算术运算符、循环、判断语句、函数和数组等组成,这导致C语言的语法变得简单而灵活,并且容易学习和理解。这是C语言成为一种流行的编程语言的另一个原因。 综上所述,C语言是一种广泛使用且非常重要的编程语言。它拥有高效、灵活、可移植、可重用的特性,并具有简单的语法,它适用于各种领域,例如嵌入式开发、系统编程、大数据处理、游戏开发等。因此,掌握和熟练使用C语言对于软件开发人员是非常重要的。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知今夕何夕

重赏之下必有勇夫

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值