news 2026/4/16 14:27:07

车间主任老张最近盯着监控屏直挠头,设备数据像脱缰野马抓不住。我递给他一杯枸杞茶:“要不试试用C#搞个数据抓取系统?“ 他眼镜片突然反光:“细说

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
车间主任老张最近盯着监控屏直挠头,设备数据像脱缰野马抓不住。我递给他一杯枸杞茶:“要不试试用C#搞个数据抓取系统?“ 他眼镜片突然反光:“细说

C#上位机与西门子PLC通讯,读取数据,存储数据库,形成报表可查询,报警历史查询,变量自定义配置。 每一步都有视频讲解(详细视频教程) 案例:涉及多线程,数据库存储,与PLC通讯等技术

通讯连接才是硬道理

Sharp7库的DLL扔进项目,连PLC跟找对象似的得先对上暗号:

var plc = new S7Client(); int result = plc.ConnectTo("192.168.0.1", 0, 1); //IP,机架,槽号 if (result == 0) { Console.WriteLine("握手成功!PLC型号:" + plc.GetCpuType()); }

遇到过最邪门的bug是网线水晶头氧化导致随机掉线,后来加了个心跳检测线程:

Task.Run(() => { while (true) { if (!plc.GetPlcStatus()) { _logger.Warning("PLC失联!尝试重连..."); plc.ForceReconnect(); } Thread.Sleep(3000); } });

数据入库要玩出花

用EF Core搞批量插入比单条写入快20倍不止:

var buffer = new ConcurrentQueue<PlcData>(); //多线程缓冲队列 using var context = new DataContext(); context.ChangeTracker.AutoDetectChangesEnabled = false; while (!token.IsCancellationRequested) { if (buffer.TryDequeue(out var data)) { context.Add(data); if (++count % 500 == 0) //每500条提交 { context.SaveChanges(); context.Dispose(); context = new DataContext(); } } }

注意这个坑:DbContext实例不是线程安全的,每个写入线程得单独实例化。

报警处理得像急诊室

C#上位机与西门子PLC通讯,读取数据,存储数据库,形成报表可查询,报警历史查询,变量自定义配置。 每一步都有视频讲解(详细视频教程) 案例:涉及多线程,数据库存储,与PLC通讯等技术

报警触发时除了写库,还得实时弹窗:

public class AlarmDispatcher { private readonly BlockingCollection<Alarm> _alarms = new(); public void RaiseAlarm(string msg) { _alarms.Add(new Alarm(msg)); PlaySound("alert.wav"); //蜂鸣器模拟 } void ProcessAlarms() { foreach (var alarm in _alarms.GetConsumingEnumerable()) { using var popup = new AlarmWindow(alarm); popup.ShowDialog(); } } }

用BlockingCollection实现生产者-消费者模型,比手动lock省心多了。

报表生成别当老实人

别傻乎乎自己写SQL统计,用LINQ分组查询真香:

var dailyReport = context.HistoricalData .Where(d => d.Time.Date == DateTime.Today) .GroupBy(d => d.TagName) .Select(g => new { Tag = g.Key, Avg = g.Average(d => d.Value), Max = g.Max(d => d.Value), Min = g.Min(d => d.Value) }).ToList();

搭配ClosedXML导出Excel,比Interop方式快还不依赖Office:

using var workbook = new XLWorkbook(); var ws = workbook.AddWorksheet("日报"); ws.Cell(1, 1).Value = "今日设备心跳全记录"; ws.Range("A1:D1").Merge().Style.Font.Bold = true;

变量配置得会七十二变

用JSON动态配置点位表才是王道:

{ "DataPoints": [ { "Name": "烘箱温度", "DB": 10, "Offset": 12, "DataType": "Real" }, { "Name": "传送带速度", "DB": 12, "Offset": 8, "DataType": "Int" } ] }

解析时上反射大法:

var config = JsonConvert.DeserializeObject<PlcConfig>(File.ReadAllText("points.json")); foreach (var point in config.DataPoints) { var reader = typeof(S7Client).GetMethod($"Read{point.DataType}"); object value = reader.Invoke(plc, new object[] { point.DB, point.Offset }); }

这套系统上线三个月后,老张的枸杞茶终于凉透了——他现在有更多时间盯着大盘指数而不是设备屏了。想看PLC通讯时如何处理字节序问题?数据库连接池怎么优化?点我主页找完整视频教程,连异常处理时的祖传代码都给你瞅瞅。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:58:44

国产 BI 已经崛起,一套私有化+源码的独立数据中台,建议收藏!

在数字化经济的时代&#xff0c;数据已经是企业竞争和长期发展的关键生产要素。企业每天面对的不仅仅是简单的数据堆积&#xff0c;还有海量信息交织形成的复杂决策。如何让数据真正驱动业务增长&#xff1f;商业智能BI作为连接数据与决策的桥梁&#xff0c;通过自动化分析、可…

作者头像 李华
网站建设 2026/4/13 15:55:24

MTX-A 型模拟式燃油压力表(0–100 PSI)产品技术手册与实战应用指南

MTX-A 型模拟式燃油压力表&#xff08;0–100 PSI&#xff09;产品技术手册与实战应用指南 一、产品定位 MTX-A 是专为汽油车燃油供给系统诊断设计的指针式模拟燃油压力表&#xff0c;量程 0–100 PSI&#xff0c;采用机械指针直读结构&#xff0c;无需供电、抗干扰强、稳定耐…

作者头像 李华
网站建设 2026/4/16 10:53:22

Precor必确GLUTEBUILDER系列精准聚焦,解锁臀部训练新维度

随着锻炼者对于臀部训练从一项健身需求&#xff0c;转变为塑性表现、体态健康和S曲线的综合需求&#xff0c;传统器械的单一轨迹与肌肉调动不足&#xff0c;正成为训练者突破的瓶颈。为此&#xff0c;高端健身品牌Precor必确&#xff0c;凭借对精密生物力学的深刻理解&#xff…

作者头像 李华
网站建设 2026/4/16 13:52:04

爆火 Clawdbot 记忆系统架构最佳工程实践

大家好&#xff0c;我是玄姐。导读&#xff1a;最近 Clawdbot 在 GitHub 和各大技术社区爆火。Stars 即将超过 100K。不同于传统 RAG&#xff08;检索增强生成&#xff09;依赖复杂的向量数据库&#xff0c;Clawdbot 回归极简&#xff0c;通过纯文本文件系统构建了一套惊人的“…

作者头像 李华
网站建设 2026/4/14 21:43:04

SSM计算机毕设之基于Web的摄影分享平台摄影图片网站平台系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 11:00:49

信息差永远是最容易上手的生意

图一是一条元宝红包活动相关的视频&#xff0c;几秒钟时长截图时间戳是5.4w评论&#xff0c;目前7w左右&#xff0c;大概用时3小时&#xff0c;还在持续上涨。博主3条视频&#xff0c;分别是7w&#xff0c;6w&#xff0c;还有一条刚刚发&#xff0c;目测这波涨粉可观&#xff0…

作者头像 李华