全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 工业控制 >

FreePLC的基本原理 FreePLC与YAPLC对比分析

时间:2023-03-04 16:14

人气:

作者:admin

标签: mcu  以太网  pyt  plc  看门狗 

导读:FreePLC的基本原理 FreePLC与YAPLC对比分析-FreePLC是基于YAPLC(Beremiz)开发的一款开源PLC开发平台,与主线Beremiz区别。...

FreePLC系统简介

FreePLC的继承关系

又好久没有更新了,之前想了好几个题目,有些也写了一半,但是自打阳了之后就变成懒羊羊了,这两天恢复的不错,把之前的坑给大家填上,大概花了两周业余时间,把FreePLC移植到i.MX RT和LPC55系列产品中,今天先更新下概述部分。

FreePLC是基于YAPLC(Beremiz)开发的一款开源PLC开发平台,与主线Beremiz区别:

FreePLC上位机IDE使用Python2开发,而主线Beremiz使用Python3,故不能兼容主线的Beremiz

FreePLC主要针对使用MCU的中小型PLC,而主线Beremiz主要针对SoftPLC(基于X86或MPU平台)

FreePLC与YAPLC相比,有以下区别:

FreePLC更换了MCU平台,目前支持NXP公司主流的几款MCU:Kinetis KV,KS系列,i.MX RT10xx系列和LPC55S69系列产品

增添了在线下装相关的串口命令,全系支持IAP下载用户code,编译固件按照512字节大小对齐(由Flash的Page大小决定)

增大了I, Q, M区的大小,I区支持1KB,Q区支持1KB,M区支持2KB,这里兼容了小RAM的MCU,针对RT10xx这种大RAM平台,可以通过修改宏的方式支持更大的分区

删除了部分未使用的代码,比如RTC

更新GCC编译器到10.3 2021.10版本,支持Cortex M33内核

FreePLC的基本原理

FreePLC是一款编译型的PLC,通过PLCopen支持的IEC61131-3编程语言进行用户程序的开发。并使用MatIEC,将用户编程的逻辑从ST语言转换为C语言,之后通过GCC将它编译为可执行的二进制代码下装到目标MCU平台,MCU平台需要运行RTS程序去加载运行用户程序,并给用户程序提供相应的接口函数。

a55d9236-ba53-11ed-bfe3-dac502259ad0.png

FreePLC目录结构:

FreePLC软件由以下几部分构成:

Beremiz源码,用户一般不需要进行修改

CanFestival-3:开源的CANOpen协议栈,目前尚未使用该功能

CloudPLC:FreePLC的Target目录,根据不同的MCU平台可以在里面添加不同的Target

FreePLC_Example:PLC的示例目录,里面有写好的一些参考工程,可以直接编译Run在不同的目标板上

gnu-arm-embedded:GCC编译器,用户一般不需要进行修改

matiec:将用户工程的ST文件转换为C文件的工具,用户一般不需要进行修改

mingw:Windows支持GCC的runtimer

python:已经打包好的python2,用户一般不需要进行修改

RTS:该目录为MCU测得开源工程,用户可以根据自己的设计进行修改

YaPySerial:python调用得串口工具,用户一般不需要进行修改

a579e06c-ba53-11ed-bfe3-dac502259ad0.png

打开CloudPLC可以看到如下目录,具体如何制作Target,可以参考《如何制作Target》文件

a5915fe4-ba53-11ed-bfe3-dac502259ad0.png

打开RTS目录,可以看到下面4个不同的Target

a5a612f4-ba53-11ed-bfe3-dac502259ad0.png

其对应的硬件平台均为NXP官方开发板:

FreePLCvKS22:使用MAPS-KS22F256(https://www.nxp.com/docs/en/user-guide/MAPSKS2XF256UG.pdf)

a5c2e6cc-ba53-11ed-bfe3-dac502259ad0.png

FreePLCvKV4:使用TWR-KV4(https://www.nxp.com/design/development-boards/tower-development-boards/mcu-and-processor-modules/kinetis-modules/kinetis-kv4x-family-tower-system-module:TWR-KV46F150M)

a5e73ba8-ba53-11ed-bfe3-dac502259ad0.png

FreePLCvLPC55xx:使用LPCXpresso55S69 Development Board(https://www.nxp.com/design/development-boards/lpcxpresso-boards/lpcxpresso55s69-development-board:LPC55S69-EVK)

a60e6426-ba53-11ed-bfe3-dac502259ad0.png

FreePLCvRT10xx:使用i.MX RT1060 Evaluation Kit(https://www.nxp.com.cn/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1060-evaluation-kit:MIMXRT1060-EVKB)

a637cab4-ba53-11ed-bfe3-dac502259ad0.png

FreePLC待改进部分

连接目标板时,仅通过md5检测用户工程的完整性,但并未验证目标板的类型,由于协议是相同的,故存在连接错误目标板的可能。后续会加入目标板ID的判断。

尚未添加看门狗功能,添加看门狗功能时,需要判断看门狗的复位次数,在很短的一段时间内,如果连续多次的看门狗复位,则不再加载用户程序(有可能用户程序有死循环或者其他bug)

目前只有Kinetis系列支持Reset源判断,因为PLC应用中,如果MCU意外出现热复位情况(除POR, PIN之外,例如看门狗,Software Reset等),加载用户程序时要求Q区不进行初始化以保证输出保持状态。i.MX RT和LPC系列暂时并未添加该功能

无扰下装,FreePLC目前下载过程会停机升级,很多工业现场设备要求不停机升级,后续会在大RAM的MCU产品中将用户程序搬移到RAM中去实现无扰下装

目前只有Kinetis KV系列实现了retain区的功能,这部分代码写的比较早,有点乱,后续会重新封装

丰富PLC示例工程

增加以太网连接及下装功能

目前Kinetis KV系列目标中添加了OpenModbus协议,但并未做和RTS之间的接口,所以还不能挂接IO模块。后续将添加Mosbus配置接口去挂载支持Modbus的IO模块

上位机IDE还有一些已知bug,不精通python,可能无法及时修复

写在最后

本开源项目不承诺及时更新并修复bug,不支持任何商业项目,纯属个人学习,目的在于分享PLC技术的底层知识,有兴趣的朋友可以一起交流。目前很多主流厂商都在使用Codesys平台,该平台确实非常优秀,功能非常丰富,价格也很美丽,但总归受制于人,从最底层了解PLC的机制有助于开发属于自己的产品。

这几天应该就能收到最新的MCX了,想想就很激动哦。

晕,正准备上传库,突然发现Gitee的密钥找不到了,等找回了就上传。

编辑:黄飞

 

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信