news 2026/5/11 7:38:43

台达AS系列PLC的Modbus TCP通信C#源代码及生产数据监控与Excel表格生成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
台达AS系列PLC的Modbus TCP通信C#源代码及生产数据监控与Excel表格生成

台达AS系列PLC modbus TCP网口上位机通信,项目现场使用设备的C#源代码,监控设备每月每天的生产数据并生成Excel表格。

最近在工业现场折腾台达AS系列PLC的Modbus TCP通讯,发现这玩意儿的协议实现和常规设备还真有点不一样。项目需求是抓取设备每月每天的生产数据存Excel,先给大伙儿看看我们是怎么用C#暴力破解的。

先上硬菜——网络连接部分。台达PLC的Modbus TCP端口默认是502,但寄存器地址需要特别注意偏移量:

using System.Net.Sockets; //... TcpClient client = new TcpClient(); client.Connect("192.168.1.10", 502); NetworkStream stream = client.GetStream(); // Modbus TCP请求帧 byte[] request = new byte[] { 0x00, 0x01, //事务标识 0x00, 0x00, //协议标识 0x00, 0x06, //后续字节数 0x01, //单元标识 0x03, //功能码03(读保持寄存器) 0x00, 0x64, //起始地址(注意台达地址偏移) 0x00, 0x02 //读取寄存器数量 };

这里有个坑——台达的寄存器地址需要做+1偏移。比如手册标注D100寄存器,实际要发0x0063(十进制99)而不是0x0064。第一次调试时在这卡了两个小时,现场老哥差点把咖啡泼我键盘上。

台达AS系列PLC modbus TCP网口上位机通信,项目现场使用设备的C#源代码,监控设备每月每天的生产数据并生成Excel表格。

数据解析环节更刺激。读回来的数据是大端模式,处理浮点数得特别注意:

byte[] response = new byte[256]; int bytesRead = stream.Read(response, 0, response.Length); // 解析产量数据(假设从D100开始) float dailyOutput = BitConverter.ToSingle(new byte[] { response[9], response[8], //注意字节顺序 response[11], response[10] }, 0); // 处理负数情况 if (BitConverter.IsLittleEndian) { Array.Reverse(response, 8, 4); }

这段代码让我想起去年在钢厂调试时,温度值总是显示-40°C,后来发现是字节顺序没处理好。现在看见BitConverter都有应激反应,建议各位随身携带字节序对照表。

数据攒够之后要生成Excel报表,用EPPlus比传统的Interop稳定得多:

using OfficeOpenXml; //... using (var package = new ExcelPackage()) { var worksheet = package.Workbook.Worksheets.Add("生产日报"); worksheet.Cells["A1"].LoadFromCollection(dataRecords, true); // 设置日期格式 worksheet.Column(1).Style.Numberformat.Format = "yyyy-MM-dd"; // 自动调整列宽(防止现场人员老花眼) worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); FileInfo file = new FileInfo($"{DateTime.Now:yyyyMM}_production.xlsx"); package.SaveAs(file); }

EPPlus处理十万级数据量时建议开启内存优化模式,别问我怎么知道的——上个月报表生成直接吃光8G内存,现场工控机当场罢工。顺便提醒,记得在finally块里释放资源,PLC那边的连接超时可不会等你。

调试时建议用Modbus Slave软件模拟PLC,Wireshark抓包看原始数据流。曾经遇到个灵异事件:现场设备正常但读不到数据,后来发现是网管把502端口给封了。所以啊,工业网络调试,三分靠技术,七分靠玄学。

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

告别复制粘贴!PDF-Parser-1.0实战:3步提取论文/报告/合同所有内容

告别复制粘贴!PDF-Parser-1.0实战:3步提取论文/报告/合同所有内容 1. 为什么你需要PDF-Parser-1.0? 还在为PDF文档中的内容提取而烦恼吗?无论是学术论文中的复杂公式,财务报告里的精密表格,还是法律合同中…

作者头像 李华
网站建设 2026/4/9 19:35:13

EVA零样本分类性能优化:27个基准测试的完整评估报告

EVA零样本分类性能优化:27个基准测试的完整评估报告 【免费下载链接】EVA EVA Series: Visual Representation Fantasies from BAAI 项目地址: https://gitcode.com/gh_mirrors/ev/EVA 探索EVA系列视觉表示模型的零样本分类性能优化策略!本文将深…

作者头像 李华
网站建设 2026/4/9 19:24:52

RPG Maker解密工具终极指南:快速提取游戏资源与素材

RPG Maker解密工具终极指南:快速提取游戏资源与素材 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirrors/rp/RPG…

作者头像 李华
网站建设 2026/4/9 19:20:39

基于STM32LXXX的数字电位器(AD5245BRJZ10-RL7)驱动应用程序设计

一、简介: AD5245是Analog Devices公司生产的一款256-位置、I2C兼容型数字电位器。它主要用于替代机械式电位器,适用于对分辨率、可靠性和温度系数有要求的场合。 二、主要技术特性: 参数 值 抽头数 (Resolution) 256 Positions 端到端电阻 (Resistance) 10 kΩ (型号中的“…

作者头像 李华
网站建设 2026/4/9 19:20:33

游戏操作优化工具Hitboxer:解决SOCD冲突的开源方案

游戏操作优化工具Hitboxer:解决SOCD冲突的开源方案 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在游戏操作中,同时按下相反方向键导致的角色卡顿、指令失效等问题,是影响玩…

作者头像 李华