当前位置: 首页 > news >正文

上位机与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线就硬怼!)

http://www.jsqmd.com/news/161472/

相关文章:

  • 数据湖中的数据治理工具链:开源方案全解析
  • PyTorch-CUDA-v2.7镜像能否替代传统Conda环境?
  • 计算机网络入门全解析:掌握计算机科学与技术专业的核心必修课关键原理与体系结构
  • PyTorch-CUDA-v2.7镜像中如何监控GPU使用率
  • 【课程设计/毕业设计】基于SpringBoot+Vue的服务展示 - 在线预约 - 用品商城 - 互动反馈宠物生活馆网站的设计与实现【附源码、数据库、万字文档】
  • 深度学习入门必备:PyTorch GPU环境安装全攻略
  • 冷门不等于冷清!这 8 款国产软件,好用得上头!
  • PyTorch-CUDA-v2.7镜像是否支持GAN网络训练
  • 鸡械绿洲pc免安装中文版 v1.3.18 +修改器下载 无限生命无限动力无限金钱技能无限CD一击必杀
  • PyTorch模型训练日志管理:结合Git Commit做版本追踪
  • 如何在Linux服务器上通过SSH连接使用PyTorch镜像
  • 从GitHub提交第一个commit开始:参与开源AI项目的完整流程
  • PyTorch-CUDA-v2.7镜像是否适合做学术研究
  • PyTorch-CUDA-v2.7镜像运行YOLOv8全流程演示
  • 手把手教你用Anaconda配置PyTorch环境(支持GPU)全流程
  • PyTorch-CUDA-v2.7镜像处理NLP任务的速度优化技巧
  • AI应用架构师必看:构建企业AI创新生态圈的7大核心策略与落地路径
  • PyTorch-CUDA-v2.7镜像是否支持LoRA微调技术
  • Git Commit最佳实践:配合PyTorch实验进行代码版本控制
  • 使用Git下载大型模型权重文件:LFS扩展应用指南
  • 让数据自己说话:TDengine TDgpt 如何识破时序数据中的异常
  • 【博客之星主题征文】2025年度汇总,致永远热情的我们。
  • GitHub星标过万的PyTorch项目合集:值得收藏的学习资源
  • Markdown编写技术博客:记录你的第一次PyTorch模型训练
  • 2026德国乳胶漆怎么选?十大品牌5大维度测评,附除醛环保选型清单 - 速递信息
  • JiyuTrainer下载及使用说明:自动化训练框架集成PyTorch
  • 基于Docker Compose的PyTorch-CUDA开发环境搭建实战
  • 健康家居刚需!2026七大厨余处理器,抗菌防堵设计提升幸福感 - 速递信息
  • 【课程设计/毕业设计】基于springboot的大学生科技竞赛管理系统的设计基于SpringBoot的高校竞赛管理系统设计与开发【附源码、数据库、万字文档】
  • 水冷电机方案仿真技术研究:案例分析、素材准备与录屏实践