找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 33399|回复: 19
打印 上一主题 下一主题
收起左侧

自己动手做一个PLC

  [复制链接]
跳转到指定楼层
楼主

我们自己来做一个PLC(Programmable Logic Controller,即可编程逻辑控制器)怎么样?就像很多计算机专业的同学都自己写过最简单的操作系统一样,作为工控领域的软件人,怎么能不自己动手做个简单的PLC呢?

PLC其实也是经历了很长时间的演变,最早的PLC虽然也是运行在单片机上,但是仅支持指定模块的编程,而下装组态其实是在传输各个点及各个点之间的连接信息,再由PLC根据这些信息在内部进行解析运行。而现在的PLC,大多数都可以被称之为软PLC(也称Soft PLC),即在PC端便已经编译成二进制文件,下载至PLC的过程是拷贝或者烧录程序的过程,这使得PC的高性能得到了更好的发挥,我们今天讨论的PLC便属于软PLC。

如果你想要找我要代码的话,虽然我自己已经尝试着做过一个简单基本的了,但是不得不说一个完整的PLC是相当的庞大和复杂,我自己的仅供我自己学习使用了,没有足够的注释和文档去帮助别人了解,故在这里我可以推荐一个做得还算不错的开源项目(当时我自己尝试的时候也借用了这个项目中不少的组件),这个开源项目叫做beremiz。

首先让我们来考虑一下,我自己要做的PLC需要些什么组件呢?

软件环境
  • PLC程序IDE,方便开发人员编写和调试程序的人机界面,支持多种语言的开发。可选的开源项目:
  • PLCEdit:完全按照IEC61131标准开发,所有五种语言均支持,使用Python开发,故可以做到跨平台。
  • Beremiz:一套完整的开源PLC解决方案,不过放在这里主要是因为它不但使用了上面说的PLCEdit,同时还对其进行了增强,使得其增加了重要的在线调试功能。
  • SoapBox Snap:使用C#+WPF开发的,仅支持梯形图一种语言,不过却已经支持了在线调试功能,含模拟器。
  • 我的解决方案:我使用了Node.js+HTML5开发,仅支持梯形图一种语言,不支持在线调试,使用HTML5方案最大的优势有两点,一是适应未来发展需要,二是类似于家用路由器一样,可以将网页嵌入到设备中,故只要一台能浏览HTML5网页的浏览器便可以配置PLC。

按照工业控制领域常用的IEC61131-3标准来看,工业控制领域程序语言被分为了两大类五种语言,两大类是指图形化编程和代码编程,图形化编程中有Ladder(梯形图),FBD(Function Block Diagram,功能块图)和SFC(Sequential Function Chart,序列功能表),而代码编程有IL(Instruction List,指令集)和ST(Structured Text,结构化文本),具体内容我就不展开了,有需要自行百度百科或维基百科。
  • HMI设计器,Human-machine interface,即人机界面,主要用来显示控制过程中的实时数据,并设置一些按键方便操作员快速控制系统。可选方案:
  • Beremiz:使用SVG技术开发,样式可扩展性强,但是逻辑扩展性弱。
  • 我的解决方案:使用HTML5技术开发,不但有丰富的开源编辑器可供选用,而且用户可以自行嵌入JS逻辑。
  • 编译器,顾名思义,就是将在IDE环境中编写好的程序转换成可以直接运行在单片机上的二进制序列。可选的开源项目:
  • mat:最全面的开源编译器,输入符合其标准的定义文件,并可以支持IL和ST两种文本语言。使用纯C开发,大量使用了宏定义,导致我看代码看得挺吃力的。
  • Avrian-Jump:一个非常初级的梯形图编辑器,并可以将该梯形图转译成ATMega168的二进制程序,使用js开发,直接在网页上操作。
  • 我的解决方案:我的初版解决方案是使用C#语言通过正则表达式识别代码并转成可供执行的Python代码。后来将正则表达式的方式改为Coco/R,即专门的编译器生成器。
  • 其他必要的类库或驱动,通常情况主要就是IO的驱动,以及通信的协议栈,当然还不能缺少基本的供开发人员调用的类库。很多时候都是内嵌在编译器中,或者提供足够的灵活性让用户自行开发。

