
工控软件
文章平均质量分 65
还是叫明
这个作者很懒,什么都没留下…
展开
-
在ScadaFramework里配置采集Modbus设备
ScadaFramework是一个实现SCADA功能的软件工具,经过简单配置之后,即可采集设备数据,并进行存储、监控、组态可视化,并可将数据上传至平台。本文将介绍如何在ScadaFramework中配置,以采集Modbus协议的设备。原创 2024-04-01 09:46:50 · 1012 阅读 · 0 评论 -
DLMS协议开发指引
某些电表一开始未进入DLMS传送模式,需要进行切换。按照IEC62056-21协议模式E的规定,先发送以下内容:典型的串口设置为:波特率300,校验位Even,数据位7。(也可校验位无,数据位8)V:ASCII码的2,代表使用HDLC。Y:ASCII码的2,代表使用HDLC。Z:ASCII码,波特率选择。1:600Bd2:1200Bd3:2400Bd4:4800Bd5:9600Bd6:19200Bd根据以上设置,此时波特率可调整为9600,进入DLMS数据传送。原创 2023-08-01 09:44:04 · 6316 阅读 · 2 评论 -
在组态软件中开发脚本功能的方法
大多数的组态软件都具有脚本功能,脚本可能是VBS、Lua、C#等语言,也可能是厂家自定义的一种语言。通过脚本,组态软件可以实现非常灵活的功能。。外部数据,最重要的是采集到的数据,也可能是用户创建的配置文件。而改变可视化元素,则包括创建、改变位置、改变状态、删除等操作。本文通过一个示例,介绍在组态软件中实现脚本功能的方法。原创 2023-06-07 11:05:41 · 3411 阅读 · 0 评论 -
物联网数据采集网关开发历程(三)
网关内运行的是Linux系统(本文涉及的是Ubuntu系统,下文中所说的也都是基于Ubuntu系统)。由于AMD64和ARM两种架构在部署的过程中差异较大,需要分开说明。.NET安装在AMD64架构下,.NET的安装使用官方说明即可。先运行:wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debdpkg -i packages-mi原创 2022-06-02 11:39:39 · 1500 阅读 · 0 评论 -
物联网数据采集网关开发历程(二)
在后续对系统的描述中,需要用到一些名词概念,在此作出解析:设备系统采集来自一台设备的数据,设备需具有通信接口,以及使用特定的通信协议进行通信。设备可以是一台检测仪器、一个小型仪表、一个传感器,甚至是一块单独的PLC。因子因子是设备的属性,包括设备的测量值、状态、控制单元等。例如对于一台空调来说,以下属性可以称为一个因子:当前设定温度(测量值)设备状态:当前是运行中还是待机中(状态)设定当前工作模式:制冷、制热还是除湿(控制单元)链路系统与设备的物理连接方式以及基础通信协议,即通信过程中链路层以下的部分。例如原创 2022-06-02 11:11:02 · 1208 阅读 · 2 评论 -
物联网数据采集网关开发历程(一)
本系列博文所指的开发是指软件系统的开发,不包括硬件开发。由于网关软件系统是跨平台的,可以运行在Windows系统上,也可以运行在Linux系统上。所以,只要在一台小主机上安装了此软件系统,就形成了一个数据采集网关。本系统用于测试的小主机如下图所示:它的一些参数如下表所示:最终网关所支持的功能包括:系统配置、数据采集、设备反控、数据显示、数据存储、数据上传等。除了基本的网关功能,需要特别说明的是系统具有很强的灵活性。系统支持大量采集协议(Modbus、DLMS、DL645、OPC-UA等)和上传协议(MQTT原创 2022-06-02 11:08:16 · 3608 阅读 · 0 评论 -
.NET在开发Linux ARM工控程序时的注意事项
.NET是一个跨平台的开发框架,可以以一套代码同时发布到Windows和Linux平台。但是对于CPU是ARM的系统,开发过程就比较崎岖了。以下是我在开发过程中遇到的一些问题和解决方案。一、安装.NET在Linux平台上安装.NET已经比Windows平台要复杂很多了,在ARM架构下,情况更加复杂。经过测试,我发现行得通的方法是:1、在官网下载对应系统的安装包。2、文件传送到Linux系统上,解压。3、配置环境变量,把刚才解压的路径加进去。二、安装包下载源一般情况下,ARM架原创 2022-05-27 13:15:39 · 863 阅读 · 0 评论 -
西门子S7通信协议中TSAP的确认
在西门子S7通信协议中,TSAP是类似于地址的一个值,用两个字节表示。TSAP分为Local TASP(相当于采集程序的地址)和Remote TSAP(相当于PLC的地址)。对于不同的PLC型号,地址的默认值不尽相同,而且,这两个值是可以修改的。如果被修改了,只能通过查询获得。对于以下型号,TSAP的默认值和可能值如下表所示:PLC型号 Local TSAP默认值 Local TSAP可能值 Remote TSAP默认值 Remote TSAP可能值 S7-200原创 2022-05-27 11:34:54 · 15353 阅读 · 0 评论 -
DLMS通信协议OBIS编码
在DLMS协议中,所有电相关物理量需要使用一个OBIS编码进行表示。OBIS编码分为ABCDEF六组,其他A为1代表电相关,B为通道,一般是0不指定,F一般是255。所以区分各个物理量的是CDE三组数据。例如,CDE的编码是21.7.0,那么完整的ABCDEF表示就是1.0.21.7.0.255。以点号分隔,常用的电物理量OBIS编码如下表所示:物理量 相位 方向 有无功 DLMS编码 电能 总 总 有功原创 2022-05-27 11:01:26 · 4268 阅读 · 0 评论 -
跨平台SCADA系统(组态软件)开发6
六、服务端实现本章所说的服务端,是“仪器-工控机-服务器-客户端”架构中的服务端,并不实现采集功能(采集功能已在前面的章节讲述)。我们要实现的服务端是有高实时性的,当数据发生改变时,迅速地推送给客户端。同时,客户端上的反控操作,能快速地反映到仪器上。MQTT是实现此类服务端较好的技术选择。以“设备名.因子名”为主题,当采集到变化的数据时,发布相应主题。客户端根据当前显示需要,订阅相关的主题。同时,工控机订阅一个专门的反控主题,任何客户端的反控操作都发布该主题。...原创 2020-06-03 15:37:06 · 2816 阅读 · 0 评论 -
跨平台SCADA系统(组态软件)开发5
五、组态功能开发事实上,整个组态功能就是在Web上开发的,而桌面软件上显示的组态界面,其实是加载浏览器内核完成的。浏览器下的组态图编辑界面:原创 2020-06-01 17:49:05 · 4679 阅读 · 1 评论 -
跨平台SCADA系统(组态软件)开发4
四、数据采集采集功能是整个系统最核心的功能,完成了这一功能,其他部分便水到渠成。数据采集的需求包括:(1)仪器各种各样,通信协议五花八门。(2)软件开发完成以后,能够让不懂代码的人配置最终产品。(3)使用多种链路,有些仪器共用一条链路。(4)快速采集,有些链路或仪器出现问题不影响整个系统的采集。(5)在采集的同时,反控能及时响应。上述五个需求,我们在不同的模块中完成,每个模块只要做好自己的事情即可。4.1设备配置和通信协议这一部分完成的是需求1和2。...原创 2020-06-01 14:48:45 · 2509 阅读 · 1 评论 -
跨平台SCADA系统(组态软件)开发3
三、模块化开发我们在第一章中提到,SCADA系统可能应用于不同的部署框架中,包括“仪器-工控机”、“仪器-工控机-服务器-客户端”和“仪器-服务器-客户端”。为了应对这种情况,有两种开发模式:1、开发一个大的系统,然后通过配置项启用或禁用某些部分的代码。2、设计好接口,每个模块独立开发,最后产品像搭积木一样拼装每个模块发布。本系统使用第二种开发模式。四、采集模块...原创 2020-06-01 11:43:03 · 2966 阅读 · 0 评论 -
跨平台SCADA系统(组态软件)开发2
二、数据模型整个SCADA系统,其功能其实是对数据流动的控制,如下图所示:(1)采集模块是系统的入口,所有数据来自采集模块。(2)采集到的数据是实时变化的,而数据库可能要求1分钟或1小时存放一条数据,这时候需要对数据进行采样。(3)原始数据或许只是数字,而我们在展现时,会要求显示单位、保留一定的小数位数,又或者,什么数字代表什么状态,这就要求对数据进行一定的格式化。(4)数据经过整理之后,按照一定的通信协议上传至服务器。那作为系统核心的数据,究竟以怎样的格式进行存放呢?上.原创 2020-06-01 09:22:14 · 2826 阅读 · 0 评论 -
跨平台SCADA系统(组态软件)开发1
一、系统概述我在上年做了一些工控软件开发的介绍(可参考我之前发过的博文),解决了两个主要问题:1、无需修改代码,简单配置,即可支持几十上百种不同通讯协议的仪器。2、开发了类似组态软件的功能,像画图软件一样编辑一个流程图,图像元素能够根据仪器数据和状态进行实时变化。当然还有其他解决的问题,但比较突出的是上面两点。(组态)(设备配置)(设备面板)(数据图表)今年接触到几位同行的朋友,他们提出了能不能提供在Web上运行的组态图的想法。确实,Web早已大行其.原创 2020-05-30 07:47:14 · 9378 阅读 · 4 评论 -
工控系统设计(八)组态功能开发
八、组态功能开发如果要做出一款通用、功能强大的组态软件,那需要的人力物力必定是巨大的。但如果实现组态软件最核心、最常用的功能,则不是一件困难的事情。组态功能,无非是一种数据的展示和控制方式。通过拖拉、配置等方式,尽可能不编程,制作出图形,此图形能够根据数据动态变化,也能够操控图形而达到控制设备,这就是最核心的组态功能。组态图由多张静态图片和动态图片(gif)拼接而成。这些图片有层级关系...原创 2019-12-03 10:42:21 · 2638 阅读 · 1 评论 -
工控系统设计(七)其他调度系统
七、其他调度系统7.1 上传数据调度系统数据上传跟数据采集是类似的,具体区别有两点:(1)上传设备较少,一般只有一个平台。(2)上传以主动推送为主,有定时性。由于上传数据一般需要查询历史记录,所以需要把记录存放在数据库中。上传函数定时执行,当检测到某种数据已经到了发送时间时,从数据库中提取相关数据,拼接出要上传的内容。把上传内容存放到数据库中,标记未上传。另外有一个独立线程...原创 2019-12-03 10:41:23 · 840 阅读 · 0 评论 -
工控系统设计(六)采集/反控调度系统设计
六、采集/反控调度系统设计在第一部分,我们提到了数据采集所面临的问题。稳定、并发、时延少、不串码,是调度系统需要解决的问题。串行读写是最稳定的一种读写方式。遍历设备,把每台设备需要采集的命令发送,得到回复之后,再转到下一台设备。这种方式的缺点是速度慢。如果设备数量大、因子多,某台设备的响应速度慢,那么一个采集循环的时间就会很长。另一种方式是每一个链路配一个线程,因为不同链路是可以并行读...原创 2019-12-03 10:39:28 · 1225 阅读 · 0 评论 -
工控系统设计(五)协议层设计
五、协议层设计不同厂商生产设备所采用的通讯协议不尽相同,有些尽管声称使用通用的协议,但实际也有小调整的可能。工控系统如果为每种协议修改主体程序,推出不同版本,那势必会造成工控系统版本的混乱。本工控系统通过“设备配置+协议解析模块”的方式解决上述问题。(1)大体相同的通信规则由协议解析模块处理,而更为细化的特点由设备配置处理。例如,标准的Modbus协议可定义一个协议解析模块,而A设...原创 2019-12-03 10:36:10 · 1456 阅读 · 0 评论 -
工控系统设计(四)数据库设计
四、数据库设计4.1 数据库选用考虑SQL Server、MySQL、SQLite这三款数据库。SQL Server和MySQL从性能来说,没有实质性的差别。SQL Server是收费软件,如果使用免费版,会有一些限制(例如数据库大小、CPU核数等)。SQLite相对于上述两款数据库,优点是体积小、无需安装。缺点是它没有数据库高级的功能(例如用户管理)。在选用数据时,考虑几个应...原创 2019-12-03 10:33:05 · 2702 阅读 · 1 评论 -
工控系统设计(三)设备/因子虚拟化
三、设备/因子虚拟化3.1 设计概要任何跟工控机连接的仪器,我们都称为设备,包括分析仪、温湿度计、流量计、UPS等。设备种类多种多样,但工控机对其的操作其实只有两个:读和写。读的话,可能是读取测量的值、仪器的状态等;写的话,可能是启动仪器测量、修改仪器的参数等。在高级编程语言里面,有一个属性的概念,属性包含getter和setter。那么,工控机对于仪器的任何操作,都可以看成是工控机对仪器...原创 2019-12-03 10:31:31 · 1159 阅读 · 2 评论 -
工控系统设计(二)系统架构
以数据的流动为依据,系统架构如下图所示:整个架构有两个核心,分别是内存数据和数据库,其他模块都围绕着这两个数据开发功能。链路层负责将字节流发送到设备,以及从设备接收字节流。它不管这些数据代表什么意义。协议层负责解析字节流,以及将某种指令转化为字节流。由于协议跟设备紧密相关,协议层实现灵活开发和配置。系统包含几个调度系统:(1)采集/反控调度系统(2)内部触发调度系统...原创 2019-12-03 09:59:08 · 3979 阅读 · 0 评论 -
工控系统设计(一)系统功能概述
一、系统功能概述整个系统应包含如下的几大功能模块:1、数据采集2、数据展示3、设备反控4、报表5、数据上传6、组态图除此之外,增加两项扩展功能:7、自触发8、他方系统交互1.1 数据采集工控系统数据的来源是各种各样的测量设备。这种多样性表现在连接方式、通讯协议、回复速度等方面,而且,由于设备的不成熟,导致设备协议变动的情况也时有发生。在这样的环境下,...原创 2019-12-03 09:54:55 · 3140 阅读 · 0 评论 -
工控机网络开发
在工控领域,用到网络的地方有两个,一是跟平台通信(把现场数据上传到平台、服务器),二是读取一些用网线连接的仪器。两个方面在使用Socket的时候,有某些需要注意的地方。一、跟平台通信跟平台通信使用TCP连接。如果工控机性能不错,使用DotNetty这样的库也未尝不可,毕竟其稳定性是经过验证的。但DotNetty开发成本高,现场也没有高并发的情况,大多时候我们都是使用Socket做简单的开发...原创 2018-09-06 09:20:25 · 2366 阅读 · 0 评论 -
组态软件的开发(C#)
在工控领域,我们用到的组态软件有组态王、Cimplicity等,一方面这些软件是收费的,另一方面无论这些软件做得多好,都没办法把自己的品牌打出去,没办法满足各种自定义的需求。于是,我花了两个星期时间,开发了一款简易版的。这是流程图界面:其实组态软件并没有我们想像的那么难。我们需要的功能无非就是有一张可以灵活编辑的图,这个图里面的元素会根据系统的状态去变化。一、图片的呈现我是使用WP...原创 2018-09-06 10:28:36 · 28277 阅读 · 26 评论 -
多设备共用串口需要注意的问题
Modbus协议定义了从机地址,也就是说我们可以在一条总线上连接多台仪器,这些仪器使用从机地址进行区分。经过多年的开发,总结出一些共用串口方面需要注意的问题。1、接收到的数据,必须检验从机地址特别在多线程的开发环境下,先发送不一定先接收。也就是说,向A仪器发送信息之后,可能会收到B仪器返回的信息。这时候,如果我们把不是A仪器从机地址的信息丢弃,B仪器有可能就收不到信息了。最坏的情况是这样:...原创 2018-09-21 10:35:04 · 10934 阅读 · 0 评论 -
工控机上位机软件的开发历程(三)
数据库设计首先在数据库的选择上,我们使用了SQL Server。在项目的开始阶段,我们考虑过使用哪种数据库,但很快就定下来了。使用SQL Server最大的原因是以前的项目就是用它,必须继承下来。如果这是全新的项目,那估计选的还是SQL Server。如果用SQL Server跟MySQL去比的话,前者是商业性产品,估计会稳定一点。我们对什么性能、大并发量这样的需求是不强的,数据的安全和稳定是...原创 2018-10-18 09:28:49 · 11567 阅读 · 0 评论 -
工控机上位机软件的开发历程(四)
上位机架构上位机使用C#、WPF技术开发。软件并不是一个exe了事,这样维护和协作都很难去做。整个系统主要包括以下模块: 主程序 EQMSClient 负责将各模块组装在一起 基础类库 EQMS.DAL 部分数据访问层,实现访问数据库的功能 EQMS.M...原创 2018-10-18 13:53:27 · 14029 阅读 · 7 评论 -
工控机上位机软件的开发历程(一)
本人就职于一家环境监测公司,上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台。刚到公司的时候,公司使用的是组态软件(用以显示流程图),然后再开发了报表软件、数据上传软件。因为组态软件使用的是标准Modbus协议,而很多仪器使用的协议根本就是自定义的,所以还要加一个协议转换软件,把各种各样的协议转换成Modbus协议,让组态软件去读。除此之外,我们还希望软件能够开机启动,...原创 2018-10-17 16:56:02 · 51024 阅读 · 15 评论 -
工控机上位机软件的开发历程(二)
仪器归一化设计这是具体内容的第一篇,我们先来讲述仪器的归一化设计。仪器是各种功能都有的,我只举我们在环境监测这方面所用到的仪器。我们要测试水是不是有污染物质,污染到什么程度,我们要测试水体的高锰酸盐指数、氨氮、总磷、总氮等值。我们的站房有一个后备电源,我们要知道市电是否断电了,是否在用备用电源。我们的站房是有空调的,我希望知道站房的温度和湿度,于是就有了一个温湿度计。我们可能还会有流量计、...原创 2018-10-17 17:48:37 · 18832 阅读 · 3 评论 -
工控机上位机软件的开发历程(五)
思绪中断了,博客更新也中断了。现在补上。前面说了一些架构方面的事情,现在说一些具体一点的。设备信息和因子信息设备和因子是两个比较核心的概念,它们的结构设计,关系到整个系统。我们先来看设备信息的结构:/// <summary>/// 设备信息/// </summary>public class DeviceInfo{ /// <summar...原创 2018-12-11 10:18:19 · 5555 阅读 · 0 评论 -
工控软件装机常规设置
一般在工控机上安装软件之后,我们需要对工控机进行一些设置,例如是开机启动、禁用睡眠等。如果我们每台工控机都重复这些动作,难免会比较繁琐,有时也会忘记。最好,我们把这些设置动作,放在软件初次启动的代码里,或是在安装的过程中。设置开机启动设置开机启动需要修改注册表,代码如下:RegistryKey root = Registry.CurrentUser;RegistryKey run ...原创 2019-06-27 08:45:57 · 1653 阅读 · 0 评论 -
串口通信开发
一开始做串口通信开发时,觉得并不难,无非就是发送,然后等一会,再接收就完事了。其实里面的水很深,特别是在各种设备都有的情况下。我们在整个开发过程中,遇到了以下的几个主要问题:1、设备出现严重的延迟。2、接收过程出现数据粘包或截断。3、多设备共用一个串口。4、使用RTU的情况,接受到数据传给所有程序处理。5、采数和反控不能相互影响。6、多线程并发采数。 一、设备出现严...原创 2018-09-06 08:47:04 · 6547 阅读 · 2 评论