0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何编写一个简单的电机控制函数块?

汽车电子技术 来源:方正智芯 作者:北岛李工 2023-02-07 14:00 次阅读

今天这篇文章我们来编写一个简单的电机控制函数块,并将其下载到倍福CX5020控制器进行测试,以熟悉TwinCAT3环境下基本的编程步骤。

pYYBAGPh58OAWrkVAACOeO5z8Tg574.png

打开TwinCAT3(TC3),按照上一篇文章《倍福PLC学习:扫描EtherCAT I/O子站并测试模块》介绍的内容新建工程项目并扫描EtherCAT子站,项目名称为“motorControl”。

在左侧项目树的“PLC”节点下右键单击,选择“Add new item(添加新内容)”,添加新的PLC项目,命名为“CPU1”,如下图所示:

poYBAGPh59eAJgdhAADX2L42cYs314.png

添加完成后,“CPU1 Project”中会有POUs、GVLs、DUTs等文件夹。其中,POU是程序组织单元,GVL是全局变量列表,UDT是用户自定义变量。我们计划编写一个电机控制的函数块,因此在“POUs”文件夹右键单击,在弹出的对话框中选择“添加(Add)”→“POUs”,如下图所示:

poYBAGPh5_GAPXBXAABLT3SFNHU347.png

在弹出的“添加POU”对话框中,选择功能块(Function Block),命名为motorControl,编程语言选择ST语言,如下图所示:

pYYBAGPh6AWAOY6wAAAzgmLO7s0161.png

在函数块motorControl中声明变量,其中:

VAR_INPUT是输入变量,包含电机启动 、停止信号

VAR_OUTPUT是输出变量,包含输出信号(线圈);

VAR_STAT是静态变量,包含沿信号检测变量;

如下图所示(注意变量不区分大小写):

pYYBAGPh6BmAZqd1AABcK7PU8UY327.png

编写代码如下图所示:

pYYBAGPh6C-ALj1UAAF44ySBoxQ271.png

为了分配参数,我们新建全局变量列表:GVL1,并添加变量如下图所示:

poYBAGPh6EqAH467AAAwiE6YHSo288.png

接下来要在主函数(MAIN)中调用电机控制函数块。首先在变量列表中声明motorControl的实例,命名为“motorControl1”,编写控制代码如下图所示:

pYYBAGPh6GSAC5zSAAA4XMvGipc252.png

单击工具栏“Build”→“Build CPU1”编译PLC程序。

单击工具栏“PLC”→“Download”下载PLC程序。

单击工具栏“PLC”→“Login”登录到在线状态,或者工具栏的快捷按钮,如下图所示:

pYYBAGPh6HyAJIkpAAA4nhUy4os625.png

pYYBAGPh6I-AVCjfAAAcg97_x_w251.png

如果PLC处于未运行状态,单击“Start(启动)”使其运行。本例程为了给出电机启动信号,我们将全局变量“startBtn1”的“Prepared Value”设置为“TRUE”,并单击工具栏“Write Values”按钮将该值写入到PLC中,如下图所示:

pYYBAGPh6KSACH2OAAEJwk3qohY015.png

此时可以看到主程序MAIN中电机输出信号为TRUE,如下图所示:

pYYBAGPh6LWAHvDRAADqSVnlNmo676.png

如果想让函数输出对应到实际的输出模块,在“CPU 1 instance”→“PLCTask Outputs”→“GVL1.coilKM”,将其对应到“Linked to”指定的输出模块即可。

pYYBAGPh6MqAfCAPAAGq3J8EhTw290.png

好了,关于倍福PLC编写函数块及简单调试就先介绍到这里。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15223

    浏览量

    171190
  • 电机控制
    +关注

    关注

    3465

    文章

    1704

    浏览量

    264431
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61309
  • cx5020
    +关注

    关注

    0

    文章

    2

    浏览量

    1665
收藏 人收藏

    评论

    相关推荐

    编写延时函数简单方法

    非常的准确但是相当的麻烦而且容易搞错,我这里介绍简单的方法.可以验证你的延时函数这里用
    发表于 11-25 09:21

    labview编写简单虚拟函数发生器

    labview编写简单虚拟函数发生器
    发表于 05-04 22:25

    一块AT89C2051+一块4066和三按键的两相四线电机控制

    本帖最后由 dbsjacky 于 2015-11-16 16:43 编辑 各位大大,能用一块AT89C2051+三4066和三按键分别控制三台两相四线
    发表于 11-15 02:36

    如何在Matlab编写S函数 设定值是梯形函数的输入

    如何在Matlab编写S函数设定值是把图2的constant代替成图1的函数拜托了~~
    发表于 05-08 16:37

    简单的角度初步认识电机控制

    `本文没有算法,没有公式,更没有深奥的理论和推论,而是从简单的角度去理解电机的驱动控制,适合那些希望在
    发表于 12-19 10:16

    我的电机直流有刷电机,配有AQMD2410NS的驱动器,求推荐一块控制器或控制

    我的电机直流有刷电机,配有AQMD2410NS的驱动器,求推荐一块控制器或
    发表于 09-18 12:01

    怎样在Ubuntu系统下用C语言编写简单的hello word程序

    嵌入式练习在Ubuntu系统下用C语言编写简单的输出 hello word的程序,并编译有、运行之;#includeint main(){printf("hello
    发表于 10-27 10:15

    介绍使用SCL语言编写电机控制函数

      电机控制在实际项目中经常使用,般的电机控制程序都是具有启动、保持、停止的功能。  今天这
    发表于 03-09 17:02

    如何为Serial.printf() 编写简单的包装函数

    决定为 Serial.printf() 编写简单的包装函数。这个函数看起来像这样: 代码:全
    发表于 05-04 07:24

    简单的c编写的旋进数组

    简单的c编写的旋进数组。
    发表于 03-11 13:39 0次下载

    编写滤波器函数

    本文档内容介绍了基于编写滤波器函数,及源代码,供参考
    发表于 04-13 15:51 16次下载

    就增量式PID的函数进行编写

    首先,就增量式PID的函数进行编写
    的头像 发表于 06-17 14:27 1536次阅读
    就增量式PID的<b class='flag-5'>函数</b>进行<b class='flag-5'>编写</b>

    倍福PLC学习:编写函数块及简单调试

    今天这篇文章我们来编写一个简单电机控制函数块,并将其下载到倍福CX5020控制器进行测试,以熟
    的头像 发表于 11-09 09:34 3653次阅读

    电机控制方式以及程序的编写

    本文给大家介绍一下各种电机控制方式以及程序的编写。 1、起保停:I0.0启动I0.1停止Q0.0输出(控制电机启停接触器),I0.0
    的头像 发表于 02-13 14:40 5627次阅读
    <b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>方式以及程序的<b class='flag-5'>编写</b>

    PWM输出控制电机

    PWM 输出控制电机电机系列 一、PWM 输出控制电机 1 、相关 IO 介绍 2 、编写 PWM 输出库
    发表于 05-06 11:03 2次下载
    PWM输出<b class='flag-5'>控制</b><b class='flag-5'>电机</b>