揭秘PLC(一)

本来想好的题目是《跟我学做PLC》,但是转念一想,做为一个离开工控行业七八年的二手程序猿,自己的行业知识已经过期很久了,所以还是改为《揭秘PLC》更合适些。

想当年大四的时候学分不够,所以选修了PLC这门课程,虽然没正儿八经听过几节课,但是实验课程却甚是有趣,引起了我们几个小伙伴的好奇心,总想趁老师不在偷偷拆开看看,到底里面是一个PC还是一个专用的芯片,可惜一直没有得手。不过后来倒是在微机原理实验室里从一堆废电脑里拆出一个Voodoo(好家伙,淘宝现在居然能卖15w)

58baa9edb343d54d90c8628f4ea80b2f.png

毕业后一不小心进入了工控行业,开始研发DCS/PLC产品,接触到了这类产品的相关技术,终于明白PLC里面并没有专用的芯片,其核心部件就是MCU或者MPU/CPU,小型的用MCU,中大型的用MPU/CPU,用PC做的PLC有个专用的名字:Soft-PLC。之前朋友圈里有不少人在分享文章:“PLC, DCS, MCU有什么区别,能不能替换等等”,这里揭开第一个秘密:PLC其实就是拿MCU做的,它们本质上是没有区别的。

既然PLC是用MCU/MPU做的,那具体区别在哪儿呢?上学时看过很多文章和书籍,回想起来总感觉它们总在外面蹭蹭,极少能真正进去,读者往往得到似是而非的东西。今天我们就好好的刨一刨Codesys,争取能往祖坟上刨(受到License的限制,本文只会展示Codesys已公开内容,并以Codesys V2.3版本为例)。

1. 什么是Codesys

Codesys是一个PLC开发套件,将它的RTS组件运行在MCU/MPU端,并配合Codesys PC端就可以轻松设计出一款PLC。之前在公众号上看到哪位大哥在讲国内工业软件的短板,拉出Codesys来,说它是PLC界的安卓,国内的汇川、合信、和利时、英威腾、台达,国外的倍福、施耐德、力士乐都在用,可安卓开源的啊,谁见过入门费20W¥的安卓?

相信有不少朋友开始嘀咕了,这家伙就没有竞争对手了么?有,但确实不多,而且规模也都不大,不然怎么说Codesys是行业安卓呢。下面列了几个玩家(包括开源项目):

VendorSoftwareDescription
3SCodesyshttps://www.codesys.com/
KW-Software(Phoenix收购)MultiProg原先是Codesys最大竞争对手,后被Phoenix收购,改名PLCnext
infoteamOpenPCShttp://infoteam.com.cn/
RockwellISaGRAFhttps://www.rockwellautomation.com/
logicalslogi.CADhttps://www.logicals.com/en/
ide4plcide4plchttps://ide4plc.wordpress.com/
BeremizBeremizhttp://www.beremiz.org/

1.1 Codesys的构成

Codesys由3部分组成:

  1. PC端的Codesys软件:给电气攻城狮提供的编程IDE(编辑器+编译器+调试器),相当于MCU攻城狮的Keil,IAR。这个IDE是可以免费下载。

  2. PLC端的Runtimer system:给PLC Vendor提供的软件套件,要花钱买的,可以运行在不同的芯片平台。后面简称RTS(也有其他厂商叫RTE)。

  3. Target配置工具:PC端IDE和PLC端Runtimer之间的桥梁,通过编写一些配置文件来生成一个目标文件,目标文件含有PLC端的各种信息。

1.2 Codesys for PC

Codesys V2.3这个软件发布的比较早,和它的黄金搭档应该是WinXP或者Win7,如果装在Win10系统上可能会出现蓝屏,但这并不影响我们对它进行分析,如果安装的时候一路next,软件会被安装在如下路径:C:\Program Files (x86)\3S Software\CODESYS V2.3

c053cbc92d8220a9190c8be860dc028e.png

双击Codesys.exe打开软件会看到欢迎的提示:

307cba29aa1ffe49197010576fe3f503.png

点击新建一个项目会提示Target选择窗口,因为我这里啥也没装,所以没有任何的Target可以选择,点击OK进入POU设置页面

9d6ee3819e98741d23d6cf0f066380d0.png 7efe632b6a97b707440ef25a412f1c24.png

上图左边需要设置POU的类型:程序或者功能块。程序就相当于Keil,IAR里的程序,功能块相当于Keil,IAR里的LIB

右边选择POU的语言,Codesys支持6种语言:IL, LD, FBD, SFC, ST, CFC,这六种语言都follow IEC 61131-3的标准,这六种语言就不展开了,感兴趣的小伙伴自己百度,ST语言的语法类似于C语言,只要在编辑器输入;就相当于nop指令,一个空函数就完成了。

03d03e79c127dde2f1f0601ab8c8c7d0.png

不过这还不能编译通过,因为还没有设置Target,Codesys编译器还不知道PLC有多少资源,RAM多大,什么Core它都不知道,所以我们需要安装一个Target,这个一般都是由PLC厂商提供,有些厂商为了用户方便,将Codesys PC端进行了二次打包,这样安装好后就有默认的Target了,而且欢迎logo也可以替换为自己的,具体做法我只展示一次,亮点已经标注了

5f8d7dbb6106059af03cd34f52203945.png

3S自带了几个Target需要安装一下即可,双击InstallTarget.exe,然后选择Open目标文件的路径,安装需要的Target

206e7875f9c5b44a9e17d4e209957714.png

1.3 Codesys and Target

安装好Target后,我们可以来C:\Target目录查看相关的内容,里面最重要的两个文件.trg,.CFG,其中trg是通过工具生成的,PLC vendor会根据所选择的MCU平台来定义该文件,比如用什么处理器,编译器,N, M, I, Q, R各个区地址和大小。CFG文件定义了该PLC通道定义

NameDescription
*.trg定义Target相关参数设置
\PCBASEDIO\*.CFG定义PLC的通道参数

Trg文件对应如下配置:

fd77105f8aaf47687e5aba08f905921d.png

1f532254af18de1be2908cce43d088b6.png

CFG文件对应通道数据,可以添加子模块,比如CAN,CP5613等:

03c47704673e07333fff1ff2069b5c39.png

CFG文件内容示例:

4843e999778265936b7f2340d1eb2d70.png

1.4 编译成功

设定好Target后,就可以成功编译拉

f7d45c5bb5a1fe88241849c672482b27.png

今儿就写到这儿吧,下一篇专门讲讲RTS吧

未完待续

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值