查看: 3327|回复: 3

[分享] FreePLC系统简介

[复制链接]
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3868

    主题

    7472

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39223
    最后登录
    2025-7-18
    发表于 2023-3-1 12:36:57 | 显示全部楼层 |阅读模式
    FreePLC系统简介

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


    FreePLC是基于YAPLC(Beremiz)开发的一款开源PLC开发平台,与主线Beremiz区别:
         1、FreePLC上位机IDE使用Python2开发,而主线Beremiz使用Python3,故不能兼容主线的Beremiz
         2、FreePLC主要针对使用MCU的中小型PLC,而主线Beremiz主要针对SoftPLC(基于X86或MPU平台)
    FreePLC与YAPLC相比,有以下区别:


         1、FreePLC更换了MCU平台,目前支持NXP公司主流的几款MCU:Kinetis KV,KS系列,i.MX RT10xx系列和LPC55S69系列产品
         2、增添了在线下装相关的串口命令,全系支持IAP下载用户code,编译固件按照512字节大小对齐(由Flash的Page大小决定)
         3、增大了I, Q, M区的大小,I区支持1KB,Q区支持1KB,M区支持2KB,这里兼容了小RAM的MCU,针对RT10xx这种大RAM平台,可以通过修改宏的方式支持更大的分区
         4、删除了部分未使用的代码,比如RTC
         5、更新GCC编译器到10.3 2021.10版本,支持Cortex M33内核


    FreePLC的基本原理
    FreePLC是一款编译型的PLC,通过PLCopen支持的IEC61131-3编程语言进行用户程序的开发。并使用MatIEC,将用户编程的逻辑从ST语言转换为C语言,之后通过GCC将它编译为可执行的二进制代码下装到目标MCU平台,MCU平台需要运行RTS程序去加载运行用户程序,并给用户程序提供相应的接口函数。
    11.png
    FreePLC目录结构:
    FreePLC软件由以下几部分构成:


         1、Beremiz源码,用户一般不需要进行修改
         2、CanFestival-3:开源的CANOpen协议栈,目前尚未使用该功能
         3、CloudPLC:FreePLC的Target目录,根据不同的MCU平台可以在里面添加不同的Target
         4、FreePLC_Example:PLC的示例目录,里面有写好的一些参考工程,可以直接编译Run在不同的目标板上
         5、gnu-arm-embedded:GCC编译器,用户一般不需要进行修改
         6、matiec:将用户工程的ST文件转换为C文件的工具,用户一般不需要进行修改
         7、mingw:Windows支持GCC的runtimer
         8、python:已经打包好的python2,用户一般不需要进行修改
         9、RTS:该目录为MCU测得开源工程,用户可以根据自己的设计进行修改
         10、YaPySerial:python调用得串口工具,用户一般不需要进行修改
    12.png
    打开CloudPLC可以看到如下目录,具体如何制作Target,可以参考《如何制作Target》文件
    13.png
    打开RTS目录,可以看到下面4个不同的Target
    14.png
    其对应的硬件平台均为NXP官方开发板:


    1、FreePLCvKS22:使用MAPS-KS22F256(https://www.nxp.com/docs/en/user-guide/MAPSKS2XF256UG.pdf
    15.png
    2、FreePLCvKV4:使用TWR-KV4(https://www.nxp.com/design/devel ... odule:TWR-KV46F150M
    16.png
    3、FreePLCvLPC55xx:使用LPCXpresso55S69 Development Board(https://www.nxp.com/design/devel ... ment-board
    17.png
    4、FreePLCvRT10xx:使用i.MX RT1060 Evaluation Kit(
    https://www.nxp.com.cn/design/de ... kit:MIMXRT1060-EVKB
    18.png
    FreePLC待改进部分
    1、连接目标板时,仅通过md5检测用户工程的完整性,但并未验证目标板的类型,由于协议是相同的,故存在连接错误目标板的可能。后续会加入目标板ID的判断。
    2、尚未添加看门狗功能,添加看门狗功能时,需要判断看门狗的复位次数,在很短的一段时间内,如果连续多次的看门狗复位,则不再加载用户程序(有可能用户程序有死循环或者其他bug)
    3、目前只有Kinetis系列支持Reset源判断,因为PLC应用中,如果MCU意外出现热复位情况(除POR, PIN之外,例如看门狗,Software Reset等),加载用户程序时要求Q区不进行初始化以保证输出保持状态。i.MX RT和LPC系列暂时并未添加该功能
    4、无扰下装,FreePLC目前下载过程会停机升级,很多工业现场设备要求不停机升级,后续会在大RAM的MCU产品中将用户程序搬移到RAM中去实现无扰下装
    5、目前只有Kinetis KV系列实现了retain区的功能,这部分代码写的比较早,有点乱,后续会重新封装
    6、丰富PLC示例工程
    7、增加以太网连接及下装功能
    8、目前Kinetis KV系列目标中添加了OpenModbus协议,但并未做和RTS之间的接口,所以还不能挂接IO模块。后续将添加Mosbus配置接口去挂载支持Modbus的IO模块
    9、上位机IDE还有一些已知bug,不精通python,可能无法及时修复

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


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


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





    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-6-5 11:11
  • 签到天数: 563 天

    连续签到: 1 天

    [LV.9]以坛为家II

    3

    主题

    1346

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2841
    最后登录
    2025-7-3
    发表于 2023-3-1 14:20:34 | 显示全部楼层
    PLC 这种东西就应该被替代掉。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 1770 天

    连续签到: 3 天

    [LV.Master]伴坛终老

    17

    主题

    2888

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7725
    最后登录
    2025-7-18
    发表于 2023-3-4 14:00:49 | 显示全部楼层
    感谢分享
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-5-27 09:33
  • 签到天数: 323 天

    连续签到: 1 天

    [LV.8]以坛为家I

    5

    主题

    5766

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    11934
    最后登录
    2025-7-13
    发表于 2023-3-4 14:52:05 | 显示全部楼层
    谢谢分享,日天存货很多嘛
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 13:28 , Processed in 0.096359 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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