一、前言
上一篇文章所提到的EPOS官方VC代码里面设置的电机驱动方式是Profile Position模式,只使用一个模式的话显然在有些场合达不到想要的控制效果,所以根据官方代码修改出了Profile Velocity模式,即将原来根据位置信息驱动电机改为根据速度信息驱动电机。
修改后的程序并没有对上位机界面进行控件上的修改,只改了一些静态文本的显示信息,新界面如图1所示。所以只说一下主要修改的地方。
二、主要修改
1、OpenDevice()函数
修改后的核心代码如图2所示。
(1)改用VCS_GetVelocityProfile(m_KeyHandle, m_usNodeId, &m_ulProfileAcceleration, &m_ulProfileDeceleration, &m_ulErrorCode)函数,用来获得设定的加速和减速的加速度值。
(2)VCS_SetOperationMode()的形参改成了OMD_PROFILE_VELOCITY_MODE,表示设定驱动模式为速度模式。
(3)改用VCS_SetVelocityProfile(m_KeyHandle, m_usNodeId, 1000, 1000, &m_ulErrorCode)函数,设定加速和减速的加速度值均为1000。
(4)改用VCS_GetVelocityIs(m_KeyHandle, m_usNodeId, &m_lStartVelocity, &m_ulErrorCode)函数,获得此时的速度值,即为显示在界面上的初始速度值。
2、MOVE按钮点击事件
(1)改用VCS_GetVelocityIs(m_KeyHandle, m_usNodeId, &m_lStartVelocity, &m_ulErrorCode)函数:获取电机此时的速度值,作为初始速度,获取失败函数返回0
(2)改用VCS_MoveWithVelocity(m_KeyHandle, m_usNodeId, m_lTargetVelocity, &m_ulErrorCode)函数:驱动电机达到设定转速,驱动失败返回0
3、HALT按钮点击事件
改用VCS_HaltVelocityMovement(m_KeyHandle, m_usNodeId, &m_ulErrorCode)函数
4、增加ChangeDrection按钮,用来改变转动方向
代码很简单,如图4所示。