硬件环境
  • MCU,Microcontroller Unit,微处理单元,用于具体执行逻辑的部件,必要时可能还会承担通信、程序更新和日志记录的工作。
  • 外围电路,其实主要说的外围电路就是IO相关的电路,不过作为软件人,这方面不用搞得非常清楚,我们只需要购置一些标准的开发板,便会将这些事情都处理的妥妥当当的。

我的解决方案:使用虚拟机运行Linux模拟,以及使用RaspberryPi这类支持运行Linux和Python的环境。

每一个子项中的解决方案或者开源项目都还会有很多,在这里,我仅列举了我使用过和了解过的,相信你可以轻松的通过google搜索到更多的类似开源组件,所以在这里就不一一列举了。

以上简单的介绍了一下自己设计的PLC系统的基本组成部分,以及一些可选的开源项目和他们的特性。制作PLC并不是一件简单的事情,相信你也无法在看过本文后便轻松的制作出自己那个PLC,不过我希望可以通过本文让你了解到,做一个自己的PLC所需要的部件,以及其实它也并非高不可攀的。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶2 踩
回复

使用道具 举报

来自 2#
ID:476652 发表于 2021-3-31 14:53 | 只看该作者
就这还有朋友说很厉害,绝对高手啊!!只能说一句,有这种认识的伙计,只对单片机有所了解,而对PLC一概不通。所以才会草草得出这样的结论来。
plc价格很贵,为什么在现在工控行业不被淘汰,不被单片机代替掉,究其原因,plc有几个特点
1 plc在全球乃至全宇宙已经有好几千万甚至好几亿的实际应用量了,各种bug已经被解决完了。
2 plc已经形成了模块化,标准化,从硬件,软件都已经达到了一定的水平了。
3 plc从购买,开发,运行,这个过程非常短,
4 plc系统运行安全,硬件稳定,开发迅速。
plc的这几个方面,是现在哪个单片机都没有达到的,也是plc很贵,但单片机无法代替的原因。

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:269447 发表于 2017-12-31 12:36 | 只看该作者
想法不错,PLC的核心其实还是单片机
回复

使用道具 举报

地板
ID:260785 发表于 2018-1-7 11:11 | 只看该作者
绝世好帖!
回复

使用道具 举报

5#
ID:275217 发表于 2018-1-12 15:00 | 只看该作者
很厉害啊 ,哥哥
回复

使用道具 举报

6#
ID:280298 发表于 2018-1-27 21:28 | 只看该作者
呃 楼主这个帖子,水分好大……
回复

使用道具 举报

7#
ID:273087 发表于 2018-8-24 13:48 | 只看该作者
有需要灵动微单片机可联系我司
回复

使用道具 举报

8#
ID:395889 发表于 2018-9-10 10:21 | 只看该作者
厉害厉害, 还是这个论坛的大神比较多
回复

使用道具 举报

9#
ID:229137 发表于 2019-8-5 13:56 | 只看该作者
感觉像广告贴?
回复

使用道具 举报

10#
ID:230559 发表于 2019-8-13 09:44 | 只看该作者
不知道实施了没有?
回复

使用道具 举报

11#
ID:604779 发表于 2019-8-28 15:45 | 只看该作者
很厉害啊 绝对高手
回复

使用道具 举报

12#
ID:97678 发表于 2020-9-22 08:14 | 只看该作者
这个没有什么实质内容!内容不能下载!
回复

使用道具 举报

13#
ID:880192 发表于 2021-1-24 17:28 | 只看该作者
现在几大品牌已经很成熟了
回复

使用道具 举报

14#
ID:791205 发表于 2021-8-8 21:36 | 只看该作者
温柔的郎 发表于 2021-3-31 14:53
就这还有朋友说很厉害,绝对高手啊!!只能说一句,有这种认识的伙计,只对单片机有所了解,而对PLC一概不 ...

你说的都是对的,PLC成本高,且单片机无法很好替代,但实际上我就是利用单片机的程序模准化,可视化,数据管理统一化,用C语言开发,其于KEIL做到了比PLC开发更简单。。。
回复

使用道具 举报

15#
ID:951974 发表于 2022-5-7 23:59 | 只看该作者
温柔的郎 发表于 2021-3-31 14:53
就这还有朋友说很厉害,绝对高手啊!!只能说一句,有这种认识的伙计,只对单片机有所了解,而对PLC一概不 ...

