c# 基于国产串口服务器的电能数据采集系统
根据开发需求,需要对一套工厂供配电系统电能数据进行采集,现场实际情况及数采系统要求如下:
1、该系统由两台变压器(10kv/0.4kv)组成,次级有30多条回路,即30多块多功能电能表(485端口)。
2、数采系统要求5分钟采集一次即时值,其中变压器需要采集线电压/相电压/相电流/功率因数/有功功率/无功功率/有功电能/无功电能,各支路只采集线电压/相电流/有功电能即可。
硬件及网络设计:
1、每台变压器配置一台串口服务器(8口),该变压器下的支路电能表通过485总线连接至串口服务器,每个串口连接4块电能表。
2、两台服务器通过光纤以TCP/IP网络连接至办公室上位机数采系统(约200米)。
上位机用C#开发:
1、数采系统可展示配电系统的实时值、当日负荷曲线(包含变压器及各支路)、当月负荷曲线、电能统计等基本功能。
2、数据以EXCEL格式储存,分为每日/每月记录表。可能有人问为什么不用数据库?使用数据库就意味着上位机要安装数据库,后期还需要对该系统使用者进行筛选、保存、导出之类的操作培训,使用EXCEL基本不需要培训了,更主要的是,咳咳,笔者不会数据库…
笔者从网上比较各厂家传串口服务器及测试,选用了一家,该串口服务器有以下功能:
1、支持串口轮询,
2、支持TCP Server及TCP Client模式。
其中最重要的串口轮询功能该服务器比较好用,设置界面友好,售后技术回复及时,调试起来非常方便,在这里可以打一波广告,也就几百块钱一台;轮询采集结束后数据打包通过TCP端口发送,上位机c#根本就不需要管串口这一块,数采系统接收就可以了。
电路设计:
没什么说的,看图吧
软件界面:目前较简单,只有两个界面。
1、两个曲线栏,两台变压器每日负荷曲线,展示的数据有变压器负荷率/当日功率峰值/当日电能等,粗红曲线为变压器功率曲线,较细曲线为各分表曲线,分表曲线可以勾选添加,该数据为5分钟记录一次,同时记录到日数据excel表中。
2、曲线栏下部为实时数据区,左侧为变压器实时数据,右侧为各分表实时数据,只展示了相电流(A相)/实时有功功率/开关负荷率。每10秒更新一次,只显示不记录。
3、标题栏还有配电室温度及湿度显示,也是每5分钟记录一次。
界面二:各类统计曲线
界面包含:
1、各分表月度电能柱状图
2、电能比例饼图
3、变压器峰值及各单位峰值曲线月度曲线
4、功率日曲线,用于查询、调阅各电能表日曲线
程序要点:
1、串口服务器的设置:
根据使用手册及咨询厂家技术人员就可以了,这是我们设置为TCP Server模式,串口轮询后打包发送到TCP端口,每10秒轮询一次。
服务器设置界面:
2、c#的TCP连接
c#上位机里我们采用TCP Clint模式,启动程序后,点击变压器图案连接串口服务器,连接正常后该图案变成绿色,即知道连接正常。
然后监听端口,有数据过来即拆分数据,解析后赋值给各变量。
服务器连接方法:
端口监听:
是不是很简单,这样就可以等数据过来了。
收到数据后解析,数据以16进制过来,我们要知道每Byte数据含义即可拆分、解析、浮点转换,赋值变量。
例:5#变压器数据过来后,先去除数据的头部有关信息数据,再截取60Byte存入nowdata,再取首字翻转,然后转换为int16整数,最后根据电能表的比例参数计算为浮点,最后赋值给five_Aa,即可得到了5#变压器的A相电流值。
按以上套路,依次取得该变压器下所有电能表的数据。
3、TCP的心跳及重新连接
在数采过程中,网络会因为这样那样的原因断开,这时我们就需要判断和重新连接了,使用client.Connected属性判断是否断网是行不通的,TCP的心跳有几种方法,大家可以查一下,这里我们系统是定时传送数据的,我们可以结合这个特点来编写自己的心跳程序,可以参考我的另一篇文章:C# 上位机学习之简单粗暴法2_TcpClient的心跳程序
链接: link.
重连就简单啦,网络断开后每3分钟重新连接一次即可,程序略。
4、图表功能:
使用c#的chart组件即够用了,分为初始化、取数据、描点即可。
绘图:例5#变压器日曲线描点
5、数据记录
本系统采用xls文件记录数据,笔者分析了关于c#中处理EXCEL表格的各种类及组件,最后选用Spire.Xls组件类,该类功能全,能满足本系统需求了。
“Spire.XLS是E-iceblue开发的一套基于企业级的专业Office文档处理的组件之一,全称Spire.Office for .NET。旗下有Spire.Doc,Spire XLS,Spire.PDF,Spire.BarCode等多款专业组件,为各种Office文档在程序处理上提供了很大的方便,官方为各种功能提供了大量的在线api,简化了使用组件的难度。组件使用时不需要本地Office组件的支持。Spire.Office是一款企业级组件,它提供了收费版本和免费版本两种级别,一般来说,对于个人的应用,免费版本已足够用。"
最大的特点是使用时不需要本地Office组件的支持,不需要考虑用户是使用微软office还是WPS。功能就不介绍了,有兴趣的去查询。
例:写入每日数据表
6、文件功能
我们事先建立好几套xls模板,分为变压器/分表的日报表和月报表,最后打包到安装程序中,程序安装后在安装目录下建立\palte目录,将模板文件拷贝进去备用,然后程序启动时先检查是否存在当日文件,无则建立有则略过,然后每日零点重新以模板文件为基础,拷贝建立几个以编号和日期为文件名的文件即可,当然还需要在表格内填写表编号及日期的信息,每月首日还要建立当月记录目录。
6、运行log
我们还需要记录下程序运行的日志,再添加下日志功能吧。
主要记录通讯情况、是否有数据超差等,看需要来定。
日志实现起来也很简单:
最后测试好打包安装程序即可。
该数采系统可以多机安装,体量小(安装包20多M),手提电脑上安装这套数采系统,开能源例会时可以展示公司配电系统实时数据,是不是有点牛逼闪闪。