...
POST No. 2407190
Can't read shutdown (892) - DXL Pro
2018-12-07 16:39:53 jmunnae

Hi,


We're using the Pros (H series) to build a robot arm and we develop our program using ROS. There are a few times that the motor stops working and we got error message "[RxPacketError] Hardware error occurred. Check the error at Control Table (Hardware Error Status)!" But when we try to read at the Shutdown (48) to find out what went wrong, we can't read this address. It always return "[RxPacketError] Hardware error occurred. Check the error at Control Table (Hardware Error Status)!" back to us. And because the motor was shuted down so we can't not do anything other than hardware reboot (turn off power and turn power back on). And once we do that, all errors are cleared so we never know what happened. According to the manual should we be able to read the detectable situation?


Could you please suggest what can we do? It seems that the motor randomly stop and it starts to happen more often?


Thank you

2018-12-07 16:39:53
jmunnae
2018-12-07 17:10:20 Will Son

Hello,


Normally, you should be able to read the error status from Hardware Error Status(892).

Could you show me the instruction you used to read the control table address 892?


Also, please let me know below information

  • Dynamixel SDK version 
  • Controller / Interface hardwares
  • Dynamixel settings(EEPROM area of the control table)


Thank you.

2018-12-07 17:10:20
willson
2018-12-24 13:17:56 Jomkwun Munnae

Hi @Will Son,

 

If the motor doesn't shut down, we can read Hardware Error Status (892). Please see the attached file 'question_01.png', we can read status of joint 0-4 but when the joint 5 is shut down, we cannot ping to that joint. Please see 'question_05.png' for our read function.  When this error happened, we cannot communicate anything to the motor until we turn off and turn back on the electricity. Then we can read the status again as shown in 'question_2.png'. 

 

The 'question_03.png' and 'question_04.png' are the functions we ping and write to the motor respectively.  

 

We're using Dynamixel SDK version  3.6.2 (2018-07-17) and ROS Kinetic 16.04 LTS. 

We only use connector 485 to USB directly connect to a PC running on Ubantu 16.04 LTS.

Please see the following for our motor setting.

 

MODEL_NUMBER : 54024

MODEL_INFORMATION : 0

FIRMWARE_VERSION : 25

ID : 1

BAUD_RATE : 5

RETURN_DELAY_TIME : 250

OPERATING_MODE : 1

HOMING_OFFSET : 924

MOVING_THRESHOLD : 50

TEMPERATURE_LIMIT : 80

MAX_VOLTAGE_LIMIT : 400

MIN_VOLTAGE_LIMIT : 150

ACCELERATION_LIMIT : 255

TORQUE_LIMIT : 900

VELOCITY_LIMIT : 17000

MAX_POSITION_LIMIT : 146394

MIN_POSITION_LIMIT : -146394

SHUTDOWN : 58

 

MODEL_NUMBER : 54024

MODEL_INFORMATION : 0

FIRMWARE_VERSION : 25

ID : 2

BAUD_RATE : 5

RETURN_DELAY_TIME : 250

OPERATING_MODE : 1

HOMING_OFFSET : -23052

MOVING_THRESHOLD : 50

TEMPERATURE_LIMIT : 80

MAX_VOLTAGE_LIMIT : 400

MIN_VOLTAGE_LIMIT : 150

ACCELERATION_LIMIT : 255

TORQUE_LIMIT : 900

VELOCITY_LIMIT : 17000

MAX_POSITION_LIMIT : 87069

MIN_POSITION_LIMIT : -89230

SHUTDOWN : 58

 

MODEL_NUMBER : 53768

MODEL_INFORMATION : 0

FIRMWARE_VERSION : 25

ID : 3

BAUD_RATE : 5

RETURN_DELAY_TIME : 250

OPERATING_MODE : 1

HOMING_OFFSET : -22289

MOVING_THRESHOLD : 50

TEMPERATURE_LIMIT : 80

MAX_VOLTAGE_LIMIT : 400

MIN_VOLTAGE_LIMIT : 150

ACCELERATION_LIMIT : 255

TORQUE_LIMIT : 900

VELOCITY_LIMIT : 17000

MAX_POSITION_LIMIT : 101994

MIN_POSITION_LIMIT : -271874

SHUTDOWN : 58

 

MODEL_NUMBER : 53768

MODEL_INFORMATION : 0

