Codesys——输出PWM波形(FB块)-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

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

Codesys——输出PWM波形(FB块)

[复制链接]

该用户从未签到

发表于 2023-11-22 16:06:51 | 显示全部楼层 |阅读模式
以下内容纯属个人理解,如有错误欢迎指正。
本篇主要讲述如何创建并调用FB块,并书写出占空比可调的FB块,并插入trace进行监控输出波形。
首先创建一个FB块。右键application-添加对象-程序组织单元,创建并打开。
Codesys——输出PWM波形(FB块)-1.png


创建FB之后,编写程序。首先定义输入接口(启动、停止、占空比),输出(out)。占空比就是高电平占整个周期的比例。在这个程序里面,没有定义周期的输入接口,固定周期为1S,根本占空比计算高电平和低电平的时间。并用两个定时器进行编写。
Codesys——输出PWM波形(FB块)-2.png


定义完成之后,书写主函数,本程序原理类似于振荡电路。代码如下。
  1. /********************变量声明************************/
  2. FUNCTION_BLOCK POU
  3. VAR_INPUT
  4.         START: BOOL;
  5.         STOP: BOOL;
  6.         DUTY: REAL;
  7. END_VAR
  8. VAR_OUTPUT
  9.         OUT:BOOL;
  10. END_VAR
  11. VAR
  12.         START_UP: BOOL;
  13.         STOP_UP: BOOL;
  14.         TON0_PT: TIME;
  15.         TON1_PT: TIME;
  16.         TON0_ET: TIME;
  17.         TON1_ET: TIME;
  18.         TON0_Q: BOOL;
  19.         TON1_Q: BOOL;
  20.         //TON0_Q_NOT: BOOL;
  21.         PLUS_UP: DINT;
  22.         PLUS_DOWN: DINT;
  23.         R_TRIG_0: R_TRIG;
  24.         R_TRIG_1: R_TRIG;
  25.         TON_0: TON;
  26.         TON_1: TON;
  27. END_VAR
  28. /********************程序书写************************/
  29. //R_TRIG_0(CLK:=START , Q=>START_UP );
  30. //R_TRIG_1(CLK:=STOP , Q=>STOP_UP );
  31. START_UP := START_UP AND (NOT STOP_UP);
  32. PLUS_UP := REAL_TO_DINT(1000*DUTY);
  33. PLUS_DOWN := 1000 - PLUS_UP;
  34. TON0_PT := DINT_TO_TIME(PLUS_UP);
  35. TON1_PT := DINT_TO_TIME(PLUS_DOWN);
  36. IF START THEN
  37.        
  38.         TON_0(IN:=NOT TON1_Q , PT:=TON0_PT , Q=>TON0_Q , ET=>TON0_ET );
  39.     TON_1(IN:= TON0_Q , PT:=TON1_PT , Q=>TON1_Q , ET=>TON1_ET );
  40.        
  41.         OUT :=TON1_Q OR (NOT TON0_Q);
  42. END_IF
复制代码
实例化。FB块编写完成之后,在PLC_PRG函数中对FB块进行实例化。然后在代码区调用PWM_FB这个FB块就可以了,可以进行多次调用设置不同的占空比。
Codesys——输出PWM波形(FB块)-3.png

  1. /********************变量声明************************/
  2. PROGRAM PLC_PRG
  3. VAR
  4.        
  5.         PWM_FB: POU;
  6.         DUTY0: REAL := 0.2;
  7.         START0: BOOL;
  8.         STOP0: BOOL;
  9.         OUT0: BOOL;
  10.        
  11. END_VAR
  12. /********************程序书写************************/
  13. PWM_FB(
  14.         START := START0,
  15.         STOP := STOP0,
  16.         DUTY := DUTY0,
  17.         OUT => OUT0
  18.         );
  19.        
复制代码
添加trace。右键application-添加对象-跟踪。
Codesys——输出PWM波形(FB块)-4.png


配置所选跟踪。跟踪配置中需要跟踪的变量所在的任务。
Codesys——输出PWM波形(FB块)-5.png


Codesys——输出PWM波形(FB块)-6.png


添加需要跟踪的变量。单击省略号选择需要跟踪的变量。
Codesys——输出PWM波形(FB块)-7.png


Codesys——输出PWM波形(FB块)-8.png


在仿真运行的时候需要下载跟踪。右键-下载跟踪。
占空比为0.5的方波信号。
Codesys——输出PWM波形(FB块)-9.png


占空比为0.2的方波信号。
Codesys——输出PWM波形(FB块)-10.png


谢谢大家~
+10
不赞一个?
打赏鼓励一下!
回复

使用道具 举报

  • TA的每日心情
    难过
    2024-9-28 20:00
  • 签到天数: 53 天

    [LV.5]常住居民I

    发表于 2024-3-17 20:19:00 | 显示全部楼层
    好东西学习学习
    +10
    不赞一个?
    打赏鼓励一下!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

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

    GMT+8, 2026-11-10 14:09 , Processed in 0.170505 second(s), 58 queries .

    酷德网

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

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