MATLAB Codesys,Matlab程序导入Codesys PLC教程-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 3036|回复: 0

MATLAB Codesys,Matlab程序导入Codesys PLC教程

[复制链接]
  • TA的每日心情
    慵懒
    2017-11-9 20:49
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2023-4-12 22:57:02 | 显示全部楼层 |阅读模式
    在Matlab中仿真好的程序可以直接导入到PLC中,省去我们重新编程的时间,本文就通过一个简单的PID控制的例子来演示这一过程。
    1 Matlab中的操作
    在Matlab(2019b版本)中点击Simulink图标就能看到Simulink的启动页面,在搜索框中输入PID即可找到软件自带的例子,如下图所示。我们就以此为例进行讲解。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-1.png


    这个例子比较简单,只有一个PID控制器和一个二阶阻尼系统作为被控对象,如下图左。我们可以添加一个Scope示波器来查看控制效果,如下图右,可见被控系统的输出实现了对阶跃参考信号的跟踪。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-2.png


    MATLAB Codesys,Matlab程序导入Codesys PLC教程-3.png


    为了将仿真好的PID控制器导入到PLC中,下面我们对其进行配置。首先配置系统的仿真参数,打开系统参数配置页面(按Ctrl+E打开Configuration Parameters),在Solver selection项中将仿真类型Type改为Fixed-step。然后打开PID控制器模块的参数配置页面,将Time-domain改为离散时间,如下图所示。你也可以根据自己的经验修改PID的比例微分等增益,也可以选择是否对微分项进行滤波并设置滤波系数,在其它选项卡中还可以设置输出限幅、抗积分饱和等选项。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-4.png


    配置好以后,我们回到仿真页面,在Controller模块上右键,选择PLC Code—>Enable “Treat as atomic unit”,把“Treat as atomic unit”勾选上,如下图所示。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-5.png


    MATLAB Codesys,Matlab程序导入Codesys PLC教程-6.png


    再次在模块上右键选择PLC Code—>Options,选择你的PLC平台,这里我使用的是Codesys,我的Codesys版本是V3.5 SP13 Patch 1,因此我选择相应的选项,而且在IDE path中输入Codesys的安装位置,输出文件夹也可以设置(我就用默认的了C:\Program Files\Polyspace\R2019b\bin\plcsrc)。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-7.png


    然后还是在Controller模块上右键选择PLC Code—>Generate code for subsystem,成功生成代码后会跳出以下页面。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-8.png


    打开输出文件夹可以看到生成的文件有三个,其中st文件和xml文件是我们感兴趣的。st文件中是PID控制程序的代码,我们可以用记事本打开看看里面的内容。除去繁琐的注释,真正的算法代码很简单,就是计算比例项、积分项、微分项,然后三项相加得到最终的控制量Control。我们还能看到程序中对微分项采取了一阶低通滤波,这样可以去除高频噪声。还可以看到整个PID控制程序是作为一个Function Block程序块的形式存在,这方便了我们在正式项目中调用它。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-9.png


    2 Codesys中的操作
    xml文件可以导入到Codesys中。xml是一种标准的存储格式,各大主流PLC厂家都支持这种格式。打开Codesys的IDE编程环境,然后新建一个“Standard Project”工程。在“工程”菜单中选择导入xml文件,如下图所示。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-10.png


    在POU栏中可以找到导入后的程序,从此以后你就可以在实际工程项目中调用这个PID函数块了,它的名字是默认的Controller,输入是误差量Error,类型是LREAL,输出是控制量Control。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-11.png


    3 导出程序的正确性验证
    也许你会怀疑,导出的程序是否与我们在仿真中的效果一样呢?Matlab更牛逼的是还支持将自己仿真的数据与Codesys中运行的数据进行对比从而验证导出程序的正确性,操作的步骤如下。在PLC Code—>Options选项页中将Generate testbench for subsystem勾选上,如下图。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-12.png


    再次导入到Codesys中后,我们会发现多了一个TestBench程序块,它里面带着仿真数据,如下图所示。注意,在TestBench的函数定义区中有这样一行代码ABS(out_Control - cycle_Control) > (1.0E-5 * ABS(cycle_Control)),显然这是在比较out_Control和cycle_Control两个值的差别,前者是Codesys中调用函数块计算得到的控制量,后者是Matlab在仿真过程中保存下来的控制量。如果二者误差小于一定阈值(程序中是0.00001× \times×扫描周期)则说明导出的程序块与仿真程序是一致的。下面第二幅图就是实际运行的结果,testVerify判断二者之差是否小于阈值,图中它为True,这说明导出的程序与仿真是一样的。由于TestBench是个程序块(FB),所以我们要先实例化,然后调用即可。
    MATLAB Codesys,Matlab程序导入Codesys PLC教程-13.png


    MATLAB Codesys,Matlab程序导入Codesys PLC教程-14.png


    +10
    不赞一个?
    打赏鼓励一下!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2026-11-9 03:46 , Processed in 0.409163 second(s), 49 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

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