- 博客(35)
- 收藏
- 关注
原创 汇川 H5U TONR + 比较指令实现流水灯:从右到左逐个点亮,再从右到左逐个熄灭循环
通过TONR定时器累计时间至D0,利用比较指令按时间窗口控制Y0-Y7逐个点亮与熄灭,实现1秒间隔的循环流水灯。启动自锁回路确保持续运行,设置计时上限(16秒)并串联于定时器IN端,实现周期循环。仿真中可正常清零复位,但真实PLC因TONR不自动清零需额外处理,否则会卡死。
2026-10-24 10:05:06
183
原创 汇川 H5U:上升沿 / 下降沿 + ADD 加法计数 + 比较指令 + MOV 复位
本文介绍基于PLC的光电传感器计数系统设计:利用上升沿(LAP)确保每个产品仅触发一次加法,实现精准计数;当计数值达3时,通过触点比较指令LD=D0K3启动电机;按下复位按钮X1,结合上升沿触发MOV K0 D0清零,使电机停止。强调上升沿在计数中的关键作用,避免因常开触点持续导通导致计数错误,提升系统可靠性。
2026-10-18 19:08:55
178
原创 汇川 H5U PLC|TONR 保持型定时器实战案例
按下启动按钮X0,M0自锁回路接通,TONR定时器开始计时(10秒),期间即使松开X0仍持续计时;计时完成Q输出驱动Y0电机启动。按下停止按钮X1,断开自锁回路,M0失电,TONR停止计时但保留累计值。若需清零,须将X1信号接入TONR的R复位端。采用M0自锁避免直接使用输出点Y0,提升安全性和逻辑灵活性。
2026-10-14 10:02:08
160
原创 汇川 H5U PLC 实战|电机正反转控制(软件互锁)
本文介绍使用AutoShop(H5U)软件实现电机正反转控制的零基础学习案例。通过IO地址分配(X0正转、X1反转、X2停止,Y0正转、Y1反转),编写梯形图:正反转自锁回路串联停止按钮与对方常闭触点实现软件互锁,确保正反转不能同时运行。仿真测试验证了“先停后换向”的安全逻辑。强调软件互锁仅作程序保护,实际应用必须加硬件互锁以防短路,且虚拟仿真与真实硬件状态有别,需注意区分。
2026-10-12 16:23:29
313
原创 EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
本文基于MyBords看板项目,详解EFCore中继承映射的两大策略:TPH(默认)与TPT。TPH以单表+Discriminator实现高效查询,适合90%场景;TPT通过多表JOIN保证结构整洁,但性能较低。通过重构臃肿实体为抽象基类+子类,实现代码规范与业务语义统一。实战表明:优先使用TPH,仅在表结构治理严格且性能可接受时考虑TPT。
2026-10-09 14:03:29
137
原创 从零理解 EF Core:用 Minimal API 给「工作项看板」建模(小白笔记)
本文以MyBords项目为例,手把手教学.NET8+EFCore下无需SQL即可构建业务实体模型:通过C#类映射数据库表,配置主键(自增/Guid/复合)、默认值(C#层与数据库层)、一对一、一对多、多对多关系(含显式中间表),使用FluentAPI在DbContext中统一管理实体规则,实现“面向对象操作数据库”,适合初学者快速上手。
2026-10-07 14:00:51
309
原创 C 语言 数组删除指定元素(快慢指针法)
本文介绍原地删除数组中指定值的双指针方法:快指针i遍历数组,慢指针j标记保留元素位置。当buf[i]不等于目标值时,将其赋给buf[j++],实现原地删除。时间复杂度O(n),空间复杂度O(1)。最终前j个元素为有效结果,后续可忽略剩余数据。
2026-09-29 17:45:50
217
原创 汇川 H5U PLC|电动机运行控制案例(启保停自锁)
按下启动按钮X0,电动机Y0得电启动;松开X0后,通过Y0常开触点自锁保持供电,实现持续运行。按下停止按钮X1(常闭),回路断开,Y0失电,电机停止。自锁采用并联于启动按钮的Y0常开触点,确保松开后仍保持通电。程序经编译无误后,仿真测试验证:启动后电机持续运行,停止后需重新按启动按钮才能重启,符合控制逻辑。
2026-09-29 16:41:17
395
原创 汇川 H5U PLC 实战|第一个程序:电动机点动控制(零基础完整实操)
本文介绍使用AutoShop软件实现PLC点动控制的全流程,适合零基础新手。通过分配X0为启动按钮、Y0为电动机输出,编写梯形图程序(LD X0 → OUT Y0),无需实物PLC即可离线仿真。按下X0时,Y0得电,电机启动;松开即停止,无自锁功能。程序编译无误后,利用仿真面板模拟按钮操作,验证控制逻辑正确性,直观理解点动原理及梯形图工作流程。
2026-09-28 16:41:11
156
原创 汇川 PLC 入门|LD、LDI、OUT 指令小白通俗笔记
很多刚学 PLC 的小伙伴一上来就被梯形图各种符号、英文指令搞懵。我们可以把 PLC 想象成一台自动控制的开关盒子外面接按钮、传感器 → 信号送进 PLC,这就是输入 XPLC 向外输出电,去点亮灯、驱动电磁阀、接触器,这就是输出 YM 是 PLC 程序里面看不见摸不着的虚拟开关,没有外部接线,只在程序内部使用。X、Y、M这些前面的字母不能自己随便改成 A、B、C!这是厂家规定好的元件类型代号,PLC 软件只识别这套字母;后面的数字可以修改,还可以给元件写中文注释方便人阅读,注释 PLC 本身是不认的。
2026-09-28 15:16:17
526
原创 C 语言实现顺序表
顺序表是连续内存存储同类型数据的结构,用结构体封装数组buf[MAX]和有效元素数n。通过create_empty_seqlist()在堆上创建空表,insert_data_seqlist()实现尾插,printf_data_seqlist()遍历打印。程序循环输入10个数存入顺序表,满则退出,最后释放内存防止泄漏。核心:n为当前元素个数,buf[n]为插入位置,n++更新计数。
2026-09-24 15:22:46
148
原创 C# WinForm 系统参数设置功能完整实现
本文介绍了一个基于WinForm和INI配置文件的系统参数配置实现方案。通过SysInfo实体类承载配置项,InfoService类提供读写服务,实现了配置文件的自动生成、参数读取、界面编辑和保存生效的全流程功能。方案包含主窗体加载配置、参数设置窗体展示和保存逻辑,并解决了字符串类型默认值、枚举绑定等常见问题。适用于PLC通信参数、系统设置等需要配置管理的工业场景,代码结构清晰、注释完整,可直接应用于实际项目开发。
2026-04-05 22:30:06
479
原创 C# 上位机开发实战(三)|SCADA 系统主界面流程图完整布局
摘要:本文介绍了SCADA监控系统主界面的开发过程,将界面划分为5个功能区:1)顶部系统时间栏,显示实时日期和时间;2)左侧核心仪表区,采用Panel容器封装多个压力/温度仪表模块;3)右侧上部系统状态面板,用指示灯显示设备运行状态;4)右侧中部参数显示区,展示水箱液位等关键数据;5)预留视频监控区域。通过VS布局工具确保各控件对齐统一,界面整体结构清晰、扩展性强,满足加压站监控需求
2026-03-23 17:35:40
632
原创 C# 上位机开发实战(二)|MeterShow 仪表用户控件封装与复用
本文介绍了智慧加压站SCADA监控系统中可复用仪表控件的开发方法。通过创建UserControl控件MeterShow,将仪表盘、数值、标题和单位封装成独立组件。重点讲解了控件的基础样式设置、界面布局、命名规范,以及核心的自定义属性封装技术(参数名称、实时数值、单位、量程等)。该方法实现了控件拖拽即用、属性可视化配置,大幅提升开发效率,保证界面统一性,并为后续数据绑定和通信功能奠定基础。这种封装思路特别适合WinForms上位机开发中温度、压力、流量等仪表的批量复用。
2026-03-22 14:02:28
485
原创 上位机开发初体验|第一个项目从 0 到 1:项目创建与整体 UI 布局
本文详细介绍了上位机开发新手搭建UI界面的基础步骤:1)新建项目并配置窗体基础样式;2)使用Panel控件实现上下分栏布局;3)导入图片素材并设置标题栏背景;4)创建功能按钮并优化样式;5)引入外部控件库丰富功能。文章提供了从项目创建到界面布局的完整指导,包含命名规范、容器划分、素材管理等实用技巧,适合初学者参考实践。作者表示后续将继续分享更多开发内容。
2026-03-20 13:39:48
427
原创 封装带参数的 SQLHelper 类
在上一章基础 SQLHelper 封装的基础上,我们对类进行升级改造,为所有数据库操作方法添加,既兼容原有不带参数的 SQL 执行方式,又能彻底解决 SQL 注入问题,让数据库操作更安全、更通用。本文将详细讲解带参数 SQLHelper 的封装思路、核心代码及使用方式,并说明参数化查询的必要性。
2026-03-18 17:47:47
381
原创 SQLHelper 封装与数据库连接字符串配置超详细教程
本文介绍了使用SQLHelper类封装ADO.NET数据库操作的方法。首先讲解了如何将数据库连接字符串配置在App.config文件中,便于维护。然后详细展示了SQLHelper类的完整实现:包括读取连接字符串、封装增删改(ExecuteNonQuery)、单一结果查询(ExecuteScalar)以及两种查询方式(SqlDataReader和DataSet)。最后提供了实际调用示例,演示了如何在WinForm项目中调用这些方法进行数据操作。这种封装方式能有效减少代码冗余,提高开发效率和代码维护性。
2026-03-18 12:58:13
372
原创 C# 联合 SQL Server 实现数据的修改与查询功能
在 C# WinForm 开发中,结合 SQL Server 数据库实现增删改查是基础且核心的操作,本文在上节实现新增、删除用户的基础上,重点讲解和的完整步骤,包含界面设计、代码编写、类的创建及控件绑定细节,同时解决开发中遇到的典型问题,实现完整的用户数据管理功能。
2026-03-15 22:11:08
490
原创 C#联合SQLServer增加删除
在 WinForm 开发中,C# 结合 SQL Server 实现数据的增删改查是基础且核心的操作,本文将以为例,详细讲解如何通过 C#()联合 SQL Server 实现用户的添加与删除功能,包含数据库表设计、WinForm 界面搭建、核心代码实现等全流程,代码简洁易懂,适合入门学习。
2026-03-14 21:26:15
410
原创 C# 连接 SQL Server 数据库(SA 账户方式)
在 C# 开发中,操作 SQL Server 数据库是基础且常用的需求,我将详细介绍通过实现 C# 与 SQL Server 数据库的连接,附带完整可运行代码,并讲解核心要点,适合新手快速上手。
2026-03-14 00:00:43
178
原创 基于 T-SQL 规范创建数据表实战:用户与角色表设计
本文介绍了在SQLServer中使用T-SQL规范创建关联数据表的方法。以用户表(SysAdmin)和角色表(UserRole)为例,演示了一对多关系的表设计:角色表设置主键RoleId,用户表包含自增主键LoginId(从10000开始)和外键RoleId关联角色表。详细讲解了同名表判断删除、自增列、主外键约束等核心知识点,并提供了完整的T-SQL实现代码。通过这种规范化建表方式,可确保数据完整性和表间关联有效性,适合数据库开发初学者参考实践。
2026-03-13 22:57:36
383
原创 SQLServer 常用数据类型与数据约束全面梳理
用于保证数据库中数据的完整性、一致性和有效性,避免非法、无效数据的插入或修改。两类,核心区别在于字符编码与存储占用,双字节类型为统一编码设计,中英文均占 2 个字节,可更好支持多语言场景。近似浮点数存储小数时存在微小精度丢失,但存储范围更广,适用于对精度要求不高的场景(如测量值、估算值)。,整型用于存储整数,浮点数用于存储小数,核心区别在于精度和存储范围。:通过指定字段的数据类型,限制字段可存储的数据范围,是最基础的约束。:表中的核心信息字段,如 ID、名称、编号等,避免关键数据缺失。
2026-03-13 15:40:11
385
原创 SQL Server 创建数据库:图形化 + 脚本化两种方法实操
摘要:SQL Server数据库创建有图形化界面和T-SQL脚本两种方式。图形化操作简单直观,适合新手快速上手;T-SQL脚本可移植性强,支持参数自定义、判重删除等高级功能,是团队协作和批量部署的首选。文章详细介绍了两种方式的具体操作步骤,并提供了可直接复用的T-SQL脚本模板,包含关键参数说明和注意事项,帮助用户根据实际需求灵活选择创建方式。
2026-03-12 23:49:14
828
原创 SQL 客户端远程登录服务器详细操作教程
在日常开发和运维工作中,经常需要通过 SQL 客户端远程连接服务器上的 SQL Server 数据库,本文将详细讲解完整的配置和连接步骤,同时附上连接失败的排查方法,亲测有效,适合新手快速上手。
2026-03-12 14:16:47
473
原创 SQL 数据库两种登录连接方式(专业实操记录)
本文介绍了SQL Server数据库的两种登录方式:Windows身份认证和SQL Server身份认证。Windows认证适用于本地操作,通过系统账号免密登录;SQL Server认证需配置sa账号,适用于远程访问。详细说明了查找实例名、开启混合认证、配置sa账号及重启服务的完整步骤,并强调了sa账号安全设置的重要性。两种方式均需正确填写服务器名和实例名,配置后重启服务生效。
2026-03-11 18:33:42
758
原创 C# WinForms 开发多状态循环泵自定义控件(一)
为了规范泵的状态值,避免硬编码的混乱,使用enum打开Pump.cs的代码页,在命名空间内、控件类外定义枚举PumpState;枚举中包含运行、停止、故障、备用四个值,代码如下:// 定义循环泵状态枚举运行,停止,故障,备用枚举的优势在于,后续设置状态时只能选择指定值,不会出现因手动输入字符串 / 数字导致的状态错误。
2026-03-09 09:12:12
410
原创 小白入门:WinForm 自定义仪表盘控件开发(二)
摘要:本文详细介绍了WinForm自定义仪表盘控件的开发过程,重点讲解OnPaint事件的重写方法和可配置属性的封装。核心内容包括:1)通过重写OnPaint事件实现仪表盘绘制,包括底圆、渐变扇形、内圆和中心文字的分步绘制逻辑;2)将关键参数封装为可配置属性,使用特性标签使属性显示在VS属性窗口中,支持实时修改和预览;3)介绍了画刷的继承关系和使用场景。文章采用新手友好方式,逐步讲解代码实现、避坑点和实用技巧,帮助开发者快速掌握自定义控件开发方法。
2026-03-08 13:06:33
488
原创 小白入门:WinForm 自定义仪表盘控件开发(一)
本文分享了WinForm自定义仪表盘控件开发经验,重点讲解了三个核心知识点:1)将控件放入组件类库实现复用性;2)通过重写OnPaint事件绘制控件外观,需注意base.OnPaint调用和抗锯齿处理;3)使用可配置属性提高控件灵活性,包括属性代码生成技巧、特性标注和刷新机制。文章采用新手友好视角,结合代码示例和常见问题解析,帮助开发者快速掌握自定义控件开发要点,特别强调了复用性设计、属性配置和绘制优化的实用技巧。
2026-03-07 13:24:22
491
原创 【小白入门】WinForms 绘图实战:基于 GDI + 绘制自定义图形
本文介绍了WinForms中使用GDI+绘制矩形的基础方法。重点讲解了Paint事件的作用及绑定方式,指出这是确保图形稳定显示的关键。通过示例代码详细拆解了绘制普通红色矩形和渐变色矩形的步骤,包括Graphics画布的使用、Rectangle区域定义和Brush填充工具的应用。文章还提供了完整的可运行代码,并针对新手常见问题给出了避坑指南,如正确获取Graphics对象、资源释放等注意事项。最后强调掌握基础绘图原理后,再逐步学习更复杂的图形绘制技巧。
2026-03-06 23:31:06
493
原创 C# 上位机开发入门:手把手实现带图标的自定义扩展按钮控件
在控件库项目上右键→添加→新建项,选择组件类,命名为,点击确定;2.打开的代码视图,删除默认的冗余代码(主要是带的构造函数和无用的引用,保留基础的命名空间和空构造函数即可);3.修改继承对象:默认的组件类继承的是Component,将其改为Button,代码如下✨小白必看:为什么要改继承为 Button?我们要做的是扩展 Button 按钮,必须继承 WinForms 的原生Button类,才能拥有原生按钮的所有属性、方法和可视化效果,在此基础上添加图标功能;而Component。
2026-03-05 23:19:06
467
原创 关于委托方法的理解的五步法
4.委托变量绑定委托方法,哪里可以实现绑定就在哪里绑 什么地方可以获取到委托变量和委托方法。2.创建委托变量:哪里调用,在哪里创建,哪里调用,要看数据在哪里,动作源在哪里。3.创建委托方法,哪里实现,在哪里创建。5.调用委托,希望在哪里调用就在哪里调。1.声明委托类的外面与类平级。
2026-02-28 12:18:42
44
原创 上位机创建第一个西门子通信
3.创建PLC对象,建立PLC连接。点击引用->管理NuGet程序包。3.创建一个定时器来实时读取。2.在项目中下载S7通信库。在主窗体引入S7命名空间。1.创建一个C#项目。
2026-02-27 18:19:03
27
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