news 2026/4/18 9:47:59

上位机与PLC 通讯源码 DEMO 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
上位机与PLC 通讯源码 DEMO 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制

上位机与PLC 通讯源码 DEMO 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,A系列,Q系列,L系列,R系列,全系系列,各种串口和各种网口通讯,, 西门子采用S7.NET通讯,支持S7200,300,400,S71200,1500系列(网口), 带详细注释源码,写的非常通俗易懂,PLC和上位机通讯,(编程语言采用VB.NET) 需要用到上位机采集,PLC通讯数据项目的或者实际项目要用到的童靴可以学习参考… 包含: S7.NET 使用中文说明书,提供各个函数接口,方便直接在工程实际项目中使用 ( 网上一般都是英文的) 程序源码实例(带详细注释) MX Componnet 说明书 个人详细说明 及具体使用方法和注意事项

最近在工控项目里折腾上位机和PLC联调,发现不少同行对多品牌PLC混搭通讯挺头疼的。刚好手头有个用VB.NET写的双协议通讯DEMO,实测过三菱全系和西门子S7系列,今天把关键代码拆开揉碎了说说。

三菱PLC通讯的暴力美学

用官方MX Component是真香,但安装包里的日文文档确实劝退。这里推荐直接啃MX Componnet安装目录下的MelsecMxCtl.chm帮助文件,用翻译软件转成中文能省一半时间。

初始化通讯建议用网口方案(毕竟现在谁还用串口啊):

Dim mx As New ActEasyIF With mx .ActLogicalStationNumber = 0 ' 逻辑站号对应MX Configurator设置 .Open() If .State <> ActEasyIF.StateEnum.OPEN Then Throw New Exception("三菱PLC连接异常,检查IP白名单!") End If End With

注意Q系列要单独设置CPU类型,遇到过新手在L02CPU上死活连不上的情况:

mx.ActCpuType = ActEasyIF.CpuTypeEnum.Q_L02CPU

读D寄存器的正确姿势:

Dim devValue As Integer mx.ReadDeviceRandom("D100", 1, devValue) ' 这里有个坑:地址不要带软元件类型,直接写D100'

西门子S7的骚操作

S7.NET的GitHub项目是开源的,但中文资料确实稀缺。实测S71200的DB块读写得这么玩:

Dim plc As New Plc(CpuType.S71200, "192.168.0.1", 0, 1) plc.Open() If plc.IsConnected Then Dim dataBuffer(20) As Byte plc.ReadBytes(DataType.DataBlock, 1, 0, 2, dataBuffer) ' DB1.DBW0读取2个字节' End If

遇到过最奇葩的bug是S7-200 Smart必须设置机架号和槽号为0,不然直接Timeout给你看。

双协议同场飙车怎么玩

同时连两种PLC时记得分线程处理:

Task.Factory.StartNew(Sub() While True ' 三菱数据采集 ' SyncLock mxLock mx.ReadDeviceRandom("D100", 1, devValue) End SyncLock Thread.Sleep(50) End While End Sub) Task.Factory.StartNew(Sub() While True ' 西门子数据采集 ' SyncLock s7Lock plc.ReadBytes(...) End SyncLock Thread.Sleep(50) End While End Sub)

同步锁一定要加!血泪教训:之前没加锁导致MX Component底层崩溃蓝屏。

项目实战避坑指南

  1. 三菱MX组件要手动激活许可证,在控制面板找到MELSEC Environment下的License Management
  2. 西门子TPLC的TSAP默认是03.01,但有些国产触摸屏改过TSAP会导致连不上
  3. 批量读取时三菱建议用ReadDeviceBlock代替多次ReadDeviceRandom
  4. 遇到S7.NET报错18#大概率是DB块没勾选允许远程访问

源码里特意加了这些异常处理:

Try mx.WriteDeviceRandom("Y10", 1, 1) ' 强制输出Y10' Catch ex As Exception When TypeOf ex Is TIME_OUT ' 三菱超时重连逻辑 ' Catch ex As Exception When ex.Message.Contains("无法访问") ' 西门子权限异常处理 ' End Try

最后说个冷知识:MX Component的TCP端口默认5561,如果防火墙没开这个端口,调试时能ping通但死活连不上。曾经有次在现场排查了三个小时才发现是Windows Defender在搞事情...

(源码和中文手册已打包,需要的直接评论区喊话。特别说明:西门子S7-200需要PPI转换器,别拿个USB线就硬怼!)

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

Web前端框架技术入门全解析:掌握现代前端开发的核心范式与工程体系

Web前端框架技术入门全解析&#xff1a;掌握现代前端开发的核心范式与工程体系摘要&#xff1a;作为计算机科学与技术专业高年级阶段的关键实践课程&#xff0c;《Web前端框架技术》标志着从“静态页面”向“动态交互式应用”的能力跃迁。本文系统梳理课程核心知识体系&#xf…

作者头像 李华
网站建设 2026/4/18 3:49:02

开源大模型训练新选择:PyTorch-CUDA一体化镜像体验

开源大模型训练新选择&#xff1a;PyTorch-CUDA一体化镜像体验 在当前大模型研发如火如荼的背景下&#xff0c;一个常见的现实是&#xff1a;许多团队花在“让代码跑起来”上的时间&#xff0c;远超真正用于模型创新的时间。你是否也经历过这样的场景——刚复现完一篇论文的代码…

作者头像 李华
网站建设 2026/4/18 3:50:54

HuggingFace镜像网站加速指南:提升大模型下载效率技巧

HuggingFace镜像网站加速指南&#xff1a;提升大模型下载效率技巧 在深度学习项目开发中&#xff0c;你是否曾经历过这样的场景&#xff1f;凌晨两点&#xff0c;服务器上 from_pretrained("big-model") 的进度条卡在 15%&#xff0c;网络速度显示不足 20KB/s。一边是…

作者头像 李华
网站建设 2026/4/18 3:46:31

PyTorch-CUDA-v2.7镜像是否支持实例分割模型

PyTorch-CUDA-v2.7镜像是否支持实例分割模型 在计算机视觉的前沿应用中&#xff0c;实例分割正变得越来越关键——从自动驾驶车辆识别行人与障碍物&#xff0c;到医疗影像中精准勾勒肿瘤边界&#xff0c;再到机器人抓取系统理解复杂场景中的独立物体。这类任务不仅要求模型检测…

作者头像 李华
网站建设 2026/4/17 18:12:30

PyTorch-CUDA-v2.7镜像的安全性与稳定性评估报告

PyTorch-CUDA-v2.7镜像的安全性与稳定性深度解析 在现代AI研发的日常中&#xff0c;一个常见的场景是&#xff1a;团队成员在本地训练模型一切正常&#xff0c;但一部署到服务器就报CUDA版本不兼容&#xff1b;或者刚配置完环境&#xff0c;却发现cuDNN版本和PyTorch要求对不上…

作者头像 李华
网站建设 2026/4/18 3:35:55

Markdown写技术博客:记录你的PyTorch学习成长之路

PyTorch-CUDA-v2.8 镜像&#xff1a;构建高效深度学习开发环境的实践指南 在深度学习项目中&#xff0c;最让人头疼的往往不是模型设计本身&#xff0c;而是环境配置——“为什么我的代码在本地跑得好好的&#xff0c;换台机器就报错&#xff1f;”、“CUDA 版本不兼容怎么办&a…

作者头像 李华