diff --git a/UPP/AllLibs/Modbus b/UPP/AllLibs/Modbus
index f03ffd5..c4c8024 160000
--- a/UPP/AllLibs/Modbus
+++ b/UPP/AllLibs/Modbus
@@ -1 +1 @@
-Subproject commit f03ffd5bfcd1a1296ae4d02dfa8902fd15fe8400
+Subproject commit c4c80245129815bbe4a722024247f1b54f23823a
diff --git a/UPP/Core/Configs/modbus_config.h b/UPP/Core/Configs/modbus_config.h
index 806e78d..7d9945e 100644
--- a/UPP/Core/Configs/modbus_config.h
+++ b/UPP/Core/Configs/modbus_config.h
@@ -36,7 +36,6 @@
#define MODBUS_MODEL_NAME ""
#define MODBUS_USER_APPLICATION_NAME ""
-
// Периферия (опционально)
//#define mb_huart huart1 ///< Удобный дефайн для модбасовского uart
//#define mb_htim htim3 ///< Удобный дефайн для модбасовского таймера
@@ -51,6 +50,7 @@
#define MODBUS_ENABLE_INPUTS ///< Включить обработку входных регистров
#define MODBUS_ENABLE_DEVICE_IDENTIFICATIONS ///< Включить обработку идентификаторы устройства
#define MODBUS_ENABLE_DIAGNOSTICS ///< Включить обработку диагностики модбас
+#define MODBUS_ENABLE_OSCIL ///< Включить осциллограф Modbus
//#define MODBUS_PROTOCOL_TCP ///< Включить TCP-протокол, иначе - RTU
diff --git a/UPP/Core/Configs/modbus_data.c b/UPP/Core/Configs/modbus_data.c
index d016027..af2be68 100644
--- a/UPP/Core/Configs/modbus_data.c
+++ b/UPP/Core/Configs/modbus_data.c
@@ -95,11 +95,21 @@ MB_ExceptionTypeDef MB_DefineRegistersAddress(uint16_t **pRegs, uint16_t Addr, u
local_addr = Addr - R_HOLDING_PRVT_ADDR;
*pRegs = MB_Set_Register_Ptr(&MB_INTERNAL.param, local_addr); // указатель на выбранный по Addr регистр
}
+#ifdef MODBUS_ENABLE_OSCIL
+ else if(MB_Check_Address_For_Arr(Addr, Qnt, R_HOLDING_OSCIL_ADDR, R_HOLDING_OSCIL_QNT) == ET_NO_ERRORS)
+ {
+ local_addr = Addr - R_HOLDING_OSCIL_ADDR;
+ *pRegs = MB_Set_Register_Ptr(&MB_INTERNAL.oscil , local_addr); // указатель на выбранный по Addr регистр
+ }
+#endif
// if address doesnt match any array - return illegal data address response
else
{
return ET_ILLEGAL_DATA_ADDRESS;
}
+
+
+
}
else if(RegisterType == RegisterType_Input)
{
diff --git a/UPP/Core/Configs/modbus_data.h b/UPP/Core/Configs/modbus_data.h
index c76596e..a22f58f 100644
--- a/UPP/Core/Configs/modbus_data.h
+++ b/UPP/Core/Configs/modbus_data.h
@@ -51,6 +51,7 @@
#ifndef _MODBUS_DATA_H_
#define _MODBUS_DATA_H_
+#include "modbus_oscil.h"
#include "upp_defs.h"
#include "upp_params.h"
#include "stdint.h"
@@ -143,12 +144,6 @@ typedef struct // tester modbus data
extern MB_DataStructureTypeDef MB_DATA;
-
-typedef struct
-{
- uint8_t data[240];
-}MB_OscilTypeDef;
-
typedef struct
{
UPP_FuncCalls_t FuncCalls;
@@ -162,7 +157,10 @@ extern MB_DataInternalTypeDef MB_INTERNAL;
//--------------SIZES OF DATA---------------
#define R_HOLDING_PRVT_ADDR 1000
-#define R_HOLDING_PRVT_QNT (sizeof(UPP_PrvtParams_t)/sizeof(uint16_t))
+#define R_HOLDING_PRVT_QNT (sizeof(UPP_PrvtParams_t)/sizeof(uint16_t))
+
+#define R_HOLDING_OSCIL_ADDR 2000
+#define R_HOLDING_OSCIL_QNT (sizeof(MB_OscilTypeDef)/sizeof(uint16_t))
#define C_COILS_PRVT_ADDR 1000
#define C_COILS_PRVT_QNT (16)
diff --git a/UPP/Core/UPP/upp_main.c b/UPP/Core/UPP/upp_main.c
index 0db25b3..b4ada98 100644
--- a/UPP/Core/UPP/upp_main.c
+++ b/UPP/Core/UPP/upp_main.c
@@ -46,6 +46,7 @@ int UPP_App_Init(void)
MODBUS_FirstInit(&hmodbus1, &mb_huart, &mb_htim, UPP_UART2_SetDirection);
MODBUS_FirstInit(&hmodbus_pui, &mb_pui_huart, &mb_pui_htim, UPP_UART1_SetDirection);
+ MB_Oscil_Init(&MB_INTERNAL.oscil, 120, 4, 2);
if(HAL_TIM_Base_Start(&ustim) != HAL_OK)
@@ -117,10 +118,6 @@ int UPP_While(void)
int retval = 0;
PWM_SetPolarity(&upp.hpwm, dbg_polarity);
- if(upp.pm.adc.RawData[0] < 2000)
- {
- __NOP();
- }
if(upp.pm.f.runSlow)
{
GPIO_LED_Duty_Set(&UPP_LEDS.green1, test_green1);
diff --git a/UPP/Core/UPP/upp_status.c b/UPP/Core/UPP/upp_status.c
index de1f051..476c26e 100644
--- a/UPP/Core/UPP/upp_status.c
+++ b/UPP/Core/UPP/upp_status.c
@@ -7,7 +7,6 @@
******************************************************************************/
#include "upp_main.h" // всё остальное по работе с УПП
#include "upp_status.h"
-int cnt_oscil_size = 100;
void UPP_Status_Handler_SlowCalc(void)
{
@@ -96,30 +95,28 @@ void UPP_Status_Handler_IRQ(void)
upp.PUI.values->Trad = upp.pm.measured.final.T[TEMP_RAD] * 10;
upp.PUI.values->Tshkaf = upp.pm.measured.final.T[TEMP_SHKAF] * 10;
-
- static int mb_u_cnt = 0;
- if(mb_u_cnt+4 >= 240)
+ uint8_t oscil_data[4] = {0};
+ switch(MB_INTERNAL.oscil.User[0])
{
- mb_u_cnt = 0;
- }
-// MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.pm.measured.slow.U[U_AB]+1)*127;
-// MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.pm.measured.slow.U[U_BC]+1)*127;
-// MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.pm.measured.slow.U[U_CA]+1)*127;
-// MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.pm.measured.slow.I[I_A]+1)*127;
-// MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.pm.measured.slow.I[I_B]+1)*127;
-// MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.pm.measured.slow.I[I_C]+1)*127;
- static int cnt_oscil = 0;
-
- if(cnt_oscil == 0)
- {
- MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.hangle.Iref)*32;
- MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.hangle.Imeas)*32;
- MB_INTERNAL.oscil.data[mb_u_cnt++] = (upp.hangle.alpha)*127;
- MB_INTERNAL.oscil.data[mb_u_cnt++] = 0;
- }
- if (++cnt_oscil>cnt_oscil_size)
- {
- cnt_oscil = 0;
+ case 0:
+ oscil_data[0] = (upp.pm.measured.slow.U[U_AB]+1)*127;
+ oscil_data[1] = (upp.pm.measured.slow.U[U_BC]+1)*127;
+ oscil_data[2] = (upp.pm.measured.slow.U[U_CA]+1)*127;
+ oscil_data[3] = local_time();
+ break;
+
+ case 1:
+ oscil_data[0] = (upp.pm.measured.slow.I[I_A]+1)*127;
+ oscil_data[1] = (upp.pm.measured.slow.I[I_B]+1)*127;
+ oscil_data[2] = (upp.pm.measured.slow.I[I_C]+1)*127;
+ break;
+
+ case 2:
+ oscil_data[0] = (upp.hangle.Iref)*32;
+ oscil_data[1] = (upp.hangle.Imeas)*32;
+ oscil_data[2] = (upp.hangle.alpha)*127;
+ break;
}
+ MB_Oscil_Add(&MB_INTERNAL.oscil, oscil_data);
}
\ No newline at end of file
diff --git a/UPP/MDK-ARM/UPP.uvoptx b/UPP/MDK-ARM/UPP.uvoptx
index bb70ab3..32b5962 100644
--- a/UPP/MDK-ARM/UPP.uvoptx
+++ b/UPP/MDK-ARM/UPP.uvoptx
@@ -148,40 +148,7 @@
UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F427ZGTx$CMSIS\Flash\STM32F4xx_1024.FLM))
-
-
- 0
- 0
- 351
- 1
- 134232798
- 0
- 0
- 0
- 0
- 0
- 1
- ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c
-
- \\UPP\../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c\351
-
-
- 1
- 0
- 183
- 1
- 134280762
- 0
- 0
- 0
- 0
- 0
- 1
- ..\Core\UPP\upp_main.c
-
- \\UPP\../Core/UPP/upp_main.c\183
-
-
+
0
@@ -196,7 +163,7 @@
2
1
- hmodbus1
+ hmodbus1,0x0A
3
@@ -283,6 +250,46 @@
1
pCoils
+
+ 20
+ 1
+ MB_INTERNAL.oscil,0x0A
+
+
+ 21
+ 1
+ hmodbus1.lastPacketTick,0x0A
+
+
+ 22
+ 1
+ &MB_INTERNAL.oscil.Preamble,0x0A
+
+
+ 23
+ 1
+ &MB_INTERNAL.oscil.Data
+
+
+ 24
+ 1
+ hmodbus1.lastPacketTick,0x0A
+
+
+ 25
+ 1
+ lastPacketTick,0x0A
+
+
+ 26
+ 1
+ dbg_period,0x0A
+
+
+ 27
+ 1
+ mb_period,0x0A
+
@@ -373,15 +380,10 @@
17
2
- MB_INTERNAL.oscil.data,0x0A
-
-
- 18
- 2
hmodbus1
- 19
+ 18
2
cnt_oscil_size,0x0A
@@ -1403,7 +1405,7 @@
Modbus
- 0
+ 1
0
0
0
@@ -1551,6 +1553,30 @@
0
0
+
+ 6
+ 69
+ 1
+ 0
+ 0
+ 0
+ ..\AllLibs\Modbus\Src\modbus_oscil.c
+ modbus_oscil.c
+ 0
+ 0
+
+
+ 6
+ 70
+ 5
+ 0
+ 0
+ 0
+ ..\AllLibs\Modbus\Inc\modbus_oscil.h
+ modbus_oscil.h
+ 0
+ 0
+
@@ -1561,7 +1587,7 @@
0
7
- 69
+ 71
1
0
0
@@ -1573,7 +1599,7 @@
7
- 70
+ 72
1
0
0
@@ -1585,7 +1611,7 @@
7
- 71
+ 73
1
0
0
@@ -1597,7 +1623,7 @@
7
- 72
+ 74
5
0
0
@@ -1609,7 +1635,7 @@
7
- 73
+ 75
1
0
0
@@ -1621,7 +1647,7 @@
7
- 74
+ 76
5
0
0
@@ -1641,7 +1667,7 @@
0
8
- 75
+ 77
1
0
0
@@ -1653,7 +1679,7 @@
8
- 76
+ 78
1
0
0
@@ -1665,7 +1691,7 @@
8
- 77
+ 79
1
0
0
@@ -1677,7 +1703,7 @@
8
- 78
+ 80
1
0
0
@@ -1689,7 +1715,7 @@
8
- 79
+ 81
1
0
0
@@ -1709,7 +1735,7 @@
0
9
- 80
+ 82
1
0
0
@@ -1721,7 +1747,7 @@
9
- 81
+ 83
1
0
0
@@ -1733,7 +1759,7 @@
9
- 82
+ 84
1
0
0
@@ -1745,7 +1771,7 @@
9
- 83
+ 85
1
0
0
@@ -1757,7 +1783,7 @@
9
- 84
+ 86
1
0
0
@@ -1769,7 +1795,7 @@
9
- 85
+ 87
1
0
0
@@ -1781,7 +1807,7 @@
9
- 86
+ 88
1
0
0
@@ -1793,7 +1819,7 @@
9
- 87
+ 89
1
0
0
@@ -1805,7 +1831,7 @@
9
- 88
+ 90
1
0
0
@@ -1817,7 +1843,7 @@
9
- 89
+ 91
1
0
0
@@ -1829,7 +1855,7 @@
9
- 90
+ 92
1
0
0
@@ -1841,7 +1867,7 @@
9
- 91
+ 93
1
0
0
@@ -1853,7 +1879,7 @@
9
- 92
+ 94
1
0
0
@@ -1865,7 +1891,7 @@
9
- 93
+ 95
1
0
0
@@ -1877,7 +1903,7 @@
9
- 94
+ 96
1
0
0
@@ -1889,7 +1915,7 @@
9
- 95
+ 97
1
0
0
@@ -1901,7 +1927,7 @@
9
- 96
+ 98
1
0
0
@@ -1913,7 +1939,7 @@
9
- 97
+ 99
1
0
0
@@ -1925,7 +1951,7 @@
9
- 98
+ 100
1
0
0
@@ -1937,7 +1963,7 @@
9
- 99
+ 101
1
0
0
@@ -1949,7 +1975,7 @@
9
- 100
+ 102
1
0
0
@@ -1961,7 +1987,7 @@
9
- 101
+ 103
1
0
0
@@ -1973,7 +1999,7 @@
9
- 102
+ 104
1
0
0
@@ -1985,7 +2011,7 @@
9
- 103
+ 105
1
0
0
@@ -2005,7 +2031,7 @@
0
10
- 104
+ 106
1
0
0
@@ -2025,7 +2051,7 @@
0
11
- 105
+ 107
2
0
0
@@ -2037,7 +2063,7 @@
11
- 106
+ 108
2
0
0
diff --git a/UPP/MDK-ARM/UPP.uvprojx b/UPP/MDK-ARM/UPP.uvprojx
index 7ea1641..a3e2a3d 100644
--- a/UPP/MDK-ARM/UPP.uvprojx
+++ b/UPP/MDK-ARM/UPP.uvprojx
@@ -1107,6 +1107,16 @@
1
..\AllLibs\Modbus\Src\rs_message.c
+
+ modbus_oscil.c
+ 1
+ ..\AllLibs\Modbus\Src\modbus_oscil.c
+
+
+ modbus_oscil.h
+ 5
+ ..\AllLibs\Modbus\Inc\modbus_oscil.h
+
@@ -2489,6 +2499,16 @@
1
..\AllLibs\Modbus\Src\rs_message.c
+
+ modbus_oscil.c
+ 1
+ ..\AllLibs\Modbus\Src\modbus_oscil.c
+
+
+ modbus_oscil.h
+ 5
+ ..\AllLibs\Modbus\Inc\modbus_oscil.h
+
diff --git a/Информация для программиста (УПП СП СЭД)/Modbus/ModbusPoll.mbw b/Информация для программиста (УПП СП СЭД)/Modbus/ModbusPoll.mbw
new file mode 100644
index 0000000..3904331
--- /dev/null
+++ b/Информация для программиста (УПП СП СЭД)/Modbus/ModbusPoll.mbw
@@ -0,0 +1,69 @@
+
+
+
+
+ 96
+
+ 0
+ 10
+ 115200
+ 8
+ 0
+ 1
+ 0
+ 9600
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+
+ 0
+ 1000
+ 20
+ 127.0.0.1
+ 502
+ 3000
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Внутренние настройки.mbp
+
+
+
+ Вызов функций.mbp
+
+
+
+ Значения для ПУИ.mbp
+
+
+
+ Настройки ПУИ.mbp
+
+
+
+ Управление от ПУИ.mbp
+
+
+
+