最近在做一台设备,用的雷赛总线控制方式,第一次用,碰到一些坑,记录下。以前我用的雷赛控制卡采用的控制一直是脉冲式。
1.复位方式不同。
//仅贴出不同之处
//脉冲式 复位时的最小速度可以为0 高速 低速给0 和1 就行
if ( 0 != dmc_set_profile( nCardID, nAxisID, dMinVel, dMaxVel ,dAccTime,dDecTime, dStopVel) )
{
return false ;
}
//回零模式 2 二次回零 EZ_count 0 锁存指令位置 1 锁存编码器位置
if (0 != dmc_set_homemode(nCardID, nAxisID, nTmpDir, HIGH_SPEED, 12, 1))
{
return false ;
}
//总线方式 这里的坑在于 有些轴最小速度不能设置为0,不然复位时候,检查运动状态时候,会一直显示运动中
nmc_set_home_profile(nCardID,nAxisID,nOriDir,dMinVel,dMaxVel,dAccTime,dDecTime,0); //回零模式外部可设置 参数要从雷赛软件上看 说明书上没有
if ( 0 != nmc_home_move( nCardID, nAxisID ) )
{
return false ;
}
复位完成后,总线方式的清零都要带unit的函数。比如dmc_set_position 要改成 dmc_set_position_unit
2.IO模块
脉冲方式可以采用获取卡的IO函数,比如 dmc_read_inport 所有数据读上来后,进行移位得到每一个IO的信息。
但总线方式不行,必须每个IO口都要读一次,只能用 dmc_read_inbit 读单个口。当然,这里IO也是从0开始,但是不是从0-15 而是可以一直往上加。
3.总线控制卡初始化失败时候,需通过冷、热复位进行复位卡操作,复位完成后,需等待一定的时间,再次初始化卡操作。 另外总线方式清除报警,可以用nmc_clear_errcode 给卡号,轴号即可(说明书上没写)。