查看: 672|回复: 2
收起左侧

[用户资料分享] 分享下自己用的Easy&H5U轴控功能块

Jimzjy 2023-7-16 16:02:09 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x

在ST环境下, 原生的轴控功能块的语义化会比较弱,  对于梯形图下可能这个问题不大, 但如果用ST的话, 我自己用的话觉得就会用的比较变扭.
我的处理方法是将轴控功能块的对象都用同一个功能块(AxisCtrl)整合起来, 并赋予这个总轴控功能块控制方法.
相当于把真正的轴对象包起来, 用包住它的AxisCtrl来处理所有操作, 这样的好处是可以在AxisCtrl中处理很多的重复操作并整合功能, 对轴的操作都是这个轴对象本身的方法, 避免掉产生各种外部变量, 让代码更容易读懂, 也方便之后的修改, 只要修改方法函数本身不需要改动其它外部的代码.
理想状态是这样(伪代码):

\\ 实例化轴控对象
AXCtrl(...)

\\ 使能
AXCtrl.power(...)

\\ 绝对移动
AXCtrl.moveAbsolute(...)

\\ 停止
AXCtrl.stop(...)

但是

这个只能在完整的ST下才能做到, 目前Easy系列的LiteST下功能块没有自己的属性 方法, 这两个区别有点像C和C with class.
本来AxisCtrl有自己的变量 自己的方法, 自己的方法可以访问自己的变量, 但是现在没有啦! 也就是说需要一个作用域覆盖轴控对象和控制方法的变量去存储轴的信息.
所以它就变成了这个样(伪代码):

\\ 实例化轴控对象
AXCtrl(state := AXState, ......)

\\ 使能
AC_Power(state := AXState, ......)

\\ 绝对移动
AC_MoveAbsolute(state := AXState, ......)

\\ 停止
AC_Stop(state := AXState, ......)

多了一个 State 变量, 用来存储轴的信息.

当然这个也只是我个人习惯的设计方法, 只是分享出来给大家参考下.

EasyTest.zip

417.13 KB, 下载次数: 19

售价: 1  [记录]





上一篇:h5u使用实点ec4-3200模块 走ethercat
下一篇:请问有H3u的选型手册吗

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

苍原 2023-7-17 09:32:58 | 显示全部楼层
东西好不好不知道,价格挺实惠
回复 送花

使用道具 举报

zhchuaftsc 2023-7-17 09:41:58 | 显示全部楼层
把轴控指令封装在一个功能块里面,切换不同的品牌之后,这个功能块就不能做到通用。我的方法是把轴的过程控制全部封装在一个功能块里面,在外部把轴的过程输出赋给轴控指令,这样即使切换品牌也不影响。 image.png [img][/img]
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部