SimpleFoc代码学习5, 自定义命令

SimpleFOC库旨在提供无刷电机和步进电机的控制,虽然通信协议不是其主要目标,但提供了Commander接口。当用户发送如'MVD0.76'的命令时,Commander会根据ID将命令分发到相应的处理函数,例如设置D环数值。若发送'OE',则电机回调函数处理启用/禁用状态的get或set请求。用户可以通过定义和注册自定义函数来扩展Commander功能。示例中介绍了在ESP32开发板上利用Commander进行自定义操作。
摘要由CSDN通过智能技术生成

SimpleFOC 库的主要目标是提供一个简单且有效率的无刷电机和步进电机控制方法。所以通信协议方面的实现其实超出了本库的目标范畴。但是却给了Commander 接口,使用类似G代码的通信协议。

要使用CAN总线怎么办?(QAQ)
可以使用TTL转CAN模块.

当用户发送命令时会发生什么?

commander收到字符串 MVD0.76 时:

它首先检查命令ID,发现是’M’,则将剩余字符串发送给电机回调函数处理。电机的回调函数进一步检查命令ID是什么,发现是’V’,则将剩余字符串发送到速度PID回调函数。然后速度PID回调函数扫描命令ID并发现它是’D’,因此会设置D环数值。

如果Commander收到 OE 时:
它找到的第一个ID是’O’,比如是motor,则将剩余的字符串发送给此命令的回调函数(本例中为电机的回调函数)。然后,电机的回调函数发现是命令“E”,并获知这个命令是要获取还是设置其所指示的状态(已启用/已禁用)。它检查剩余的字符值是否为空,如果为空则意味着用户发送的是get请求。

完整指令
https://docs.simplefoc.com/docs_chinese/commander_motor

用户自定义命令

自定义函数需要两步
1.定义要运行的函数
2.注册到simplefoc的commander里

void myFunc(char*){
   
  // 要执行的命令函数
}

Commander commander = Commander(...)
void setup(){
   
...
   //注册
  commander.add('A',myFunc,"my functionality");
...
}
void loop(){
   
  ..
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值