From 64cf4a779ef5c16c79bbbee27370169dc8d69499 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Mon, 06 May 2024 20:08:30 +0800
Subject: [PATCH] 继续开发
---
Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c | 80 +++++++++++++++++++++++++++++----------
1 files changed, 59 insertions(+), 21 deletions(-)
diff --git a/Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c b/Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c
index 06361b7..bf500c4 100644
--- a/Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c
+++ b/Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c
@@ -2,6 +2,12 @@
#include "rs485_data_analysis_pro.h"
#include "tim.h"
+/****�������˼·******************
+*RS485������Ʒ�Ϊ�ϵ硢���Ͷ�ȡָ��ȴ��������ݲ���������״̬�����裻����ʵ�ֵȴ���ʱ�жϺͶ���ض���
+*���modbus��ַ�ֵıȽϿ�������һ���Զ�ȡ���������RS485_MODBUS_STEP_STATUS_T��ȡ�������������һ��STEP�������ͺŵĵ�һ�����趼��STEP1��
+*���ɹ���ȡһ��ָ��֮���жϵ�ǰSTEP�Ƿ���ڵ������һ��STEP�������ʾȫ����ȡ��ɣ��������Ҫ����������һ��STEP�Ķ�ȡָ�
+*
+**********************************/
//__IO RS485_COM_STATUS_T rs485_com_status_g = RS485_COM_IDLE;
@@ -25,13 +31,15 @@
//���ڱ�����������1��һ�Σ�������ʱ�IJ�����1000ms�� ������ֵ��0-1000ms֮�䣬ʵ����ʱ��Ϊ1�����ң� ��ֵ��1000-2000ms֮�䣬ʵ����ʱ��Ϊ2������
switch (device_code){
- case SIZHUMODBUS1: return 1;
- case SIZHUMODBUS2: return 1;
- case SIZHUMODBUS3: return 1;
- case SIZHUMODBUSV2_0: return 1;
- case TIANXINCUSTOM: return 1;
- case TIANXINMODBUS: return 1;
- //��Ҫ����......
+ case SIZHUMODBUS1: rs485_com_ctrl_pata_g.modbus_last_status = MODBUS_STEP1; return 1;
+ case SIZHUMODBUS2: rs485_com_ctrl_pata_g.modbus_last_status = MODBUS_STEP1; return 1;
+ case SIZHUMODBUS3: rs485_com_ctrl_pata_g.modbus_last_status = MODBUS_STEP1;return 1;
+ case SIZHUMODBUSV2_0: rs485_com_ctrl_pata_g.modbus_last_status = MODBUS_STEP1;return 1;
+ case TIANXINCUSTOM: rs485_com_ctrl_pata_g.modbus_last_status = MODBUS_STEP1;return 1;
+ case TIANXINMODBUS: rs485_com_ctrl_pata_g.modbus_last_status = MODBUS_STEP1;return 1;
+
+ case EKMODBUS: rs485_com_ctrl_pata_g.modbus_last_status = MODBUS_STEP3;return 1;
+ //?��Ҫ����......
default:return 100;
}
@@ -43,13 +51,22 @@
switch (device_code){
- case SIZHUMODBUS1: sendModbusReadFrame(slaveAddress,501,50);break;
+ case SIZHUMODBUS1: break;
case SIZHUMODBUS2: break;
case SIZHUMODBUS3: break;
- case SIZHUMODBUSV2_0: break;
+ case SIZHUMODBUSV2_0: sendModbusReadFrame(slaveAddress,501,49);break;
case TIANXINCUSTOM: break;
case TIANXINMODBUS: break;
- //��Ҫ����......
+
+ case EKMODBUS:
+ if(rs485_com_ctrl_pata_g.modbus_step_status ==MODBUS_STEP1)
+ sendModbusReadFrame(slaveAddress,100,4);
+ else if(rs485_com_ctrl_pata_g.modbus_step_status ==MODBUS_STEP2)
+ sendModbusReadFrame(slaveAddress,306,4);
+ else if(rs485_com_ctrl_pata_g.modbus_step_status ==MODBUS_STEP3)
+ sendModbusReadFrame(slaveAddress,326,4);
+ break;
+ //?��Ҫ����......
default:break;
}
@@ -60,9 +77,9 @@
{
uint8_t delay_time_s;
- //IO�ڳ�ʼ��
+ //?IO�ڳ�ʼ��
- //����
+ //?����
//��ʱ���жϣ���ͬ�豸������ʱ���ȣ�Ҫ��Ҫ���ǹ������������ȡ�������
delay_time_s = rs485GetDelayTime(SIZHUMODBUSV2_0);
@@ -75,6 +92,8 @@
rs485_com_ctrl_pata_g.reread_wait_time_cnt = RS485_REREAD_WATI_TIME;
rs485_com_ctrl_pata_g.pwr_delay_time_out_cnt = delay_time_s;
+
+ rs485_com_ctrl_pata_g.modbus_step_status = MODBUS_STEP1;
return RS485_COM_SEND;
@@ -92,7 +111,8 @@
if(rs485_com_ctrl_pata_g.pwr_delay_time_out_cnt == 0) //��ʱ��0�Ϳ��Է��Ͷ�ȡָ��
{
- rs485SendReadData(SIZHUMODBUSV2_0,1); //�˴����Ҫ��
+ rs485SendReadData(SIZHUMODBUSV2_0,1); //?�˴����Ҫ��
+ rs485_com_ctrl_pata_g.reread_wait_time_cnt = RS485_REREAD_WATI_TIME; //���õȴ���Ӧʱ��
return RS485_COM_WAIT_ANSWER;
}
@@ -104,26 +124,40 @@
RS485_COM_STATUS_T rs485ComWaitAnswerHandle(void)
{
ErrorStatus read_ok = FAIL;
- //��鴮������
+ //?��鴮������
//��������,����ɹ���������read_ok = PASS
if(rs485_com_uart_data_g.recv_flag == SET)
{
rs485_com_uart_data_g.recv_flag =RESET;
+
+ read_ok = rs485ComDataAnalysis(rs485_com_uart_data_g,SIZHUMODBUSV2_0,1,rs485_com_ctrl_pata_g ) ;//?�豸���롢�ӻ���ַ���Ҫ��
}
if(read_ok==PASS)
{
- return RS485_COM_IDLE;
+
+ if(rs485_com_ctrl_pata_g.modbus_step_status >= rs485_com_ctrl_pata_g.modbus_last_status)
+ {
+ //?����ͨѶȫ���ɹ���������Ӧ�Ĵ���
+ //�رյ�Դ���رմ���
+
+ return RS485_COM_IDLE;
+ }
+ else
+ {
+ rs485_com_ctrl_pata_g.modbus_step_status ++;
+ return RS485_COM_SEND;
+ }
}
if((--rs485_com_ctrl_pata_g.reread_wait_time_cnt)==0)
{
if((--rs485_com_ctrl_pata_g.reread_num_cnt)==0)
{
- //��ʱ���ض��������꣬���س�ʱ����
+ //?��ʱ���ض��������꣬����ͨѶ������ʧ�ܸ��գ�������Ӧ�Ĵ���
//�رյ�Դ���رմ��ڣ�RS485ͨѶʧ��+1,
@@ -142,15 +176,17 @@
-void rs485ReadDataPro(void)
+void rs485ReadDataPro(FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p)
{
- if(1)//�ж�485�ɼ���ʶ
+ if((sys_fun_run_ctrl_p->rs485_ctrl_flag.start_flag ==SET)&&(sys_fun_run_ctrl_p->valve_ctrl_flag.running_flag == RESET)&&(sys_fun_run_ctrl_p->wrc_ctrl_flag.running_flag == RESET))//?�ж�485�ɼ���ʶ
{
+ sys_fun_run_ctrl_p->rs485_ctrl_flag.start_flag = RESET;
if(rs485_com_ctrl_pata_g.status == RS485_COM_IDLE)
{
rs485_com_ctrl_pata_g.status = RS485_COM_PWR_ON;
+ sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag = SET;
}
}
@@ -159,13 +195,15 @@
switch (rs485_com_ctrl_pata_g.status){
case RS485_COM_IDLE: break;
- case RS485_COM_PWR_ON: break;
- case RS485_COM_SEND: break;
- case RS485_COM_WAIT_ANSWER: break;
+ case RS485_COM_PWR_ON: rs485_com_ctrl_pata_g.status = rs485ComPwrOnHandle();break;
+ case RS485_COM_SEND: rs485_com_ctrl_pata_g.status = rs485ComSendHandle();break;
+ case RS485_COM_WAIT_ANSWER: rs485_com_ctrl_pata_g.status = rs485ComWaitAnswerHandle();break;
default:;
}
+ if(rs485_com_ctrl_pata_g.status == RS485_COM_IDLE)
+ sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag = RESET;
}
\ No newline at end of file
--
Gitblit v1.9.3