You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
3.5 KiB
142 lines
3.5 KiB
|
11 months ago
|
/*
|
||
|
|
* DMK_485_Motor.c
|
||
|
|
*
|
||
|
|
* Created on: Jan 21, 2025
|
||
|
|
* Author: akeguo
|
||
|
|
*/
|
||
|
|
//DMKE Motor
|
||
|
|
#include "msp_DMKE_485_Motor.h"
|
||
|
|
|
||
|
|
DMKE_struct_define *DMKE_Motors[3];
|
||
|
|
|
||
|
|
struct UARTHandler *DMAKE_UART_Handler;
|
||
|
|
DispacherController *DMAKE_dispacherController;
|
||
|
|
|
||
|
|
char Is_First_Run = 0;
|
||
|
|
|
||
|
|
void decode_DMAKE(uint8_t *buffer, uint16_t length);
|
||
|
|
void DMAKE_Set();
|
||
|
|
void DMAKE_intialize(struct UARTHandler *Handler)
|
||
|
|
{
|
||
|
|
//TL720D_UART_Handler->UART_Decode = NULL;
|
||
|
|
DMAKE_UART_Handler = Handler;
|
||
|
|
DMAKE_UART_Handler->Wait_time = 30;
|
||
|
|
DMAKE_UART_Handler->UART_Decode = decode_DMAKE;
|
||
|
|
|
||
|
|
|
||
|
|
HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,"DMAKE_1",0,DMAKE_1);
|
||
|
|
HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,"DMAKE_2",0,DMAKE_2);
|
||
|
|
HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,"DMAKE_3",0,DMAKE_3);
|
||
|
|
|
||
|
|
|
||
|
|
DMAKE_dispacherController = Handler->dispacherController;
|
||
|
|
DMAKE_dispacherController->DispacherCallTime = 20;
|
||
|
|
|
||
|
|
DMAKE_dispacherController->Add_Dispatcher_List(DMAKE_dispacherController,
|
||
|
|
DMAKE_Set);
|
||
|
|
|
||
|
|
//log_info("TL720D_intialize");
|
||
|
|
LOGFF(DL_ERROR, "TL720D_intialize");
|
||
|
|
}
|
||
|
|
void decode_DMAKE(uint8_t *buffer, uint16_t length)
|
||
|
|
{
|
||
|
|
/* CRC 校验 */
|
||
|
|
uint16_t crc_check = ((buffer[length - 1] << 8) | buffer[length - 2]);
|
||
|
|
/* CRC 校验正确 */
|
||
|
|
if (crc_check == MB_CRC16(buffer, length - 2))
|
||
|
|
{
|
||
|
|
|
||
|
|
if (buffer[0] == 1)
|
||
|
|
{
|
||
|
|
HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,
|
||
|
|
"DMAKE_1", 1);
|
||
|
|
}
|
||
|
|
else if (buffer[0] == 2)
|
||
|
|
{
|
||
|
|
HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,
|
||
|
|
"DMAKE_2", 1);
|
||
|
|
}
|
||
|
|
else if (buffer[0] == 3)
|
||
|
|
{
|
||
|
|
HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,
|
||
|
|
"DMAKE_3", 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
uint8_t DMAKE_UART_Tx_Buf[200];
|
||
|
|
uint8_t DMAKE_UART_TxCount = 0;
|
||
|
|
void DMAKE_Set()
|
||
|
|
{
|
||
|
|
if (Is_First_Run == 0)
|
||
|
|
{
|
||
|
|
|
||
|
|
for (int i = 0; i < 3; i++)
|
||
|
|
{
|
||
|
|
//clear faults
|
||
|
|
MB_WriteHoldingReg(&DMAKE_UART_Tx_Buf, &DMAKE_UART_TxCount, (uint8_t)(DMKE_Motors[i]->Slave_ID),
|
||
|
|
0x0131, 0x08);
|
||
|
|
|
||
|
|
DMAKE_UART_Handler->AddSendList(DMAKE_UART_Handler,
|
||
|
|
DMAKE_UART_Tx_Buf, DMAKE_UART_TxCount, 80, NULL);
|
||
|
|
////set paramters
|
||
|
|
MB_WriteHoldingReg(&DMAKE_UART_Tx_Buf, &DMAKE_UART_TxCount, (uint8_t)(DMKE_Motors[i]->Slave_ID),
|
||
|
|
0x0131, 0x23);
|
||
|
|
|
||
|
|
DMAKE_UART_Handler->AddSendList(DMAKE_UART_Handler,
|
||
|
|
DMAKE_UART_Tx_Buf, DMAKE_UART_TxCount, 80, NULL);
|
||
|
|
}
|
||
|
|
|
||
|
|
Is_First_Run = 1;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
for (int i = 0; i < 3; i++)
|
||
|
|
{
|
||
|
|
//set speed
|
||
|
|
MB_WriteHoldingReg(&DMAKE_UART_Tx_Buf, &DMAKE_UART_TxCount, (uint8_t)(DMKE_Motors[i]->Slave_ID),
|
||
|
|
0x06a, DMKE_Motors[i]->TargetSpeedRpm);
|
||
|
|
|
||
|
|
DMAKE_UART_Handler->AddSendList(DMAKE_UART_Handler,
|
||
|
|
DMAKE_UART_Tx_Buf, DMAKE_UART_TxCount, 40, NULL);
|
||
|
|
//set direction
|
||
|
|
}
|
||
|
|
|
||
|
|
for (int i = 0; i < 3; i++)
|
||
|
|
{
|
||
|
|
|
||
|
|
//set direction
|
||
|
|
|
||
|
|
if (DMKE_Motors[i]->Command == -1)
|
||
|
|
{
|
||
|
|
//正转
|
||
|
|
MB_WriteHoldingReg(&DMAKE_UART_Tx_Buf, &DMAKE_UART_TxCount, (uint8_t)(DMKE_Motors[i]->Slave_ID),
|
||
|
|
0x033, 0x01);
|
||
|
|
|
||
|
|
}
|
||
|
|
else if (DMKE_Motors[i]->Command == 0)
|
||
|
|
{
|
||
|
|
//stop
|
||
|
|
MB_WriteHoldingReg(&DMAKE_UART_Tx_Buf, &DMAKE_UART_TxCount, (uint8_t)(DMKE_Motors[i]->Slave_ID),
|
||
|
|
0x033, 0);
|
||
|
|
|
||
|
|
}
|
||
|
|
else if (DMKE_Motors[i]->Command == 1)
|
||
|
|
{
|
||
|
|
//reverse
|
||
|
|
MB_WriteHoldingReg(&DMAKE_UART_Tx_Buf, &DMAKE_UART_TxCount, (uint8_t)(DMKE_Motors[i]->Slave_ID),
|
||
|
|
0x033, 0x14);
|
||
|
|
}
|
||
|
|
DMAKE_UART_Handler->AddSendList(DMAKE_UART_Handler,
|
||
|
|
DMAKE_UART_Tx_Buf, DMAKE_UART_TxCount, 40, NULL);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|