comit_job ver new modbus

This commit is contained in:
2025-11-07 16:22:00 +03:00
parent 461a206fe7
commit 81d95635f9
17 changed files with 564 additions and 2616 deletions

View File

@@ -40,7 +40,7 @@
#include "def.h"
#include <stdio.h>
#include "rs_message.h"
#include "modbus.h"
#include "eeprom_emul.h"
#include "stdio.h"
@@ -68,7 +68,7 @@ uint8_t ralay_5v_on_var=0;
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
float temperature;
extern uint8_t roms[MAX_DEVICES][8];
uint8_t roms[MAX_DEVICES][8];
Flags_TypeDef flag;
//extern uint8_t devices_found ;
uint8_t _debug_init=0;
@@ -143,9 +143,13 @@ int main(void)
/* USER CODE BEGIN 2 */
led_blink(GPIOC,13,rest_iter,reset_blink_delay);
MODBUS_FirstInit();
MODBUS_FirstInit(&hmodbus1, &mb_huart, &mb_htim);
MODBUS_Config(&hmodbus1, MODBUS_DEVICE_ID, MODBUS_TIMEOUT, MODBUS_MODE_SLAVE);
// Запуск приема Modbus
MODBUS_SlaveStart(&hmodbus1, NULL);
uint8_t uart_byte = 0;
RS_Receive_IT(&hmodbus1, &MODBUS_MSG);
Dallas_BusFirstInit(&htim1);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
@@ -162,7 +166,7 @@ int main(void)
if( hmodbus1.pMessagePtr->Func_Code&ERR_VALUES_START)
if( hmodbus1.pMessagePtr->FuncCode&FC_ERR_VALUES_START)
{
static int pause_Alarm_led;
while (1)
@@ -221,32 +225,8 @@ int main(void)
{
GPIOA->ODR&=~(1<<10);
}
//// if (sens[i].temperature<sens[i].set_temp-sens[i].hyst)
////
//// {
////
//// MB_DATA.Coils.coils[0].all|=1<<i;
////
//// }
////
//// else
////
//// if (sens[i].temperature>sens[i].set_temp+sens[i].hyst)
//// {
////
//// MB_DATA.Coils.coils[0].all&=~(1<<i);
////
//// }
//// if(GPIOB11_valve)
//// {
//// GPIOB->ODR|=1<<11;
//// }
//// else
//// {
//// GPIOB->ODR&=~(1<<11);
////
//// }
value_control();
}
@@ -435,39 +415,74 @@ FuncStat Field_modbus(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag)
};
FuncStat value_control(void )
{
for(int i=0;i<10;i++)
{
if (sens[i].temperature<sens[i].set_temp-sens[i].hyst)
{
MB_DATA.Coils.coils[0].all|=1<<i;
}
else
if (sens[i].temperature>sens[i].set_temp+sens[i].hyst)
{
MB_DATA.Coils.coils[0].all&=~(1<<i);
}
if(GPIOB11_valve)
{
GPIOB->ODR|=1<<11;
}
else
{
GPIOB->ODR&=~(1<<11);
}
}
return FuncOK;
}
uint16_t handle_valves(TEMP_TypeDef* temp_sense[MAX_SENSE] )
{
if (temp_sense[0]->state==STATE_OPEN_VALVE)
{
GPIOC->ODR|=1<<14;
}
else
if (temp_sense[0]->state==STATE_CLOSE_VALVE)
{
GPIOC->ODR&=~(1<<14);
}
return 1;
}
//uint16_t handle_valves(TEMP_TypeDef* tmp_sense )
//{
//
// if (temp_sense[0].state==STATE_OPEN_VALVE)
// {
// GPIOC->ODR|=1<<14;
// }
// else
// if (temp_sense[0].state==STATE_CLOSE_VALVE)
// {
// GPIOC->ODR&=~(1<<14);
// }
//
// return 1;
//
//}
//void init_setpoint _all_T_sense(void)
//{
// //ds_search_devices();
// for(int i=0;i<hdallas.onewire->RomCnt;i++)
//{
// temp_sense[i].id[0]=roms[i][0]<<0|roms[i][1]<<8|roms[i][2]<<16|roms[i][3]<<24;
// temp_sense[i].id[1]=roms[i][4]<<0|roms[i][5]<<8|roms[i][6]<<16|roms[i][7]<<24;
// temp_sense[i].count =i+1;
// temp_sense[i].location=1;
// temp_sense[i].t_open=22;
// temp_sense[i].t_close=18;
// temp_sense[i].status_T_sense=1;
//}
//}
void init_setpoint_all_T_sense(TEMP_TypeDef* temp_sense[MAX_SENSE])
{
//ds_search_devices();
for(int i=0;i<hdallas.onewire->RomCnt;i++)
{
temp_sense[i]->id[0]=roms[i][0]<<0|roms[i][1]<<8|roms[i][2]<<16|roms[i][3]<<24;
temp_sense[i]->id[1]=roms[i][4]<<0|roms[i][5]<<8|roms[i][6]<<16|roms[i][7]<<24;
temp_sense[i]->count =i+1;
temp_sense[i]->location=1;
temp_sense[i]->t_open=22;
temp_sense[i]->t_close=18;
temp_sense[i]->status_T_sense=1;
}
}
/* USER CODE END 4 */
/**

View File

@@ -22,7 +22,7 @@
#include "stm32f1xx_it.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "rs_message.h"
#include "modbus.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -281,11 +281,12 @@ void TIM1_CC_IRQHandler(void)
void TIM2_IRQHandler(void)
{
/* USER CODE BEGIN TIM2_IRQn 0 */
RS_TIM_Handler(&hmodbus1);
return;
/* USER CODE END TIM2_IRQn 0 */
HAL_TIM_IRQHandler(&htim2);
/* USER CODE BEGIN TIM2_IRQn 1 */
// RS_TIM_Handler(&hmodbus1);
//RS_TIM_Handler(&hmodbus1);
/* USER CODE END TIM2_IRQn 1 */
}
@@ -313,15 +314,12 @@ static uint8_t first_in=1;
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE))
{
__HAL_UART_CLEAR_IDLEFLAG(&huart1);
RS_TIM_Handler(&hmodbus1);
}
RS_UART_Handler(&hmodbus1);
return;
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
RS_UART_Handler(&hmodbus1);
//RS_UART_Handler(&hmodbus1);
/* USER CODE END USART1_IRQn 1 */

View File

@@ -83,7 +83,7 @@ void MX_TIM2_Init(void)
/* USER CODE END TIM2_Init 1 */
htim2.Instance = TIM2;
htim2.Init.Prescaler = 7199;
htim2.Init.Prescaler = 72-1;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 65535;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;