上位机能代替PLC实现控制?

描述

前言

最近有一些小伙伴问:能不能不使用PLC,通过上位机来实现设备控制?

关于这个问题,我做了一些思考。

PLC全称可编程逻辑控制器,主要由输入输出(IO)+ 逻辑控制(程序)+ 外部接口(通信)三部分组成,如果不采用PLC,仅仅通过上位机,我们至少需要一个IO采集卡,然后将PLC的逻辑控制改成上位机代码来实现,通信这部分对于上位机来说不是很难。

所以,从某种意义上来说,通过上位机来实现设备控制是可行的,但不一定是最优方案,因为术业有专攻,PLC就是专门做逻辑控制的,上位机更多的角色是通过通信来实现上层控制。

既然可行,利用周末时间,给大家做一个简单的测试。

实现原理

PLC的实现原理,就是通过不断地从上而下,从左而右来扫描PLC程序,然后对接一些IO输入输出,通过上位机来实现的话,实现原理我认为是类似的,我们可以通过单独的一个线程来实现扫描,而PLC里的每个指令,我们上位机都可以通过构造对应的类来实现。从某种意义上来说,为什么PLC实现逻辑控制比较简单,其实是因为厂家已经帮我们封装好了很多开箱即用的指令,我们直接调用即可。

如果想使用上位机来替代PLC,PLC的IO可以采用IO采集卡,PLC指令可以自己封装类,PLC中断,可以通过事件来实现,通信部分上位机自然可以实现。

IO采集卡

我这里采用的是正运动的一个IO采集卡,型号是ECI0032,相关参数如下所示:

输入输出

输入输出

ECI0032 板上自带 16 个通用输入口,16 个通用输出口(带过流保护)。

ECI0032 带 1 个 RS232 串口,1 个以太网接口。

ECI0032 带一个 CAN 总线接口,支持通过 ZCAN 协议来连接扩展模块和控制器。

实现过程

基本的接线和配置,我这里就不详细阐述了,这里我将板卡的IP地址改为192.168.2.33。

这里接了两个按钮和一个指示灯,分别表示启动、停止和状态显示。

输入输出

界面设计如下所示:

输入输出

当连接上IO卡之后,可以通过按钮进行本地控制,也可以通过上位机进行远程控制。

核心代码:

private void ProcessControl()
    {
        while (!cts.IsCancellationRequested)
        {
            //检测到开始按钮
            if (startEdge.CheckEdgeSingal(motion.GetInput(1)))
            {
                motion.SetOutput(0, true);
            }

            //检测到停止按钮
            if (stopEdge.CheckEdgeSingal(motion.GetInput(0)))
            {
                motion.SetOutput(0, false);
            }
        }
    }

这个写法有点类似于SCL的逻辑。

测试结果如下所示:

输入输出

-END-

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分