- 博客(86)
- 收藏
- 关注
原创 制造业数字原生的OT数仓建设
在制造企业数字化转型中,如何实现工厂设备数据的联网采集,如何实现OT/IT的融合,是近年来的热门话题。本人在智能制造IT领域工作多年,去年有机会在某家大型制造企业研究院从事IT/OT融合方面工作和进行OT落地建设,结合最近休息时间的思考,给出基于开源技术打造制造业数字原生的OT数仓建设参考思路。关键词:OT数仓 工业物联网 智能工厂 时序库 数据采集 数字化转型IT/OT融合
2021-09-24 17:32:21
5491
1
原创 基于 Vue 3 + TypeScript + Canvas 构建的网页版俄罗斯方块游戏
这是一个基于Vue3+TypeScript+Canvas技术栈开发的俄罗斯方块游戏。项目实现了完整的游戏逻辑,包括7种标准方块、碰撞检测、旋转算法、行消除等功能,并设计了分数计算和等级系统。采用Canvas渲染确保性能,支持键盘和触摸操作,具有响应式布局和精美UI效果(渐变背景、毛玻璃等)。项目使用Vite构建工具,通过Composition API组织代码,TypeScript保证类型安全。核心算法包括智能裁剪的旋转系统、从下往上的行消除逻辑,以及可变速的游戏循环机制,提供了流畅的游戏体验。
2026-03-06 10:48:55
418
原创 Pascal.Edge物联网平台-功能介绍(一)
本文介绍了当前系统开发的两个核心功能模块:驾驶舱和设备管理。驾驶舱模块提供设备数、点位数、协议分布等全局概览,支持中英文切换,并可查看CPU和存储的详细使用数据。设备管理模块具备设备CRUD、点位维护和实时监控功能,支持动态生成设备参数(包括组织信息、通讯参数和高级参数),提供多种点位添加方式(手动/内置/远程),并允许数据转换和点位控制。系统支持Excel导入导出,并通过驱动端进行输入校验和数据类型维护。
2026-02-02 11:48:53
224
原创 Pascal.Edge物联网平台之驱动设计Modbus篇
摘要:DriverModbusRtu是一个轻量级Modbus RTU驱动实现,支持串口和RTU-over-TCP通信。核心功能包括周期性读写、块读合并、数据类型转换及错误处理。配置通过JSON文件定义通信参数,地址格式支持多种Modbus寄存器类型。驱动采用并发控制和总线抽象设计,提供地址更新回调机制,支持运行时状态快照发布。测试建议包含单元测试和集成测试,扩展方向包括依赖注入、更多数据类型支持和性能优化。典型应用场景包括工业设备数据采集与控制。
2026-01-31 15:07:17
969
原创 三菱PLC MC协议通信报文
本文记录了三菱PLC MC协议通信的测试报文,包含二进制和ASCII两种模式的读写操作示例。二进制模式下展示了从D100读取5/8/18个short类型数据的报文及对应值(如996,321,111,130等),以及X0-X5位数据的读写操作(True/False值)。ASCII模式则演示了D100读取5个short值(996,321,111,130,1104)、X0位读取5/9个bit值,以及M501/Y4位写入False/True的操作。报文格式包含完整的发送/接收十六进制数据和时间戳,为PLC通信测试提
2026-01-31 14:38:48
607
原创 ubuntu 24.04安装dotnet 10日志
摘要:本文介绍了在Ubuntu 24.04 LTS (Noble)系统上安装.NET 10.0 SDK的步骤。首先通过lsb_release命令确认系统版本,然后添加适配Ubuntu 24.04的Microsoft软件源,更新包索引后安装.NET 10.0 SDK。安装完成后会显示欢迎信息,包括SDK版本号(10.0.100)、HTTPS证书配置提示以及相关资源链接。最后指出执行"dotnet --v"命令时出现的错误提示,说明该命令不存在,并列举了可能的原因。
2026-01-11 10:22:39
444
原创 Pascal.Edge物联网平台:生产企业设备数据采集与管理解决方案
本文聚焦 Pascal.Edge 物联网平台,阐述其为生产企业打造的设备数据全生命周期管理解决方案。平台以边缘接入为核心,具备多环境适配、全场景协议兼容能力,可无缝对接 PLC、CNC 机床等各类工业设备。核心功能涵盖设备精细化管控、数据高效处理与多模式存储,辅以运维监控、日志追溯等全方位服务支撑,支持灵活部署与扩展。助力企业打破信息孤岛,实现设备数据智能应用,为智能化生产与精细化管理提供坚实支撑。
2025-12-26 15:10:14
2016
原创 使用豆包大模型语音合成API生成语音文件
豆包语音合成API使用指南:注册火山引擎账号后获取APPID和AccessToken,下载Demo工程并配置参数(包括音色类型、文本内容等),通过VS2026编译运行即可生成.wav音频文件。注意部分缩写(如"2B")的读音可能不符合预期。GitHub提供简化参数的Demo工程供参考。
2025-11-10 16:51:55
1167
原创 C# .Net8 WinFormsApp使用日志Serilog组件
本文介绍了在C# .NET8 WinForms应用中使用Serilog日志组件实现窗体日志显示的完整方案。通过自定义QueueLogSink将日志输出到并发队列,配合TextBox控件实现高效日志显示(替代RichTextBox提升性能)。关键点包括:1)正确配置Serilog组件包(共13个NuGet包);2)使用JSON文件配置日志级别和输出目标;3)实现日志队列管理器和定时器刷新机制;4)处理大日志量时的内存优化(限制最大行数)。该方案支持多日志级别输出,同时显示到控制台、调试窗口、日志文件和窗体界面
2025-08-31 17:01:55
457
原创 Ruoyi多主键表的增删改查
本文介绍了在Ruoyi框架中如何适配多key联合主键的数据表操作。主要修改包括:1) HTML前端通过拼接参数传递多个主键值;2) Controller层修改编辑和删除接口,采用路径参数接收多个主键;3) Service层和Mapper层统一使用实体对象作为参数,在SQL中通过联合条件定位记录。修改重点是确保前端参数传递与后端接口接收的一致性,以及在数据操作时正确使用联合主键条件。该方案适用于需要处理复合主键的业务场景。
2025-06-05 23:15:41
532
原创 若依Ruoyi中优先从本地文件加载静态资源
在 Spring Boot 中,若要让优先加载 JAR 包内的资源,可通过合理设置资源位置的顺序来达成。因为 Spring 会按照资源位置配置的先后顺序进行搜索,所以把 JAR 包内的资源路径放在前面就能实现优先加载。配置说明:Spring 会按照addResourceLocations方法中路径的顺序去搜索资源。在上述例子中,会先搜索 JAR 包内classpath:/static/路径下的资源,若找不到,才会去搜索外部文件系统file:./static/路径下的资源。
2025-06-04 23:03:33
820
原创 C# 通过脚本实现接口
本文介绍了在C#中通过脚本直接实现接口的方法,替代了传统的委托注入模式。作者在AI的提示下,尝试使用脚本动态或指定新类型创建接口实现对象。虽然代码稍显复杂,但脚本部分更加简洁和有条理。文章详细列出了所需的引用包,并提供了接口定义和验证文件的示例。加载和验证代码展示了如何读取外部代码文件、编译、检查错误、生成程序集,并最终创建接口实现对象。该方法通过内存中生成程序集,实现了动态加载和调用接口实现类,展示了C#在动态编程中的灵活性。
2025-05-14 23:24:13
685
原创 C#简易Modbus从站仿真器
C#使用NModbus库,编写从站仿真器,支持Modbus TCP访问,支持多个从站地址和动态启用/停用从站(模拟离线),支持数据变化,可以很方便实现,最终效果如图所示。
2025-05-08 22:15:41
639
原创 ubuntu 24.02部署java web服务
ubuntu 24.02 版本推荐使用jdk 21版本部署java web服务,开发后先使用sudo java -jar xxx.jar验证运行结果。启动依赖,在mysql.service启动后加载,避免服务运行时mysql还没有加载完成。sudo journalctl -u webmgr.service -f #查看运行日志。sudo systemctl enable webmgr #开机启动。sudo systemctl start webmgr #启动。
2025-04-16 23:46:14
386
原创 TDengine 3.3.6.3 虚拟表简单验证
提供多个值域,通过tags的vtype字段定义哪个字段有效,使用统一的模型支持数据写入,然后定义查询虚拟表方便查询。涛思新出的版本提供虚拟表功能,完美解决了多值窄表查询时需要写程序把窄表变成宽表的处理过程,更加优雅。测试下来还是很容易的,具体过程见下面代码和执行结果。
2025-04-16 23:26:54
507
原创 InfluxDB写入测试
早几年测试时序库时,采集数据到kafka,然后用不同数据进行存储验证。Influxdb是花时间比较多的,它的数据建模方法、读写方法都需要使用特殊的API。时间久了自己也经常忘记,把当时的测试关键代码记录下来,也方便日后查找。 代码基于java编写。 1、接口数据定义,clientid+tag组合必须唯一2、数据写入
2025-03-16 22:52:29
457
原创 Influxdb cli删除数据步骤
1、下载cli客户端 https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.7.5-windows-amd64.zip,解压到指定目录。5、执行处理命令,命令格式建议参考https://docs.influxdata.com/influxdb/v2/reference/cli/influx/3、运行powershell,进入第1步解压的客户端目录。下面命令是删除所有指定库和测量名数据的命令。4、配置token,以本机访问为例。
2025-03-16 22:33:01
1347
原创 Ubuntu离线docker compose安装DataEase 2.10.4版本笔记
1、先准备一个可以正常上网的相同版本的Ubuntu系统,可以使用虚拟机。2、下载dataease-online-installer-v2.10.4-ce.tar在线安装包,解压并执行install.sh进行安装和启动。4、第3步导出的离线镜像包和dataease-online-installer-v2.10.4-ce.tar,复制到内网环境。DE_MYSQL_PORT由当前目录下的.env文件配置,包括mysql连接账号信息,参考下面红框标记部分。6、执行安装,sudo./install.sh。
2025-01-17 23:22:44
1036
原创 Ubuntu 24.04使用docker安装Node-Red
Node-Red是开源是可视化的流计算软件,在Ubuntu 24.04版本下,很容易通过docker进行安装。如果docker文件拉取失败,可以考虑换源,或使用其他具备网络条件的服务器拉取的镜像备份和还原。不具备docker直接拉起条件的,也可以使用本人备份的Node-Red v4.0.5镜像。上面的配置中,数据卷使用当前目录下的data目录,可以用下面命令创建。可以看到容器自动在data目录下创建了自己的文件和子目录,从而实现持久化。如果能正常启动,可以在上面的命令后再加上-d参数,后台运行。
2024-11-30 23:42:34
924
原创 ubuntu基于docker-compose部署mysql5.7和mysql8.0
docker-compose部署系统简单方便,出现问题也可以快速重来。mysql5.7和mysql8.0是两个比较流行的mysql版本。简单部署记录下来,供大家参考。
2024-10-31 22:37:32
867
原创 Ubuntu下搭建自己的Docker镜像仓库
可以试试直接执行:bash -c "$(curl -fsSL https://raw.githubusercontent.com/kubesre/docker-registry-mirrors/main/dockerproxy/install/DockerProxy_Install.sh)"域名注册解析方面,建议使用二级域名:docker,先配置docker的A记录解析到云主机,再配置“*记录”,类型为”CNAME”,记录值为“docker.自己的域名”我的安装日志如下(域名已经做了临时处理,非正式域名)
2024-10-29 22:47:42
2106
原创 ubuntu 24搭建docker私有仓库
docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。安装运行docker-registry可以通过获取官方registry镜像来运行。默认情况下,仓库会被创建在容器的/var/lib/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。注意需要防火墙开放tcp 5000端口,测试"xx.xx.xx.xx"换成实际的IP(下同),搭建成功的会显示一个json。
2024-09-26 23:39:28
884
1
原创 MQTTnet库的MQTT Client证书连接模式
在证书连接模式下,我们一般可以获取到的是ca.crt、client.crt和client.key,并不能直接得到pem和pfx文件,这时需要转换使用openssl来转换。MQTT为了加强安全性,是支持Tls的安全模式连接的。在安全连接模式下,默认的服务端口由1883变更为8883,且使用CA证书来保证通讯双方的安全性。在openssl的命令行下,执行两个转换语句,即可实现pem和pfx的转换。
2024-07-24 22:50:16
1969
原创 C# 日志框架Serilog使用
C#日志框架Serilog支持多种场景输出,简单验证了一下,比较方便包的安装,推荐直接使用“推荐NuGet包管理器”安装Serilog.AspNetCore,常见的组件都已经集成在一个包中,使用比较方便。
2024-06-24 00:24:18
1615
原创 Prosys OPC UA Simulation Server工程文件备份方法
打开Windows“资源管理器”,找到当前用户下的“.prosysopc”目录。我的windows当前用户是iot,对应的目录就是:C:\Users\Iot\.prosysopc,可以看到有一个prosys-opc-ua-simulation-server目录。用zip备份或直接复制即可备份。他的免费版本不提供工程文件的备份、导入导出功能,每次退出时保存。如果需要工程备份,可以找到他的工程文件目录,手工备份和还原,具体方法如下:、还原时,可以把备份的目录替换现有目录下的文件即可。
2024-05-14 21:10:27
876
原创 小巧简单实用的Linux端口转发工具Rinetd
Linux下实现端口转发有很多种方法,尤其是在可以联网的情况下,更是容易。最近在资源受限的定制系统中,找到一个方便离线安装和使用的端口转发工具Rinetd,安装包仅几十K,而且有很多版本的Linux发行系统的支持。配置的意思是将服务器的1102端口转到到本地的102端口,也可以转发到内网其他机器。找到对应的版本进行下载。版本不是越高越好,和自己环境的发行版本匹配就好。Rinetd的配置文件位于。2、Ubuntu下安装命令。3、配置端口转发配置。
2024-05-09 22:23:41
1464
原创 使用C#和NMODBUS快速搭建MODBUS从站模拟器
浮点、32位整数、字符串等都可以通过调整slave.DataStore.InputRegisters.WritePoints和slave.DataStore.HoldingRegisters.WritePoints所对应的数组来实现。Modbus通讯分为主站和从站,使用RS485通讯时同一个网络内只能有一个主站,多个从站。开发测试时有各种复杂的需求,现有的仪器仪表实物搭建费时费力,可以用C#使用NMODBUS组件快速编写自己的从站仿真器,从而实现各种复杂场景的模拟。
2024-05-05 17:11:38
2359
原创 C#使用NPOI保存DataGridView数据到EXCEL文件
C# DataGridView可以显示各种表格数据,有时需要将结果保存到EXCEL文件中。开源库NPOI支持EXCEL格式文件的读写,可以使用NPOI编写通用的方法,自动将DataGridView控件表格数据保存到EXCEL文件。
2024-03-12 23:57:28
1266
1
原创 基恩士 KV-8000 PLC通讯简单测试
基恩士 KV-8000 PLC支持多种通讯方式,包括:OPC UA、Modbus、上位链路命令等。其中OPC UA需要对服务器和全局变量进行设置,Modbus需要调用功能块。默认支持的是上位链路命令,实际是一条条以回车换行结束的ASCII命令串。
2024-02-04 23:32:56
10723
1
原创 C# OMRON PLC FINS TCP协议简单测试
FINS/UDP运用的是一种嵌套格式数据包,即Ethernet报头、IP报头、 UDP报头和FINS帧。一个UDP数据段(FINS 帧)超过1472字节将被分成若干个数据包来传送。分开的UDP数据将在UDP/IP协议层自动组合。通常不须要关注运用 层的数据分段,但是在一个多层 IP网络中1427字节的UDP包可能无法 发送。在这种系统中就须要运用 FINS/TCP方式。ICF为信息控制域,用于标明指令和响应;RSV为系统保留;GCT为网关允许数目;DNA为目的网络号;DA1为目的节点号;
2024-02-04 22:55:39
3591
原创 C# .Net6搭建灵活的RestApi服务器
C# .Net6后支持顶级语句,更简单的RestApi服务支持,可以快速搭建一个极为简洁的Web系统。推荐使用Visual Studio 2022,安装"ASP.NET 和Web开发"组件。
2024-01-23 23:21:03
1816
原创 C#灵活的任务调度组件FluentScheduler
FluentScheduler是一个C#的灵活的任务调度组件,支持各类任务调度。网上有很多演示代码,此处记录下来,方便自己查找。
2024-01-14 22:39:53
1662
原创 Access数据库C#读写验证
Access数据库是一个相当古老的文件型数据库,主打一个简单+方便,没有复杂的安装过程,没有庞大的后端管理,整个数据库就是一个文件。可以像普通文件一样复制和修改,可以同时读写。 在小型系统中,还是有较多的存量系统在使用Access数据库,相对简单的文件存储,还是有很大的进步。Access是关系型数据库,数据是结构化存储,数据的关系和格式,相对文件严谨很多。
2024-01-01 17:47:58
1473
原创 电表通讯协议DLT645-2007编程
电表有个电力行业推荐标准《DLT645-2007多功能电能表通信协议》,电表都支持,通过该协议读取数据,不同的电表不需要考虑编码格式、数据地址、高低位转换等复杂情况,统一采集。不方便的地方在于这个协议定义得有点小复杂,自己带有各种特殊性定义,编程时一堆的坑。不少电表可以同时支持DLT645-2007和MODBUS RTU协议,但MODBUS协议在不同的电表中,地址都是不同的,需要查阅手册才能搞定。DLT645不同的数据需要发送独立的请求,而Modbus数据地址连接的可以一次读取,各有所长和优势
2023-12-30 23:04:36
3887
原创 VC2005 Socket Server封装库
DLL主要通过FishFlyCommServer.def文件暴露接口,形成标准WinAPI。;FishFlyCommServer.def : 声明 DLL 的模块参数。EXPORTS接收部分仅支持少量数据的接收服务端在客户端被关闭和接收到客户端传送的数据时,会产生事件,提供三种处理方式:消息模式(SKTD_MESSAGE)、回调模式(SKTD_CALLBACK)和查询模式(SKTD_QUERY)查询模式用于服务端对客户端的单向传输模式。
2023-12-24 23:16:46
544
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