如何使用CANoe12.0,实现利用panel控制电机的转速和方向

1前期工作

1.1基础工作:

(1)使用控制板实现对电机调速和调相

(2)配置控制板进行CAN通信实现收发信息,以及收到信息后执行的功能

(3)配置上位机(canoe)

1.2相关外设:

(1):控制板

(2):电机

(3):任意下载器(推荐Jlink)

(4):CANoe硬件设备

(5):电源

1.3预期结果:

实现利用CANoe 上位机对电机进行多档位调速并且能够调节方向

2功能实现结果演示:

利用canoe上位机对电机进行调速调相

3开始教学实现:

3.1控制器驱动电机调速 

        我们可以做这样的实验,以24V直流电机为例,在电机两端接上24V的直流电源,电机会以满速转动,如果将24V电压降至2/3即16V,那么电机就会以满速的2/3转速运转。由此可知,想要调节电机的转速,只需要控制电机两端的电压即可。 而PWM调速相当于对输入电压进行了控制,从而控制电机的调速。

3.2控制板和CANoe之间进行通讯

  (1)配置控制板端能够接收指定ID的报文

  (2)canoe上位机中发送指定ID的报文

  (3)CANoe硬件也是必不可少的;就如同用串口通讯需要有串口线一样。

     如果不会用canoe建议先去bilibili看:会开车的鸟哥的:canoe从入门到精通的视频;

     如果不懂can通讯也可以去看看相关资料

3.3制作canoe上位机

这里重点介绍canoe上位机

因为细讲如何去建立比较麻烦,如果不会请看教学视频,我已将自己创建的上位机置顶,我的上位机只是一个给辅助的作用,如果你想用我的上位机去控制电机,那么你要注意以下的点:

(1)报文ID一定要和控制板中程序接收程序的ID对应起来

  (2)  将CAPL程序中的相关ID 也进行修改

 3.3.1 CAPL中的代码:

speed:

dir: 

3.3.2 keil中的主要代码
{
	if(gVar_CanInfoAppRx.MOTOR_DRIVE_SWITCH==0x0)
	{Spindle_WriteAPI_PWMDrive_L(0x0000);}
	else if(gVar_CanInfoAppRx.MOTOR_DRIVE_SWITCH==0x1)
	{Spindle_WriteAPI_PWMDrive_L(0x1000);}
	else if(gVar_CanInfoAppRx.MOTOR_DRIVE_SWITCH==0x2)
	{Spindle_WriteAPI_PWMDrive_L(0x2000);}
	else if(gVar_CanInfoAppRx.MOTOR_DRIVE_SWITCH==0x3)
	{Spindle_WriteAPI_PWMDrive_L(0x3000);}
	else if(gVar_CanInfoAppRx.MOTOR_DRIVE_SWITCH==0x4)
	{Spindle_WriteAPI_PWMDrive_L(0x4000);}
	else if(gVar_CanInfoAppRx.MOTOR_DRIVE_SWITCH==0x5)
	{Spindle_WriteAPI_PWMDrive_L(0x5000);}
	else if(gVar_CanInfoAppRx.MOTOR_DRIVE_SWITCH==0x6)
	{Spindle_WriteAPI_PWMDrive_L(0x6000);}
	else 
	{Spindle_WriteAPI_PWMDrive_L(0x7000);}
	
	
	if(gVar_CanInfoAppRx.MOTOR_DIR==0)
{		Relay_WriterAPI_ON(1);
		Relay_WriterAPI_ON(2);
		Relay_WriterAPI_ON(3);
		Relay_WriterAPI_OFF(4);
		Relay_WriterAPI_ON(5);
		Relay_WriterAPI_OFF(6);
		Relay_WriterAPI_OFF(7);
		Relay_WriterAPI_ON(8);}
else if(gVar_CanInfoAppRx.MOTOR_DIR==1)
{
	Relay_WriterAPI_ON(1);
		Relay_WriterAPI_ON(2);
		Relay_WriterAPI_OFF(3);
		Relay_WriterAPI_ON(4);
		Relay_WriterAPI_ON(5);
		Relay_WriterAPI_OFF(6);
		Relay_WriterAPI_ON(7);
		Relay_WriterAPI_OFF(8);	}
	else
	{}

这里面主要是两个变量:gVar_CanInfoAppRx.MOTOR_DRIVE_SWITCH、gVar_CanInfoAppRx.MOTOR_DIR 当收到外部信号发生改变时这两个变量的值也会随之改变。电机的方向我这边是通过继电器控制的。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值