чистка для релиза
переструктурировано чуть и всякие мелкие фиксы
This commit is contained in:
parent
c32dc161f8
commit
369cfa808c
BIN
DebugVarEdit.exe
BIN
DebugVarEdit.exe
Binary file not shown.
22
README.md
22
README.md
@ -1,10 +1,12 @@
|
||||
# DebugVarEdit — Утилита для генерации отладочных переменных C-проекта
|
||||
# DebugVarEdit — Утилита для генерации переменных для отладки
|
||||
|
||||
**DebugVarEdit** — графическое приложение для Windows, предназначенное для настройки и генерации отладочных переменных (`debug_vars.c`) на основе исходного C-проекта. Работает с `makefile` проекта, сохраняет изменения в XML и позволяет удобно редактировать переменные и их типы через интерфейс.
|
||||
|
||||
Программа — один исполняемый файл `DebugVarEdit.exe`, не требующий установки и дополнительных зависимостей.
|
||||
|
||||
> Требуется Windows 7 или новее.
|
||||
|
||||
> [Для разработчиков](#для-разработчиков)
|
||||
---
|
||||
|
||||
## Как использовать
|
||||
@ -85,20 +87,20 @@
|
||||
|
||||
```bash
|
||||
Src
|
||||
├── build/
|
||||
│ └── build_and_clean.py # Билдинг проекта в .exe (через nuitka или pyinstaller)
|
||||
├── DebugVarEdit_GUI.py # Главное окно
|
||||
├── var_table.py # Таблица выбранных переменных
|
||||
├── var_selector_window.py # Окно выбора переменных
|
||||
├── var_selector_table.py # Таблица переменных в окне выбора переменных
|
||||
├── scan_progress_gui.py # Отображение процесса сканирования переменных
|
||||
├── scan_vars.py # Сканирование переменных среди .c/.h файлов
|
||||
├── generate_debug_vars.py # Генерация debug_vars.c
|
||||
├── var_table.py # Таблица выбранных переменных
|
||||
├── var_selector_window.py # Окно выбора переменных
|
||||
├── var_selector_table.py # Таблица переменных в окне выбора переменных
|
||||
├── scan_progress_gui.py # Отображение процесса сканирования переменных
|
||||
├── scan_vars.py # Сканирование переменных среди .c/.h файлов
|
||||
├── generate_debug_vars.py # Генерация debug_vars.c
|
||||
├── myXML.py # Утилиты для XML
|
||||
├── makefile_parser.py # Парсинг makefile на .c/.h файлы
|
||||
├── makefile_parser.py # Парсинг makefile на .c/.h файлы
|
||||
├── var_setup.py # Подготовка переменных для окна выбора переменных
|
||||
├── libclang.dll # Бибилиотека clang
|
||||
├── icon.ico # Иконка
|
||||
build
|
||||
├── build_and_clean.py # Билдинг проекта в .exe (через nuitka или pyinstaller)
|
||||
```
|
||||
|
||||
### Зависимости
|
||||
|
@ -10,8 +10,8 @@ from enum import IntEnum
|
||||
import threading
|
||||
from generate_debug_vars import run_generate
|
||||
import var_setup
|
||||
from var_selector_window import var_selector_windowDialog
|
||||
from var_table import var_tableWidget, rows
|
||||
from var_selector_window import VariableSelectorDialog
|
||||
from var_table import VariableTableWidget, rows
|
||||
from scan_progress_gui import ProcessOutputWindow
|
||||
import scan_vars
|
||||
import myXML
|
||||
@ -134,7 +134,7 @@ class VarEditor(QWidget):
|
||||
btn_open_output = QPushButton(open_output_title)
|
||||
btn_open_output.clicked.connect(self.__open_output_file_with_program)
|
||||
# Таблица
|
||||
self.table = var_tableWidget()
|
||||
self.table = VariableTableWidget()
|
||||
# Основной layout
|
||||
layout = QVBoxLayout()
|
||||
layout.addLayout(xml_layout)
|
||||
@ -208,7 +208,7 @@ class VarEditor(QWidget):
|
||||
|
||||
# Создаём окно с кнопкой "Готово"
|
||||
self.proc_win = ProcessOutputWindow(self.proj_path, self.makefile_path, self.xml_path,
|
||||
on_done_callback=self.__after_scan_vars_finished)
|
||||
self.__after_scan_vars_finished, self)
|
||||
self.proc_win.start_scan()
|
||||
|
||||
|
||||
@ -442,8 +442,9 @@ class VarEditor(QWidget):
|
||||
if not self.vars_list:
|
||||
QMessageBox.warning(self, "Нет переменных", f"Сначала загрузите переменные ({scan_title}).")
|
||||
return
|
||||
|
||||
dlg = var_selector_windowDialog(self.table, self.vars_list, self.structs, self.typedef_map, self.xml_path, self)
|
||||
|
||||
self.update()
|
||||
dlg = VariableSelectorDialog(self.table, self.vars_list, self.structs, self.typedef_map, self.xml_path, self)
|
||||
if dlg.exec_():
|
||||
self.write_to_xml()
|
||||
self.update()
|
||||
|
55
Src/README_DEVELOP.md
Normal file
55
Src/README_DEVELOP.md
Normal file
@ -0,0 +1,55 @@
|
||||
# Для разработчиков
|
||||
|
||||
### Структура проекта:
|
||||
|
||||
```bash
|
||||
Src
|
||||
├── build/
|
||||
│ └── build_and_clean.py # Билдинг проекта в .exe (через nuitka или pyinstaller)
|
||||
├── DebugVarEdit_GUI.py # Главное окно
|
||||
├── var_table.py # Таблица выбранных переменных
|
||||
├── var_selector_window.py # Окно выбора переменных
|
||||
├── var_selector_table.py # Таблица переменных в окне выбора переменных
|
||||
├── scan_progress_gui.py # Отображение процесса сканирования переменных
|
||||
├── scan_vars.py # Сканирование переменных среди .c/.h файлов
|
||||
├── generate_debug_vars.py # Генерация debug_vars.c
|
||||
├── myXML.py # Утилиты для XML
|
||||
├── makefile_parser.py # Парсинг makefile на .c/.h файлы
|
||||
├── var_setup.py # Подготовка переменных для окна выбора переменных
|
||||
├── libclang.dll # Бибилиотека clang
|
||||
├── icon.ico # Иконка
|
||||
```
|
||||
|
||||
### Зависимости
|
||||
|
||||
Для запуска приложения:
|
||||
- **Python 3.7+**
|
||||
- **clang** — используется для парсинга C-кода (требуется `libclang.dll`)
|
||||
- **PySide2** — GUI-фреймворк
|
||||
- **lxml** — работа с XML
|
||||
> Python 3.7 и PySide2 рекомендуется для совместимости с Windows 7
|
||||
|
||||
Для сборки `.exe`:
|
||||
- **Nuitka** — создает полностью автономный `.exe` без внешних зависимостей
|
||||
- **PyInstaller** — создает `.exe` с зависимостью от `pythonXX.dll` (Python должен быть установлен)
|
||||
|
||||
|
||||
### Сборка:
|
||||
Если вы хотите собрать `DebugVarEdit.exe` самостоятельно из исходников, используйте скрипт **build/build_and_clean.py**. Он автоматически собирает проект с помощью Nuitka или PyInstaller:
|
||||
- Собирает проект в `DebugVarEdit.exe` в корневой папке.
|
||||
- Включает:
|
||||
- все необходимые `.dll` (например, `libclang.dll`),
|
||||
- иконку (`icon.ico`),
|
||||
- плагины PySide2.
|
||||
- Очищает временные папки после сборки:
|
||||
- `build_temp`
|
||||
- `__pycache__`
|
||||
- `DebugVarEdit_GUI.*`
|
||||
|
||||
> Все пути, имена файлов, временные папки и выбор между Nuitka и PyInstaller можно настроить в начале файла `build_and_clean.py`.
|
||||
|
||||
### Установка зависимостей
|
||||
|
||||
```bash
|
||||
pip install PySide2 lxml nuitka pyinstaller
|
||||
```
|
@ -7,7 +7,7 @@ import contextlib
|
||||
import io
|
||||
import json
|
||||
from scan_vars import run_scan
|
||||
from var_table import var_tableWidget, rows
|
||||
from var_table import VariableTableWidget, rows
|
||||
|
||||
from PySide2.QtWidgets import (
|
||||
QApplication, QWidget, QTableWidget, QTableWidgetItem,
|
||||
@ -73,13 +73,13 @@ class EmittingStream(QObject):
|
||||
self._buffer = ""
|
||||
|
||||
|
||||
|
||||
class ProcessOutputWindow(QDialog):
|
||||
def __init__(self, proj_path, makefile_path, xml_path, on_done_callback=None):
|
||||
super().__init__()
|
||||
def __init__(self, proj_path, makefile_path, xml_path, on_done_callback=None, parent=None):
|
||||
super().__init__(parent)
|
||||
self.setWindowTitle("Поиск переменных...")
|
||||
self.resize(600, 480)
|
||||
self.setModal(True)
|
||||
self.setAttribute(Qt.WA_DeleteOnClose)
|
||||
|
||||
self.proj_path = proj_path
|
||||
self.makefile_path = makefile_path
|
||||
|
@ -244,7 +244,6 @@ class VariableSelectWidget(QWidget):
|
||||
|
||||
def filter_tree(self):
|
||||
text = self.search_input.text().strip().lower()
|
||||
print(f"[{self.objectName()}] Filtering tree with text: '{text}'")
|
||||
path_parts = split_path(text) if text else []
|
||||
|
||||
if '.' not in text and '->' not in text and '[' not in text and text != '':
|
||||
@ -358,8 +357,6 @@ class VariableSelectWidget(QWidget):
|
||||
|
||||
self.completer.setModel(QStringListModel(completions))
|
||||
self.completer.complete()
|
||||
print(f"[{self.objectName()}] Updating completions for text: '{text}' -> {len(completions)} completions found.")
|
||||
print(f" Completions: {completions[:5]}") # Вывести первые 5 для проверки
|
||||
return completions
|
||||
|
||||
|
||||
@ -469,7 +466,6 @@ class VariableSelectWidget(QWidget):
|
||||
def on_search_text_changed(self, text):
|
||||
sender_widget = self.sender()
|
||||
sender_name = sender_widget.objectName() if sender_widget else "Unknown Sender"
|
||||
print(f"[{self.objectName()}] (Sender: {sender_name}) Search text changed: '{text}'")
|
||||
|
||||
self.completer.setWidget(self.search_input)
|
||||
self.filter_tree()
|
||||
|
@ -15,7 +15,7 @@ import var_selector_table
|
||||
|
||||
array_re = re.compile(r'^(\w+)\[(\d+)\]$')
|
||||
|
||||
class var_selector_windowDialog(QDialog):
|
||||
class VariableSelectorDialog(QDialog):
|
||||
def __init__(self, table, all_vars, structs, typedefs, xml_path=None, parent=None):
|
||||
super().__init__(parent)
|
||||
self.setWindowTitle("Выбор переменных")
|
||||
@ -62,11 +62,29 @@ class var_selector_windowDialog(QDialog):
|
||||
self.selected_vars_widget.tree.itemDoubleClicked.connect(self.on_rigth_tree_double_click)
|
||||
self.selected_vars_widget.setObjectName("RightTable")
|
||||
|
||||
# Подписи над таблицами
|
||||
label_all = QLabel("Все переменные")
|
||||
label_all.setStyleSheet("font-weight: bold; font-size: 14px;")
|
||||
|
||||
label_selected = QLabel("Выбранные переменные")
|
||||
label_selected.setStyleSheet("font-weight: bold; font-size: 14px;")
|
||||
|
||||
|
||||
# --- Лэйауты ---
|
||||
main_layout = QVBoxLayout(self) # главный вертикальный layout окна
|
||||
|
||||
tables_layout = QHBoxLayout() # горизонтальный layout с таблицами и кнопками
|
||||
# Чекбокс автодополнения — первый в главном layout
|
||||
main_layout.addWidget(self.autocomplete_checkbox)
|
||||
|
||||
# Подписи над таблицами
|
||||
labels_layout = QHBoxLayout()
|
||||
labels_layout.addWidget(label_all)
|
||||
labels_layout.addStretch()
|
||||
labels_layout.addWidget(label_selected)
|
||||
main_layout.addLayout(labels_layout)
|
||||
|
||||
# Горизонтальный layout с таблицами и кнопками
|
||||
tables_layout = QHBoxLayout()
|
||||
|
||||
# Левая таблица
|
||||
self.vars_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||
@ -101,7 +119,7 @@ class var_selector_windowDialog(QDialog):
|
||||
self.btn_accept.clicked.connect(self.on_apply_clicked)
|
||||
|
||||
# Соединяем чекбокс с методом виджета
|
||||
self.autocomplete_checkbox.stateChanged.connect(self.vars_widget.set_autocomplete)
|
||||
self.autocomplete_checkbox.stateChanged.connect(self.set_autocomplete_tables)
|
||||
# Устанавливаем начальное состояние автодополнения в виджете
|
||||
self.vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked())
|
||||
self.selected_vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked())
|
||||
@ -224,13 +242,6 @@ class var_selector_windowDialog(QDialog):
|
||||
self.accept()
|
||||
|
||||
|
||||
|
||||
def save_checkbox_state(self):
|
||||
self.settings.setValue("autocomplete_enabled", self.autocomplete_checkbox.isChecked())
|
||||
|
||||
|
||||
|
||||
|
||||
# Обнови on_left_tree_double_click:
|
||||
def on_left_tree_double_click(self, item, column):
|
||||
selected_names = [item.text(0)]
|
||||
@ -373,3 +384,9 @@ class var_selector_windowDialog(QDialog):
|
||||
|
||||
def save_checkbox_state(self):
|
||||
self.settings.setValue("autocomplete_enabled", self.autocomplete_checkbox.isChecked())
|
||||
|
||||
|
||||
|
||||
def set_autocomplete_tables(self, state):
|
||||
self.vars_widget.set_autocomplete(state)
|
||||
self.selected_vars_widget.set_autocomplete(state)
|
@ -60,8 +60,14 @@ class FilterDialog(QDialog):
|
||||
return [cb.text() for cb in self.checkboxes if cb.isChecked()]
|
||||
|
||||
|
||||
|
||||
class var_tableWidget(QTableWidget):
|
||||
class CtrlScrollComboBox(QComboBox):
|
||||
def wheelEvent(self, event):
|
||||
if event.modifiers() & Qt.ControlModifier:
|
||||
super().wheelEvent(event)
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
class VariableTableWidget(QTableWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(0, 8, parent)
|
||||
# Таблица переменных
|
||||
@ -82,11 +88,12 @@ class var_tableWidget(QTableWidget):
|
||||
self.pt_types_all = [t.replace('pt_', '') for t in self.type_options]
|
||||
self.iq_types_all = ['iq_none', 'iq'] + [f'iq{i}' for i in range(1, 31)]
|
||||
# Задаём базовые iq-типы (без префикса 'iq_')
|
||||
self.iq_types = ['iq_none', 'iq24', 'iq19', 'iq15', 'iq10']
|
||||
self.iq_types = ['iq_none', 'iq', 'iq10', 'iq15', 'iq19', 'iq24']
|
||||
# Фильтруем типы из type_map.values() исключая те, что содержат 'arr' или 'ptr'
|
||||
self.type_options = [t for t in set(type_map.values()) if 'arr' not in t and 'ptr' not in t]
|
||||
type_options = [t for t in dict.fromkeys(type_map.values()) if 'arr' not in t and 'ptr' not in t and
|
||||
'struct' not in t and 'union' not in t and '64' not in t]
|
||||
# Формируем display_type_options без префикса 'pt_'
|
||||
self.pt_types = [t.replace('pt_', '') for t in self.type_options]
|
||||
self.pt_types = [t.replace('pt_', '') for t in type_options]
|
||||
|
||||
self._iq_type_filter = list(self.iq_types) # Текущий фильтр iq типов (по умолчанию все)
|
||||
self._pt_type_filter = list(self.pt_types)
|
||||
@ -117,9 +124,6 @@ class var_tableWidget(QTableWidget):
|
||||
|
||||
def populate(self, vars_list, structs, on_change_callback):
|
||||
self.var_list = vars_list
|
||||
self.type_options = list(dict.fromkeys(type_map.values()))
|
||||
self.pt_types = [t.replace('pt_', '') for t in self.type_options]
|
||||
iq_types = ['iq_none', 'iq'] + [f'iq{i}' for i in range(1, 31)]
|
||||
|
||||
# --- ДО: удаляем отображение структур и union-переменных
|
||||
for var in vars_list:
|
||||
@ -168,7 +172,7 @@ class var_tableWidget(QTableWidget):
|
||||
self.setItem(row, rows.type, origin_item)
|
||||
|
||||
# pt_type
|
||||
pt_combo = QComboBox()
|
||||
pt_combo = CtrlScrollComboBox()
|
||||
pt_combo.addItems(self.pt_types)
|
||||
value = var['pt_type'].replace('pt_', '')
|
||||
if value not in self.pt_types:
|
||||
@ -176,11 +180,10 @@ class var_tableWidget(QTableWidget):
|
||||
pt_combo.setCurrentText(value)
|
||||
pt_combo.currentTextChanged.connect(on_change_callback)
|
||||
pt_combo.setStyleSheet(style_with_padding)
|
||||
pt_combo.wheelEvent = lambda e: e.ignore()
|
||||
self.setCellWidget(row, rows.pt_type, pt_combo)
|
||||
|
||||
# iq_type
|
||||
iq_combo = QComboBox()
|
||||
iq_combo = CtrlScrollComboBox()
|
||||
iq_combo.addItems(self.iq_types)
|
||||
value = var['iq_type'].replace('t_', '')
|
||||
if value not in self.iq_types:
|
||||
@ -188,17 +191,15 @@ class var_tableWidget(QTableWidget):
|
||||
iq_combo.setCurrentText(value)
|
||||
iq_combo.currentTextChanged.connect(on_change_callback)
|
||||
iq_combo.setStyleSheet(style_with_padding)
|
||||
iq_combo.wheelEvent = lambda e: e.ignore()
|
||||
self.setCellWidget(row, rows.iq_type, iq_combo)
|
||||
|
||||
# return_type
|
||||
ret_combo = QComboBox()
|
||||
ret_combo = CtrlScrollComboBox()
|
||||
ret_combo.addItems(self.iq_types)
|
||||
value = var['return_type'].replace('t_', '')
|
||||
ret_combo.setCurrentText(value)
|
||||
ret_combo.currentTextChanged.connect(on_change_callback)
|
||||
ret_combo.setStyleSheet(style_with_padding)
|
||||
ret_combo.wheelEvent = lambda e: e.ignore()
|
||||
self.setCellWidget(row, rows.ret_type, ret_combo)
|
||||
|
||||
# short_name
|
||||
@ -276,7 +277,7 @@ class var_tableWidget(QTableWidget):
|
||||
|
||||
def on_header_clicked(self, logicalIndex):
|
||||
if logicalIndex == rows.pt_type:
|
||||
dlg = FilterDialog(self, self.pt_types_all, self._pt_type_filter, "Выберите Pointer Types")
|
||||
dlg = FilterDialog(self, self.pt_types_all, self._pt_type_filter, "Выберите базовые типы")
|
||||
if dlg.exec_():
|
||||
self._pt_type_filter = dlg.get_selected()
|
||||
self.update_comboboxes({rows.pt_type: self._pt_type_filter})
|
||||
@ -309,6 +310,7 @@ class var_tableWidget(QTableWidget):
|
||||
current = combo.currentText()
|
||||
combo.blockSignals(True)
|
||||
combo.clear()
|
||||
|
||||
combo.addItems(allowed_items)
|
||||
if current in allowed_items:
|
||||
combo.setCurrentText(current)
|
||||
|
341
debug_vars.c
341
debug_vars.c
@ -1,341 +0,0 @@
|
||||
// Ýòîò ôàéë ñãåíåðèðîâàí àâòîìàòè÷åñêè
|
||||
#include "debug_tools.h"
|
||||
|
||||
|
||||
// Èíêëþäû äëÿ äîñòóïà ê ïåðåìåííûì
|
||||
#include "vector.h"
|
||||
#include "errors.h"
|
||||
#include "RS_Functions_modbus.h"
|
||||
#include "xp_project.h"
|
||||
#include "adc_tools.h"
|
||||
#include "pwm_vector_regul.h"
|
||||
#include "log_can.h"
|
||||
#include "f281xpwm.h"
|
||||
#include "v_pwm24.h"
|
||||
#include "xp_write_xpwm_time.h"
|
||||
#include "dq_to_alphabeta_cos.h"
|
||||
#include "teta_calc.h"
|
||||
#include "rotation_speed.h"
|
||||
#include "detect_phase_break2.h"
|
||||
#include "RS_Functions.h"
|
||||
#include "Spartan2E_Functions.h"
|
||||
#include "xp_controller.h"
|
||||
#include "xp_rotation_sensor.h"
|
||||
#include "x_serial_bus.h"
|
||||
#include "x_parallel_bus.h"
|
||||
#include "xPeriphSP6_loader.h"
|
||||
#include "log_params.h"
|
||||
#include "CAN_Setup.h"
|
||||
#include "CRC_Functions.h"
|
||||
#include "log_to_memory.h"
|
||||
#include "global_time.h"
|
||||
#include "svgen_dq.h"
|
||||
#include "pid_reg3.h"
|
||||
#include "IQmathLib.h"
|
||||
#include "doors_control.h"
|
||||
#include "isolation.h"
|
||||
#include "main22220.h"
|
||||
#include "optical_bus.h"
|
||||
#include "alarm_log_can.h"
|
||||
#include "bender.h"
|
||||
#include "can_watercool.h"
|
||||
#include "detect_phase_break.h"
|
||||
#include "modbus_read_table.h"
|
||||
#include "rmp_cntl_my1.h"
|
||||
|
||||
|
||||
// Ýêñòåðíû äëÿ äîñòóïà ê ïåðåìåííûì
|
||||
extern int ADC0finishAddr;
|
||||
extern int ADC0startAddr;
|
||||
extern int ADC1finishAddr;
|
||||
extern int ADC1startAddr;
|
||||
extern int ADC2finishAddr;
|
||||
extern int ADC2startAddr;
|
||||
extern int ADC_f[2][16];
|
||||
extern int ADC_sf[2][16];
|
||||
extern int ADDR_FOR_ALL;
|
||||
extern int BUSY;
|
||||
extern BENDER Bender[2];
|
||||
extern int CAN_answer_wait[32];
|
||||
extern int CAN_count_cycle_input_units[8];
|
||||
extern int CAN_no_answer[32];
|
||||
extern int CAN_refresh_cicle[32];
|
||||
extern int CAN_request_sent[32];
|
||||
extern int CAN_timeout[32];
|
||||
extern int CAN_timeout_cicle[32];
|
||||
extern int CNTRL_ADDR;
|
||||
extern const int CNTRL_ADDR_UNIVERSAL;
|
||||
extern _iq CONST_15;
|
||||
extern _iq CONST_23;
|
||||
extern int CanOpenUnites[30];
|
||||
extern int CanTimeOutErrorTR;
|
||||
extern XControll_reg Controll;
|
||||
extern int Dpwm;
|
||||
extern int Dpwm2;
|
||||
extern int Dpwm4;
|
||||
extern int EvaTimer1InterruptCount;
|
||||
extern int EvaTimer2InterruptCount;
|
||||
extern int EvbTimer3InterruptCount;
|
||||
extern int EvbTimer4InterruptCount;
|
||||
extern int Fpwm;
|
||||
extern int IN0finishAddr;
|
||||
extern int IN0startAddr;
|
||||
extern int IN1finishAddr;
|
||||
extern int IN1startAddr;
|
||||
extern int IN2finishAddr;
|
||||
extern int IN2startAddr;
|
||||
extern float IQ_OUT_NOM;
|
||||
extern long I_OUT_1_6_NOMINAL_IQ;
|
||||
extern long I_OUT_1_8_NOMINAL_IQ;
|
||||
extern float I_OUT_NOMINAL;
|
||||
extern long I_OUT_NOMINAL_IQ;
|
||||
extern long I_ZPT_NOMINAL_IQ;
|
||||
extern _iq Id_out_max_full;
|
||||
extern _iq Id_out_max_low_speed;
|
||||
extern _iq Iq_out_max;
|
||||
extern _iq Iq_out_nom;
|
||||
extern const unsigned long K_LEM_ADC[20];
|
||||
extern float KmodTerm;
|
||||
extern int ROTfinishAddr;
|
||||
extern unsigned int RS_Len[70];
|
||||
extern const unsigned int R_ADC[20];
|
||||
extern int RotPlaneStartAddr;
|
||||
extern _iq SQRT_32;
|
||||
extern int Unites[8][128];
|
||||
extern int VAR_FREQ_PWM_XTICS;
|
||||
extern int VAR_PERIOD_MAX_XTICS;
|
||||
extern int VAR_PERIOD_MIN_BR_XTICS;
|
||||
extern int VAR_PERIOD_MIN_XTICS;
|
||||
extern int Zpwm;
|
||||
extern WINDING a;
|
||||
extern volatile AddrToSent addrToSent;
|
||||
extern unsigned int adr_read_from_modbus3;
|
||||
extern ALARM_LOG_CAN alarm_log_can;
|
||||
extern ALARM_LOG_CAN_SETUP alarm_log_can_setup;
|
||||
extern ANALOG_VALUE analog;
|
||||
extern int ar_sa_all[3][6][4][7];
|
||||
extern _iq ar_tph[7];
|
||||
extern int block_size_counter_fast;
|
||||
extern int block_size_counter_slow;
|
||||
extern _iq break_result_1;
|
||||
extern _iq break_result_2;
|
||||
extern _iq break_result_3;
|
||||
extern _iq break_result_4;
|
||||
extern Byte byte;
|
||||
extern long c_s;
|
||||
extern int calibration1;
|
||||
extern int calibration2;
|
||||
extern test_functions callfunc;
|
||||
extern CANOPEN_CAN_SETUP canopen_can_setup;
|
||||
extern unsigned int capnum0;
|
||||
extern unsigned int capnum1;
|
||||
extern unsigned int capnum2;
|
||||
extern unsigned int capnum3;
|
||||
extern unsigned int chNum;
|
||||
extern BREAK_PHASE_I chanell1;
|
||||
extern BREAK_PHASE_I chanell2;
|
||||
extern int cmd_3_or_16;
|
||||
extern int compress_size;
|
||||
extern ControlReg controlReg;
|
||||
extern COS_FI_STRUCT cos_fi;
|
||||
extern unsigned int count_error_sync;
|
||||
extern int count_modbus_table_changed;
|
||||
extern int count_run_pch;
|
||||
extern WORD crc_16_tab[256];
|
||||
extern char crypt[34];
|
||||
extern int cur_position_buf_modbus16_can;
|
||||
extern CYCLE cycle[32];
|
||||
extern int delta_capnum;
|
||||
extern int delta_error;
|
||||
extern volatile DOORS_STATUS doors;
|
||||
extern int enable_can;
|
||||
extern int enable_can_recive_after_units_box;
|
||||
extern _iq err_level_adc;
|
||||
extern _iq err_level_adc_on_go;
|
||||
extern unsigned int err_main;
|
||||
extern int err_modbus16;
|
||||
extern int err_modbus3;
|
||||
extern ERRORS errors;
|
||||
extern FLAG f;
|
||||
extern volatile int fail;
|
||||
extern FAULTS faults;
|
||||
extern FIFO fifo;
|
||||
extern ANALOG_VALUE filter;
|
||||
extern int flag_buf;
|
||||
extern int flag_enable_can_from_mpu;
|
||||
extern int flag_enable_can_from_terminal;
|
||||
extern int flag_on_off_pch;
|
||||
extern unsigned int flag_received_first_mess_from_MPU;
|
||||
extern unsigned int flag_reverse;
|
||||
extern unsigned int flag_send_answer_rs;
|
||||
extern int flag_test_tabe_filled;
|
||||
extern int flag_we_int_pwm_on;
|
||||
extern _iq freq1;
|
||||
extern float freqTerm;
|
||||
extern GLOBAL_TIME global_time;
|
||||
extern int hb_logs_data;
|
||||
extern int i;
|
||||
extern BREAK2_PHASE i1_out;
|
||||
extern BREAK2_PHASE i2_out;
|
||||
extern int init_log[3];
|
||||
extern _iq19 iq19_k_norm_ADC[20];
|
||||
extern _iq19 iq19_zero_ADC[20];
|
||||
extern _iq iq_alfa_coef;
|
||||
extern _iq iq_k_norm_ADC[20];
|
||||
extern IQ_LOGSPARAMS iq_logpar;
|
||||
extern _iq iq_max;
|
||||
extern _iq iq_norm_ADC[20];
|
||||
extern ISOLATION isolation1;
|
||||
extern ISOLATION isolation2;
|
||||
extern _iq k1;
|
||||
extern float kI_D;
|
||||
extern float kI_D_Inv31;
|
||||
extern float kI_Q;
|
||||
extern float kI_Q_Inv31;
|
||||
extern float kP_D;
|
||||
extern float kP_D_Inv31;
|
||||
extern float kP_Q;
|
||||
extern float kP_Q_Inv31;
|
||||
extern _iq koef_Base_stop_run;
|
||||
extern _iq koef_Iabc_filter;
|
||||
extern _iq koef_Im_filter;
|
||||
extern _iq koef_Im_filter_long;
|
||||
extern _iq koef_K_stop_run;
|
||||
extern _iq koef_Krecup;
|
||||
extern _iq koef_Min_recup;
|
||||
extern _iq koef_TemperBSU_long_filter;
|
||||
extern _iq koef_Ud_fast_filter;
|
||||
extern _iq koef_Ud_long_filter;
|
||||
extern _iq koef_Wlong;
|
||||
extern _iq koef_Wout_filter;
|
||||
extern _iq koef_Wout_filter_long;
|
||||
extern long koeff_Fs_filter;
|
||||
extern long koeff_Idq_filter;
|
||||
extern _iq koeff_Iq_filter;
|
||||
extern long koeff_Iq_filter_slow;
|
||||
extern long koeff_Ud_filter;
|
||||
extern long koeff_Uq_filter;
|
||||
extern volatile unsigned long length;
|
||||
extern _iq level_on_off_break[13][2];
|
||||
extern logcan_TypeDef log_can;
|
||||
extern LOG_CAN_SETUP log_can_setup;
|
||||
extern TYPE_LOG_PARAMS log_params;
|
||||
extern long logbuf_sync1[10];
|
||||
extern LOGSPARAMS logpar;
|
||||
extern int m_PWM;
|
||||
extern MAILBOXS_CAN_SETUP mailboxs_can_setup;
|
||||
extern int manufactorerAndProductID;
|
||||
extern MODBUS_REG_STRUCT * modbus_table_can_in;
|
||||
extern MODBUS_REG_STRUCT * modbus_table_can_out;
|
||||
extern MODBUS_REG_STRUCT modbus_table_in[450];
|
||||
extern MODBUS_REG_STRUCT modbus_table_out[450];
|
||||
extern MODBUS_REG_STRUCT * modbus_table_rs_in;
|
||||
extern MODBUS_REG_STRUCT * modbus_table_rs_out;
|
||||
extern MODBUS_REG_STRUCT modbus_table_test[450];
|
||||
extern MPU_CAN_SETUP mpu_can_setup;
|
||||
extern NEW_CYCLE_FIFO new_cycle_fifo;
|
||||
extern int no_write;
|
||||
extern int no_write_slow;
|
||||
extern int number_modbus_table_changed;
|
||||
extern OPTICAL_BUS_DATA optical_read_data;
|
||||
extern OPTICAL_BUS_DATA optical_write_data;
|
||||
extern MODBUS_REG_STRUCT options_controller[200];
|
||||
extern _iq pidCur_Ki;
|
||||
extern PIDREG3 pidD;
|
||||
extern PIDREG3 pidD2;
|
||||
extern PIDREG3 pidFvect;
|
||||
extern int pidFvectKi_test;
|
||||
extern int pidFvectKp_test;
|
||||
extern PIDREG3 pidPvect;
|
||||
extern PIDREG3 pidQ;
|
||||
extern PIDREG3 pidQ2;
|
||||
extern PIDREG_KOEFFICIENTS pidReg_koeffs;
|
||||
extern PIDREG3 pidTetta;
|
||||
extern POWER_RATIO power_ratio;
|
||||
extern int prev_flag_buf;
|
||||
extern unsigned int prev_status_received;
|
||||
extern T_project project;
|
||||
extern PWMGEND pwmd;
|
||||
extern T_controller_read r_c_sbus;
|
||||
extern T_controller_read r_controller;
|
||||
extern FIFO refo;
|
||||
extern TMS_TO_TERMINAL_STRUCT reply;
|
||||
extern TMS_TO_TERMINAL_TEST_ALL_STRUCT reply_test_all;
|
||||
extern RMP_MY1 rmp_freq;
|
||||
extern RMP_MY1 rmp_wrot;
|
||||
extern T_rotation_sensor rotation_sensor;
|
||||
extern ROTOR_VALUE rotor;
|
||||
extern RS_DATA_STRUCT rs_a;
|
||||
extern RS_DATA_STRUCT rs_b;
|
||||
extern unsigned int sincronisationFault;
|
||||
extern char size_cmd15;
|
||||
extern char size_cmd16;
|
||||
extern int size_fast_done;
|
||||
extern int size_slow_done;
|
||||
extern int stop_log;
|
||||
extern int stop_log_slow;
|
||||
extern SVGENDQ svgen_dq_1;
|
||||
extern SVGENDQ svgen_dq_2;
|
||||
extern SVGEN_PWM24 svgen_pwm24_1;
|
||||
extern SVGEN_PWM24 svgen_pwm24_2;
|
||||
extern unsigned int temp;
|
||||
extern _iq temperature_limit_koeff;
|
||||
extern INVERTER_TEMPERATURES temperature_warning_BI1;
|
||||
extern INVERTER_TEMPERATURES temperature_warning_BI2;
|
||||
extern RECTIFIER_TEMPERATURES temperature_warning_BV1;
|
||||
extern RECTIFIER_TEMPERATURES temperature_warning_BV2;
|
||||
extern TERMINAL_CAN_SETUP terminal_can_setup;
|
||||
extern TETTA_CALC tetta_calc;
|
||||
extern int timCNT_alg;
|
||||
extern int timCNT_prev;
|
||||
extern unsigned int time;
|
||||
extern float time_alg;
|
||||
extern long time_pause_enable_can_from_mpu;
|
||||
extern long time_pause_enable_can_from_terminal;
|
||||
extern int time_pause_logs;
|
||||
extern int time_pause_titles;
|
||||
extern volatile int tryNumb;
|
||||
extern UNITES_CAN_SETUP unites_can_setup;
|
||||
extern VECTOR_CONTROL vect_control;
|
||||
extern WaterCooler water_cooler;
|
||||
extern _iq winding_displacement;
|
||||
extern Word word;
|
||||
extern WordReversed wordReversed;
|
||||
extern WordToReverse wordToReverse;
|
||||
extern X_PARALLEL_BUS x_parallel_bus_project;
|
||||
extern X_SERIAL_BUS x_serial_bus_project;
|
||||
extern unsigned int xeeprom_controll_fast;
|
||||
extern unsigned int xeeprom_controll_store;
|
||||
extern XPWM_TIME xpwm_time;
|
||||
extern _iq zadan_Id_min;
|
||||
extern int zero_ADC[20];
|
||||
|
||||
|
||||
// Îïðåäåëåíèå ìàññèâà ñ óêàçàòåëÿìè íà ïåðåìåííûå äëÿ îòëàäêè
|
||||
int DebugVar_Qnt = 23;
|
||||
#pragma DATA_SECTION(dbg_vars,".dbgvar_info")
|
||||
DebugVar_t dbg_vars[] = {\
|
||||
{(char *)&ADC0finishAddr, pt_int16, t_iq_none, t_iq_none, "ADC0finish" }, \
|
||||
{(char *)&IQ_OUT_NOM, pt_float, t_iq_none, t_iq10, "IQ_OUT_NOM" }, \
|
||||
{(char *)&KmodTerm, pt_float, t_iq_none, t_iq10, "KmodTerm" }, \
|
||||
{(char *)&freqTerm, pt_float, t_iq_none, t_iq10, "freqTerm" }, \
|
||||
{(char *)&ADC_sf[0][0], pt_int16, t_iq_none, t_iq_none, "ADC_sf00" }, \
|
||||
{(char *)&ADC_sf[0][1], pt_int16, t_iq_none, t_iq_none, "ADC_sf01" }, \
|
||||
{(char *)&ADC_sf[0][2], pt_int16, t_iq_none, t_iq_none, "ADC_sf02" }, \
|
||||
{(char *)&ADC_sf[0][3], pt_int16, t_iq_none, t_iq_none, "ADC_sf03" }, \
|
||||
{(char *)&ADC_sf[0][4], pt_int16, t_iq_none, t_iq_none, "ADC_sf04" }, \
|
||||
{(char *)&ADC_sf[0][5], pt_int16, t_iq_none, t_iq_none, "ADC_sf05" }, \
|
||||
{(char *)&ADC_sf[0][6], pt_int16, t_iq_none, t_iq_none, "ADC_sf06" }, \
|
||||
{(char *)&ADC_sf[0][7], pt_int16, t_iq_none, t_iq_none, "ADC_sf07" }, \
|
||||
{(char *)&ADC_sf[0][8], pt_int16, t_iq_none, t_iq_none, "ADC_sf08" }, \
|
||||
{(char *)&ADC_sf[0][9], pt_int16, t_iq_none, t_iq_none, "ADC_sf09" }, \
|
||||
{(char *)&ADC_sf[0][10], pt_int16, t_iq_none, t_iq_none, "ADC_sf010" }, \
|
||||
{(char *)&ADC_sf[0][11], pt_int16, t_iq_none, t_iq_none, "ADC_sf011" }, \
|
||||
{(char *)&ADC_sf[0][12], pt_int16, t_iq_none, t_iq_none, "ADC_sf012" }, \
|
||||
{(char *)&ADC_sf[0][13], pt_int16, t_iq_none, t_iq_none, "ADC_sf013" }, \
|
||||
{(char *)&ADC_sf[0][14], pt_int16, t_iq_none, t_iq_none, "ADC_sf014" }, \
|
||||
{(char *)&ADC_sf[0][15], pt_int16, t_iq_none, t_iq_none, "ADC_sf015" }, \
|
||||
{(char *)&Bender[0].KOhms, pt_uint16, t_iq_none, t_iq_none, "Bend0.KOhm" }, \
|
||||
{(char *)&Bender[0].Times, pt_uint16, t_iq_none, t_iq_none, "Bend0.Time" }, \
|
||||
{(char *)&Bender[0].Error.all, pt_uint16, t_iq_none, t_iq_none, "Bend0.Err" }, \
|
||||
};
|
20181
structs.xml
20181
structs.xml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user