PLC的本质上就是单片机, 但是请注意它是已经成熟无BUG的单片机, 假如你自己用单片机做的PLC也能无BUG,那也就是PLC了
回复

使用道具 举报

16#
ID:829010 发表于 2022-5-8 08:53 | 只看该作者
PLC主要是为工业控制应用设计,抗干扰能力强。编程使用特定的汇编语言。这些和单片机不同
当然最主要的原因是单片机太便宜,要不上价。利润空间太小,都不愿做。
现在有些私人企业为降低成本,使用订制PLC。其实内部也还是单片机
回复

使用道具 举报

17#
ID:712493 发表于 2022-5-8 09:12 | 只看该作者
1588848 发表于 2022-5-7 23:59
PLC的本质上就是单片机, 但是请注意它是已经成熟无BUG的单片机, 假如你自己用单片机做的PLC也能无BUG, ...

有什么单片机是没有BUG的,是电子产品就有缺陷  只是相对你的应用致命不致命而已。
回复

使用道具 举报

18#
ID:712493 发表于 2022-5-8 09:19 | 只看该作者
993387119 发表于 2022-5-8 08:53
PLC主要是为工业控制应用设计,抗干扰能力强。编程使用特定的汇编语言。这些和单片机不同
当然最主要的原 ...

其实不管PLC怎么设计,内部还是单片机  或许等级不一样  还是单片机 实际可以说PLC只不过是用料要求高些的控制器而已,但PLC的优势不在于多可靠(当然可靠也是需要的) 而是模块化,一致性好,不需要重复造车  并应用门槛降低 应用时间缩短。
回复

使用道具 举报

19#
ID:424501 发表于 2022-8-26 15:58 | 只看该作者
有道理,51黑有你更精彩!!!
回复

使用道具 举报

20#
ID:496636 发表于 2022-9-12 09:51 | 只看该作者
PLC本身就是单片机,不过性能当然比51单片机强多了,单里面的存储容量都是十K以上,单片机才几K。就西门子的S7-200 PLC,有很多的V存储器,可以放心的用,还有支持浮点数运算,单片机要用到浮点数运算,那得STC的32位单片机了。
低档的PLC里面刷了个小型的系统,这样能支持上传下载自控程序,还有PPI通讯,状态灯的显示。自控程序应该都是以语句表的形式加上一些数据块,系统块下载到PLC里去的。PLC系统就是依照语句表程序逐一解释执行。执行前采样,执行后输出。这样往复运行。
再发展,中大型PLC里就有了功能更加强大的系统,如果程序中只作了小部分的更改,你完全可以部分下载,不用大动干戈,把整个程序编译一遍,再下载。同时也支持PLC运行状态下的下载,不影响自控系统的运行。
PLC最大的优点是降低了自控设计人员素质要求,你学个单片机起码是大学水平,PLC初中水平就行了,能编个梯形图。要学好单片机不容易的,又要会数字电路,还要会模拟电路,还要会画电路板,还要会C语言,用KEIL编单片机程序,这能出山都是电子工程师的水平。可用PLC初中没毕业的电工都能编个梯形图。
同样是大学生,做一个自控项目,用PLC搭建,一星期解决,而用单片机起码一个月起。
我们厂有个老师傅,就用单片机做化工厂实验室的自控项目,如控制釜温、调节精馏回流比,还是控制管道压力稳定。萃取过程中对液体颜色的采集,控制蠕动泵流量大小,还有是模拟移动床色谱分离自控系统的开发。等等,还跟电脑进行通讯,用VB做上位机,用于显示控制并历史记录。
老师傅不是研究院的,做了二套模拟移动床系统,他的领导不让他干了,今年我用S7-200做了个模拟移动床的自控系统,建立在人家成熟的硬件和软件基础上,凭我这点水平也完成了,明显降低了人员素质的要求。
我们公司用到单片机的地方,都是安全级别低的场合,如果是化工车间里的自控系统,那是万万不能用。
一个产品,要用上还得各种各样的认证,通过设计验证,还是测验验证,让对方认可,所以PLC不可替代,不要说国产兼容的PLC,如果应用在普通车间,都是够用了,但你把它用在电梯还是矿井安全级别要求高的场所,那是万万不可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表