上位机能不能替代PLC呢?
一、前言
大家好!我是付工。
之前有个学员问了这样的一个问题:
学会了上位机,是不是就可以不用PLC了呢?
今天跟大家分享一下上位机能不能代替PLC?
二、网络架构

首先我们看下这张网络架构图。
从图中可以看到:
上位机属于过程监控层,PLC属于现场控制层。
PLC作为下位机,上位机与下位机进行通信,实现整个控制系统的运作。
因此正常情况下,上位机不是用来替代PLC的。
但是,有些情况下,尤其是在一些运动控制机器视觉的项目场景中,整个项目中并没有使用PLC,那么这个时候,我们能不能通过上位机来实现一些逻辑控制呢
三、实现原理
PLC全称可编程逻辑控制器,主要由输入输出(IO)+ 逻辑控制(程序)+ 外部接口(通信)三部分组成。
上位机本身可以实现一定的逻辑控制和外部通信功能,输入输出我们需采用IO采集卡,大部分运动控制卡也自带IO,然后在上位机编写相应的代码来实现逻辑控制即可。
PLC的实现原理,是通过不断地从上而下,从左而右来扫描PLC程序,同时对接一些IO输入输出。
通过上位机来实现的话,实现原理与之类似,我们可以通过单独的一个线程来实现扫描,而PLC里的每个指令,我们上位机都可以通过构造对应的类或方法来实现。
原理其实是相通的,之所以PLC实现逻辑控制比较容易,是因为厂家已经帮我们封装好了很多开箱即用的指令,我们直接调用即可。
所以,如果我们使用C#上位机做这种逻辑控制比较多,也可以封装一些沿信号检测、延时定时器等一些指令,比如起保停主要就是上升沿检测。
四、IO采集卡
目前市面上有很多IO采集卡,大部分IO采集卡都是通过串口ModbusRTU或者以太网ModbusTCP来实现通信,这种通信效率相对较低。
我这里采用的是正运动的IO采集卡,正运动的采集卡也支持ModbusTCP通信,而且通信效率较高,后续可以测试对比一下。

另外一点就是,如果我们使用过正运动的库,我们也可以通过官方提供的运动控制卡的库来直接对接,这样就不用自己写通信库或者使用第三方通信库了。
IO采集卡型号是ECI0032,ECI0032 是正运动技术开发的一款网络 IO 控制卡,采用优化的网络通讯协议可以实现实时的 IO 控制。
ECI0032 网络 IO 控制卡支持以太网口,RS232 通讯接口和电脑相连,通过 CAN 总线可以连接各个扩展模块,从而扩展输入输出点数。
相关参数如下所示:


ECI0032 板上自带 16 个通用输入口,16 个通用输出口(带过流保护)。
ECI0032 带 1 个 RS232 串口,1 个以太网接口。
ECI0032 带一个 CAN 总线接口,通过IO点数不够,可以通过 ZCAN 协议来连接扩展模块和控制器。
五、实现过程
基本的接线和配置,我这里就不详细阐述了,这里我将板卡的IP地址改为192.168.2.33。
通过一个按钮盒接了两个按钮和一个指示灯,分别表示启动、停止和状态显示。

采用Winform设计一个简单的界面,界面效果如下所示:

当连接上IO卡之后,开启一个多线程循环扫描,读取输入按钮的状态,当检测到启动按钮从False变为True的时候,给输出信号置位,当检测停止按钮从False变成True的时候,给输出信号复位。
核心代码如下所示:

这个写法有点类似于SCL的逻辑,整体实现效果如下:

最后总结一下:虽然某些场合,我们可以不使用PLC,通过上位机结合IO采集卡实现一定的逻辑控制,但是并不代表上位机就可以替代PLC。PLC作为目前工业领域使用最广泛的控制器,很多功能是上位机无法替代的。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