void FaulHaberApi::resetBus()
{
	VSCAN_MSG msg = buildMessageData(0x00,0x00,2,0x01,0x0000,0x00,0x00000000);
	writeWaitReadMessage(&msg);
	writeWaitReadMessage(&msg);
	writeWaitReadMessage(&msg);
	sleep(5);
}
void FaulHaberApi::setPosition(int id, int position)
{
	qDebug()<<"set position"<<id<<position;
	msg = buildFaulhaberCommand(id,0xB4,position);//set position
	int status = writeWaitReadMessage(&msg);
	
	msg = buildFaulhaberCommand(id,0x3C, 0);//initiate motion
	status += writeWaitReadMessage(&msg);
	qDebug()<<"set position result"<<status;
}
int FaulHaberApi::setVelocity(int id, int vel)
{
	msg = buildMessageData(WriteObjectId,id,8,0x23,0x6084,0x00,vel);
	int status = writeWaitReadMessage(&msg);
//qDebug()<<"set velocity"<<status;
	return status;
}
void FaulHaberApi::Init_Node(int id)
{
	//tres tramas iniciales

	msg = buildMessageData(CanOpenId,id,2,0x01,0x0000,0x00,0x00000000);
	writeWaitReadMessage(&msg);
	writeWaitReadMessage(&msg);
	writeWaitReadMessage(&msg);
	writeWaitReadMessage(&msg);
	writeWaitReadMessage(&msg);
	writeWaitReadMessage(&msg);

	int result = 0;
	//switch on disable
	msg = buildMessageData(WriteObjectId,id,8,0x2B,0x6040,0x00,0x00000000);
	result = writeWaitReadMessage(&msg);

	if(id == 3)
		sleep(1);

	//ready to switch on
	msg = buildMessageData(WriteObjectId,id,8,0x2B,0x6040,0x00,0x00000006);
	result += writeWaitReadMessage(&msg);

	//switch on voltage
	msg = buildMessageData(WriteObjectId,id,8,0x2B,0x6040,0x00,0x00000007);
	result += writeWaitReadMessage(&msg);

	//operation enabled
	msg = buildMessageData(WriteObjectId,id,8,0x2B,0x6040,0x00,0x0000000F);
	result += writeWaitReadMessage(&msg);


	/*	if (result != 4)
		qFatal("error setting up node");*/

	//2B => write??
	//2F => read??

}
//sets value of motor internal encoder to value
void FaulHaberApi::setInternalEncoderValue(int id, int value)
{
    unsigned char D3,D2,D1,D0;

    D0 = (value & 0xFF000000 )/0X1000000;
    D1 = (value & 0xFF0000 )/0X10000;
    D2 = (value & 0xFF00 )/0X100;
    D3 = (value & 0xFF );
	
   // Envio_Trama(Handle, (0x300+ID),5,0xB8,D3,D2,D1,D0,0x00,0x00,0x00); // LOAD ABSOLUTE
	
	msg = buildRawMessageData(0x300+id,5,0xB8,D3,D2,D1,D0,0x00,0x00,0x00);
	writeWaitReadMessage(&msg);
}
int FaulHaberApi::getPositionExternalEncoder(int id)
{

	//qDebug()<<"read position external encoder"<<id;
	msg = buildMessageData(0x300,id,8,0xb2,0x0005,0x00,0x00000000);
	int a=writeWaitReadMessage(&msg);
	//printf("output  %#x, %#x, %#x, %#x, %#x, %#x, %#x, %#x, %#x, %#x \n ", msg.Id,msg.Size, msg.Data[0], msg.Data[1], msg.Data[2], msg.Data[3], msg.Data[4], msg.Data[5],	 msg.Data[6], msg.Data[7], msg.Timestamp );
	
	if(a == 1)
		return readIntegerResponse(msg);
	else
		return -1;
	
}
int FaulHaberApi::getPosition(int id)
{

	//qDebug()<<"read position"<<id;
	//msg = buildMessageData(WriteObjectId,id,8,0x40,0x0000,0x00,0x00000000);
    msg = buildMessageData(0x300,id,8,0x40,0x0000,0x00,0x00000000);
	int a=writeWaitReadMessage(&msg);
	
	
	if(a == 1)
		return readIntegerResponse(msg);
	else
	{
		printf("output  %lx, %x, %x, %x, %x, %x, %x, %x, %x, %x %d\n ", msg.Id, msg.Size, msg.Data[0], msg.Data[1], msg.Data[2], msg.Data[3], msg.Data[4], msg.Data[5],	 msg.Data[6], msg.Data[7], msg.Timestamp);
		return -1;
	}
}
int FaulHaberApi::disablePower(int id)
{
	msg = buildMessageData(WriteObjectId,id,8,0x2B,0x3004, 0x00, 0x00000001);//no bien construida
	int status = writeWaitReadMessage(&msg);
	return status;
}
void FaulHaberApi::enableCommandMode(int id)
{
	msg = buildMessageData(WriteObjectId,id,8,0x2F,0x6060,0x00,0x000000FF);
	/*int status = */writeWaitReadMessage(&msg);
//	qDebug()<<"enable mode result "<<status;
}
void FaulHaberApi::setDeceleration(int id, int deceleration)
{
	msg = buildMessageData(WriteObjectId,id,8,0x23,0x6084,0x00,deceleration);	
	/*int status = */writeWaitReadMessage(&msg);
//	qDebug()<<"set deceleration"<<status;
}
void FaulHaberApi::setZero(int id)
{
	msg = buildFaulhaberCommand(id,0xB8,0);//set position
	/*int status =*/ writeWaitReadMessage(&msg);
//	qDebug()<<"set home position result "<<status;
}
void FaulHaberApi::goHome(int id)
{
	msg = buildFaulhaberCommand(id,0x2F,0); //go end track
	/*int status = */writeWaitReadMessage(&msg);
//	qDebug()<<"go home result"<<status;
}
Exemple #13
0
void FaulHaberApi::enableControlPositionMode(int id)
{
	msg = buildMessageData(WriteObjectId,id,8,0x2F,0x6060,0x00,0x00000001);
	int status = writeWaitReadMessage(&msg);
//	qDebug()<<"enable mode result:"<<status;
}
Exemple #14
0
void FaulHaberApi::setAceleration(int id, int aceleration)
{
	msg = buildMessageData(WriteObjectId,id,8,0x23,0x6083,0x00,aceleration);	
	int status = writeWaitReadMessage(&msg);
//	qDebug()<<"set aceleration"<<status;
}