写点什么

台达 AS228T_CanOpen_VFD_X

用户头像
林建
关注
发布于: 12 小时前
台达AS228T_CanOpen_VFD_X

前言

之前想写这个功能块的,不过又又又一直拖更到现在。今天早上有点时间,就把这个功能块框架也给写了。常规选用 AS228T 这款 PLC 控制台达自己家的变频器。可以采用 Canopen 的通讯方式,而 Canopen 总线通讯方式又分为专属模式和 DS301 模式。这个功能块主要针对的是后者。因为后者可以带的数量超过前者。

正文

默认的 CANOPEN 的通讯地址分配

RxPDO 在地址 D25032 开始 100 个 Word

TxPDO 在地址 D24032 开始 100 个 Word

变频器默认的 PDO 常规所需映射如下:

(*变频器功能块 //RxPDO D25032 Uint  控制字 D25033 Int   设置速度 D25034 Udint 加速时间 D25036 Udint 减速时间 //TxPDO D24032 Uint 状态字 D24033 Uint 错误码 D24034 Int  反馈速度 *)
复制代码

功能块变量

Class	      Identifiers	   Address	Type	 Initial  Value	 CommentVAR_IN_OUT	IO_iCMD		              INT		VAR_INPUT   In_wAddressE		        WORD		VAR_INPUT	  In_iSetSpeed		        INT		VAR_INPUT	  In_UdiAccTime		        DWORD		VAR_INPUT	  In_UdiDecTime		        DWORD		VAR_OUTPUT	Out_UiErrorID		        WORD		VAR_OUTPUT	Out_iActSpeed		        INT		VAR_OUTPUT	Out_UiStatus		        WORD	
复制代码

功能块程序

E0        := In_wAddressE ;//设置 D25033@E0 := In_iSetSpeed ;D25034@E0 := In_UdiAccTime ;D25036@E0 := In_UdiDecTime ; //反馈 Out_UiStatus  := D24032@E0 ;Out_UiErrorID := D24033@E0 ;Out_iActSpeed := D24034@E0 ;
CASE IO_iCMD OF 1: D25032@E0 := 127 ; //启动 9: D25032@E0 := 139 ; //复位 IO_iCMD := 90 ; 90: IF (Out_UiStatus.3 = FALSE) THEN IO_iCMD := 0 ; END_IF;ELSE D25032@E0 := 126 ; //停止 END_CASE;
复制代码

主程序调用

希望后期 AS 架构下能把功能块也进行数组形式去声明,那就更加方便了。

现在暂时只能是功能块的输入输出引脚的变量用数组去声明。还不够完善。

暂时还是只能每一个功能块去单独声明。


这个功能块对 C2000Plus\CH2000\MS300\MH300 都能适用。

结尾

善用 E 变址去实现功能块内部的绝对地址的复用。


发布于: 12 小时前阅读数: 93
用户头像

林建

关注

还未添加个人签名 2021.06.19 加入

还未添加个人简介

评论

发布
暂无评论
台达AS228T_CanOpen_VFD_X