FIRMWARE_VERSION : 25

ID : 4

BAUD_RATE : 5

RETURN_DELAY_TIME : 250

OPERATING_MODE : 1

HOMING_OFFSET : -220

MOVING_THRESHOLD : 50

TEMPERATURE_LIMIT : 80

MAX_VOLTAGE_LIMIT : 400

MIN_VOLTAGE_LIMIT : 150

ACCELERATION_LIMIT : 255

TORQUE_LIMIT : 900

VELOCITY_LIMIT : 17000

MAX_POSITION_LIMIT : 501923

MIN_POSITION_LIMIT : -160336

SHUTDOWN : 58

 

MODEL_NUMBER : 51200

MODEL_INFORMATION : 0

FIRMWARE_VERSION : 25

ID : 5

BAUD_RATE : 5

RETURN_DELAY_TIME : 250

OPERATING_MODE : 1

HOMING_OFFSET : -76555

MOVING_THRESHOLD : 50

TEMPERATURE_LIMIT : 80

MAX_VOLTAGE_LIMIT : 400

MIN_VOLTAGE_LIMIT : 150

ACCELERATION_LIMIT : 255

TORQUE_LIMIT : 900

VELOCITY_LIMIT : 10300

MAX_POSITION_LIMIT : 21754

MIN_POSITION_LIMIT : -176343

SHUTDOWN : 58

 

MODEL_NUMBER : 51200

MODEL_INFORMATION : 0

FIRMWARE_VERSION : 25

ID : 6

BAUD_RATE : 5

RETURN_DELAY_TIME : 250

OPERATING_MODE : 1

HOMING_OFFSET : -224

MOVING_THRESHOLD : 50

TEMPERATURE_LIMIT : 80

MAX_VOLTAGE_LIMIT : 400

MIN_VOLTAGE_LIMIT : 150

ACCELERATION_LIMIT : 255

TORQUE_LIMIT : 900

VELOCITY_LIMIT : 10300

MAX_POSITION_LIMIT : 151875

MIN_POSITION_LIMIT : -151875

SHUTDOWN : 58

 

Thank you.

 







2018-12-24 13:17:56
jmunnae
2019-01-15 06:57:03 Will Son

Hi,


When the Error status is returned from a specific Dynamixel, I can't find the code where the Hardware Error Status(892) is read.

The error message is generated by DynamixelSDK so that user can notice there's an error to check.

Could you show me how you read the 1 Byte data from the address 892 and the output of the operation?

Also, let me know the led status of the troublesome Dynamixel.

Thank you very much.

2019-01-15 06:57:03
willson
2019-01-21 15:32:16 Jomkwun Munnae


Hi @Willson,


First of all, we think we found the solution of our problems that the motors used to randomly shut down (but we still can't read the error message) so we would like to share with you just in case anybody encounter similar problem to ours. We guest that our problems is due to the input voltage error, with long story short, we separate the power to the motors and power to the signals (which are powered through adaptor 485 to USB). After we do this, we don't have motor randomly shutdown (so far).


But we still want to come back to the issue of reading the error message, so to answer your question I will simplify the step and the command we used as follow


First, we ping to each joint using the following command

int dxl_comm_result =  packetHandler->ping(portHndler, num_joint+1, &dxl_model_number, &dxl_error);

 

then the joint that is shut down for some reason will give the error

[error] [1545016755653818606];[Rxpacketerror] Hardware error occured, Check the error at control table (Hardware error status)!

 

so we read the address 48 and 892 respectively as the following command

read(P_SHUTDOWN);

read(P_HARDWARE_ERROR_STATUS) 

 

The 'read' function is the function we wrote ourselves and I attached it below

 ...


 dxl_comm_result=pcketHandler->read1ByteTxRx(portHandler, id, addr, &val2, &dxl_error);

...


If the joint operates normally, we will get the default value of (address 48) = 58 and (address 892) = 0 but if the joint is shut down we can't access to read these value of that joint.  


About the LED status, to be honest, we didn't notice it when the shutdown happens and because now we don't get that shutdown problem yet so I can't really answer this question. Sorry about that.


It would be nice if we can read the error so we know what the true cause of the shutdown. We're really appreciated all your help.


Thank you very much. 





 




2019-01-21 15:32:16
jmunnae
Reply
웹에디터 시작 웹 에디터 끝