сделано ленивое раскрытие подпеременных в структурах

(баово заглушки и если они раскрываются,то подставляются реальнгые)
This commit is contained in:
Razvalyaev 2025-07-14 14:57:32 +03:00
parent c738acd871
commit 6428e523df
7 changed files with 1620 additions and 1555 deletions

Binary file not shown.

View File

@ -222,8 +222,8 @@ class VarEditor(QWidget):
var_data = { var_data = {
'name': name_edit.text(), 'name': name_edit.text(),
'type': 'pt_' + pt_type_combo.currentText(), 'type': 'pt_' + pt_type_combo.currentText(),
'iq_type': iq_combo.currentText(), 'iq_type': 't_' + iq_combo.currentText(),
'return_type': ret_combo.currentText() if ret_combo.currentText() else 'int', 'return_type': 't_' + ret_combo.currentText() if ret_combo.currentText() else 't_iq_none',
'short_name': short_name_edit.text(), 'short_name': short_name_edit.text(),
} }
vars_out.append(var_data) vars_out.append(var_data)
@ -352,15 +352,15 @@ class VarEditor(QWidget):
super().keyPressEvent(event) super().keyPressEvent(event)
def __browse_makefile(self): def __browse_makefile(self):
file_path, _ = QFileDialog.getOpenFileName( file_path, _ = QFileDialog.getOpenFileName(
self, "Выберите Makefile", filter="Makefile (makefile);;All Files (*)" self, "Выберите Makefile", filter="Makefile (makefile);;All Files (*)"
) )
if file_path and self.proj_path: if file_path and self.proj_path:
path = myXML.make_relative_path(file_path, self.proj_path) path = myXML.make_relative_path(file_path, self.proj_path)
else: else:
path = file_path path = file_path
self.makefile_edit.setText(path) self.makefile_edit.setText(path)
self.makefile_path = path self.makefile_path = path
def __browse_source_output(self): def __browse_source_output(self):
dir_path = QFileDialog.getExistingDirectory(self, "Выберите папку для debug_vars.c") dir_path = QFileDialog.getExistingDirectory(self, "Выберите папку для debug_vars.c")
@ -399,21 +399,24 @@ class VarEditor(QWidget):
def __after_scanvars_finished(self): def __after_scanvars_finished(self):
self.update_all_paths()
if not os.path.isfile(self.xml_path): if not os.path.isfile(self.xml_path):
self.makefile_path = None
self.structs_path = None
self.proj_path = None
QMessageBox.critical(self, "Ошибка", f"Файл не найден: {self.xml_path}") QMessageBox.critical(self, "Ошибка", f"Файл не найден: {self.xml_path}")
return return
try: try:
self.update_all_paths()
self.update()
except Exception as e:
self.makefile_path = None self.makefile_path = None
self.structs_path = None self.structs_path = None
self.proj_path = None self.proj_path = None
self.update()
except Exception as e:
QMessageBox.critical(self, "Ошибка", f"Не удалось загрузить переменные:\n{e}") QMessageBox.critical(self, "Ошибка", f"Не удалось загрузить переменные:\n{e}")
def delete_selected_rows(self): def delete_selected_rows(self):
# Получаем имена всех выбранных переменных из первого столбца # Получаем имена всех выбранных переменных из первого столбца
selected_names = self.table.get_selected_var_names() selected_names = self.table.get_selected_var_names()

View File

@ -142,10 +142,21 @@ class VariableSelectorDialog(QDialog):
self.update_vars_widget() self.update_vars_widget()
def update_vars_widget(self): def update_vars_widget(self):
t_start = time.perf_counter()
t1 = time.perf_counter()
self.selected_vars, self.unselected_vars = setupVars.split_vars_by_show_flag(self.expanded_vars) self.selected_vars, self.unselected_vars = setupVars.split_vars_by_show_flag(self.expanded_vars)
t2 = time.perf_counter()
self.vars_widget.set_data(self.unselected_vars) self.vars_widget.set_data(self.unselected_vars)
t3 = time.perf_counter()
self.vars_widget.filter_tree() self.vars_widget.filter_tree()
t4 = time.perf_counter()
self.selected_vars_widget.set_data(self.selected_vars) self.selected_vars_widget.set_data(self.selected_vars)
t5 = time.perf_counter()
self.selected_vars_widget.filter_tree() self.selected_vars_widget.filter_tree()

View File

@ -7,6 +7,10 @@ from PySide2.QtGui import QKeyEvent
from PySide2.QtCore import Qt, QStringListModel from PySide2.QtCore import Qt, QStringListModel
import pickle import pickle
import time import time
import hashlib
def compute_vars_hash(vars_list):
return hashlib.sha1(pickle.dumps(vars_list)).hexdigest()
# Вспомогательные функции, которые теперь будут использоваться виджетом # Вспомогательные функции, которые теперь будут использоваться виджетом
def split_path(path): def split_path(path):
@ -145,6 +149,7 @@ class VariableSelectWidget(QWidget):
self.is_autocomplete_on = True # <--- ДОБАВИТЬ ЭТУ СТРОКУ self.is_autocomplete_on = True # <--- ДОБАВИТЬ ЭТУ СТРОКУ
self._bckspc_pressed = False self._bckspc_pressed = False
self.manual_completion_active = False self.manual_completion_active = False
self._vars_hash = None
# --- UI Элементы --- # --- UI Элементы ---
self.search_input = QLineEdit() self.search_input = QLineEdit()
@ -159,6 +164,7 @@ class VariableSelectWidget(QWidget):
QTreeWidget::item:selected { background-color: #87CEFA; color: black; } QTreeWidget::item:selected { background-color: #87CEFA; color: black; }
QTreeWidget::item:hover { background-color: #D3D3D3; } QTreeWidget::item:hover { background-color: #D3D3D3; }
""") """)
self.tree.itemExpanded.connect(self.on_item_expanded)
self.completer = QCompleter() self.completer = QCompleter()
self.completer.setCompletionMode(QCompleter.PopupCompletion) self.completer.setCompletionMode(QCompleter.PopupCompletion)
@ -193,52 +199,49 @@ class VariableSelectWidget(QWidget):
def populate_tree(self, vars_list=None): def populate_tree(self, vars_list=None):
if vars_list is None: if vars_list is None:
vars_list = self.expanded_vars vars_list = self.expanded_vars
new_hash = compute_vars_hash(vars_list)
if self._vars_hash == new_hash:
return
self._vars_hash = new_hash
self.tree.setUpdatesEnabled(False) self.tree.setUpdatesEnabled(False)
self.tree.blockSignals(True) self.tree.blockSignals(True)
self.tree.clear() self.tree.clear()
self.node_index.clear() self.node_index.clear()
start_add = time.perf_counter()
stats = {'count': 0, 'time': 0.0}
for var in vars_list:
self.add_tree_item_recursively(None, var, stats)
end_add = time.perf_counter()
print(f" add items: {end_add - start_add:.6f} s") for var in vars_list:
print(f" └ recursive only: {stats['time']:.6f} s") self.add_tree_item_lazy(None, var)
print(f" └ total items: {stats['count']} шт")
self.tree.setUpdatesEnabled(True) self.tree.setUpdatesEnabled(True)
self.tree.blockSignals(False) self.tree.blockSignals(False)
header = self.tree.header() header = self.tree.header()
header.setSectionResizeMode(QHeaderView.Interactive) # вручную можно менять header.setSectionResizeMode(QHeaderView.Interactive)
header.setSectionResizeMode(1, QHeaderView.Stretch)
self.tree.setColumnWidth(0, 400) self.tree.setColumnWidth(0, 400)
self.tree.resizeColumnToContents(1)
def on_item_expanded(self, item):
if self.is_lazy_item(item):
item.removeChild(item.child(0))
var = item.data(0, Qt.UserRole + 100)
if var:
for child_var in var.get('children', []):
self.add_tree_item_lazy(item, child_var)
def get_full_item_name(self, item): def get_full_item_name(self, item):
names = [] fullname = item.text(0)
while item:
names.append(item.text(0))
item = item.parent()
fullname = '.'.join(reversed(names))
# Заменяем '->' на '.' # Заменяем '->' на '.'
fullname = fullname.replace('->', '.') fullname = fullname.replace('->', '.')
fullname = fullname.replace('[', '.[')
return fullname return fullname
def add_tree_item_lazy(self, parent, var):
def add_tree_item_recursively(self, parent, var, stats=None, parent_path=""):
if stats is None:
stats = {'count': 0, 'time': 0.0}
start = time.perf_counter()
name = var['name'] name = var['name']
full_name = f"{parent_path}.{name}" if parent_path else name
full_name = full_name.replace('->', '.') # если нужно
type_str = var.get('type', '') type_str = var.get('type', '')
item = QTreeWidgetItem([name, type_str]) item = QTreeWidgetItem([name, type_str])
item.setData(0, Qt.UserRole, name) item.setData(0, Qt.UserRole, name)
full_name = self.get_full_item_name(item)
self.node_index[full_name.lower()] = item self.node_index[full_name.lower()] = item
if "(bitfield:" in type_str: if "(bitfield:" in type_str:
@ -253,14 +256,14 @@ class VariableSelectWidget(QWidget):
else: else:
parent.addChild(item) parent.addChild(item)
stats['count'] += 1 # Если есть дети — добавляем заглушку (чтобы можно было раскрыть)
if var.get('children'):
dummy = QTreeWidgetItem(["lazy_marker"])
item.addChild(dummy)
for child in var.get('children', []): # Кэшируем детей для подгрузки по событию
self.add_tree_item_recursively(item, child, stats, parent_path=full_name) item.setData(0, Qt.UserRole + 100, var) # Сохраняем var целиком
end = time.perf_counter()
stats['time'] += end - start
return stats
def filter_tree(self): def filter_tree(self):
@ -373,7 +376,7 @@ class VariableSelectWidget(QWidget):
if not name_parts: if not name_parts:
continue continue
last_part = name_parts[-1].lower() last_part = name_parts[-1].lower()
if prefix == '' or last_part.startswith(prefix): # ← строго startswith if prefix == '' or prefix in last_part: # ← строго startswith
completions.append(name) completions.append(name)
self.completer.setModel(QStringListModel(completions)) self.completer.setModel(QStringListModel(completions))
@ -386,6 +389,7 @@ class VariableSelectWidget(QWidget):
if name is None: if name is None:
return None return None
normalized_name = name.replace('->', '.').lower() normalized_name = name.replace('->', '.').lower()
normalized_name = normalized_name.replace('[', '.[').lower()
return self.node_index.get(normalized_name) return self.node_index.get(normalized_name)
def insert_completion(self, text): def insert_completion(self, text):
@ -514,13 +518,17 @@ class VariableSelectWidget(QWidget):
item.setToolTip(1, text) item.setToolTip(1, text)
def get_all_items(self): def get_all_items(self):
"""Возвращает все конечные (leaf) элементы, исключая битовые поля и элементы с детьми.""" """Возвращает все конечные (leaf) элементы, исключая битовые поля и элементы с детьми (реальными)."""
def collect_leaf_items(parent): def collect_leaf_items(parent):
leaf_items = [] leaf_items = []
for i in range(parent.childCount()): for i in range(parent.childCount()):
child = parent.child(i) child = parent.child(i)
if child.isHidden(): if child.isHidden():
continue continue
# Если есть заглушка — раскрываем
self.on_item_expanded(child)
if child.childCount() == 0: if child.childCount() == 0:
item_type = child.text(1) item_type = child.text(1)
if item_type and 'bitfield' in str(item_type).lower(): if item_type and 'bitfield' in str(item_type).lower():
@ -533,6 +541,10 @@ class VariableSelectWidget(QWidget):
all_leaf_items = [] all_leaf_items = []
for i in range(self.tree.topLevelItemCount()): for i in range(self.tree.topLevelItemCount()):
top = self.tree.topLevelItem(i) top = self.tree.topLevelItem(i)
# Раскрываем lazy, если надо
self.on_item_expanded(top)
if top.childCount() == 0: if top.childCount() == 0:
item_type = top.text(1) item_type = top.text(1)
if item_type and 'bitfield' in str(item_type).lower(): if item_type and 'bitfield' in str(item_type).lower():
@ -543,17 +555,17 @@ class VariableSelectWidget(QWidget):
return all_leaf_items return all_leaf_items
def get_all_var_names(self):
"""Возвращает имена всех конечных (leaf) переменных, исключая битовые поля и группы."""
return [item.text(0) for item in self.get_all_items() if item.text(0)]
def _get_internal_selected_items(self): def _get_internal_selected_items(self):
"""Возвращает выделенные элементы и всех их потомков.""" """Возвращает выделенные элементы и всех их потомков, включая lazy."""
selected = self.tree.selectedItems() selected = self.tree.selectedItems()
all_items = [] all_items = []
def collect_children(item): def collect_children(item):
# Раскрываем при необходимости
# Раскрываем lazy, если надо
self.on_item_expanded(item)
items = [item] items = [item]
for i in range(item.childCount()): for i in range(item.childCount()):
child = item.child(i) child = item.child(i)
@ -565,23 +577,34 @@ class VariableSelectWidget(QWidget):
return all_items return all_items
def _get_internal_selected_var_names(self):
"""Возвращает имена выделенных переменных."""
return [item.text(0) for item in self._get_internal_selected_items() if item.text(0)]
def get_selected_items(self): def get_selected_items(self):
"""Возвращает только конечные (leaf) выделенные элементы, исключая bitfield.""" """Возвращает только конечные (leaf) выделенные элементы, исключая bitfield."""
selected = self.tree.selectedItems() selected = self.tree.selectedItems()
leaf_items = [] leaf_items = []
for item in selected: for item in selected:
# Проверка: если нет выбранных/видимых детей — это лист # Раскрываем lazy, если надо
self.on_item_expanded(item)
# Если у узла нет видимых/выделенных детей — он лист
if all(item.child(i).isHidden() or not item.child(i).isSelected() for i in range(item.childCount())): if all(item.child(i).isHidden() or not item.child(i).isSelected() for i in range(item.childCount())):
item_type = item.data(0, Qt.UserRole) item_type = item.data(0, Qt.UserRole)
if item_type and 'bitfield' in str(item_type).lower(): if item_type and 'bitfield' in str(item_type).lower():
continue # Пропускаем битовые поля continue
leaf_items.append(item) leaf_items.append(item)
return leaf_items return leaf_items
def is_lazy_item(self, item):
return item.childCount() == 1 and item.child(0).text(0) == 'lazy_marker'
def get_all_var_names(self):
"""Возвращает имена всех конечных (leaf) переменных, исключая битовые поля и группы."""
return [item.text(0) for item in self.get_all_items() if item.text(0)]
def _get_internal_selected_var_names(self):
"""Возвращает имена выделенных переменных."""
return [item.text(0) for item in self._get_internal_selected_items() if item.text(0)]
def get_selected_var_names(self): def get_selected_var_names(self):

View File

@ -3,34 +3,34 @@
// Èíêëþäû äëÿ äîñòóïà ê ïåðåìåííûì // Èíêëþäû äëÿ äîñòóïà ê ïåðåìåííûì
#include "v_pwm24.h"
#include "f281xpwm.h"
#include "xp_project.h" #include "xp_project.h"
#include "RS_Functions_modbus.h" #include "RS_Functions_modbus.h"
#include "pwm_vector_regul.h" #include "adc_tools.h"
#include "errors.h" #include "errors.h"
#include "pwm_vector_regul.h"
#include "vector.h"
#include "f281xpwm.h"
#include "log_can.h"
#include "v_pwm24.h"
#include "xp_write_xpwm_time.h"
#include "rotation_speed.h" #include "rotation_speed.h"
#include "teta_calc.h" #include "teta_calc.h"
#include "vector.h"
#include "adc_tools.h"
#include "log_can.h"
#include "xp_write_xpwm_time.h"
#include "dq_to_alphabeta_cos.h" #include "dq_to_alphabeta_cos.h"
#include "svgen_dq.h" #include "xp_controller.h"
#include "x_parallel_bus.h" #include "x_parallel_bus.h"
#include "x_serial_bus.h"
#include "xPeriphSP6_loader.h" #include "xPeriphSP6_loader.h"
#include "Spartan2E_Functions.h" #include "Spartan2E_Functions.h"
#include "xp_controller.h" #include "x_serial_bus.h"
#include "xp_rotation_sensor.h" #include "xp_rotation_sensor.h"
#include "RS_Functions.h" #include "RS_Functions.h"
#include "detect_phase_break2.h" #include "detect_phase_break2.h"
#include "pid_reg3.h"
#include "log_params.h"
#include "CRC_Functions.h"
#include "global_time.h"
#include "CAN_Setup.h"
#include "log_to_memory.h" #include "log_to_memory.h"
#include "CRC_Functions.h"
#include "CAN_Setup.h"
#include "log_params.h"
#include "global_time.h"
#include "svgen_dq.h"
#include "pid_reg3.h"
#include "IQmathLib.h" #include "IQmathLib.h"
#include "doors_control.h" #include "doors_control.h"
#include "isolation.h" #include "isolation.h"

File diff suppressed because it is too large Load Diff

124
vars.xml
View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<analysis makefile_path="Debug/makefile" proj_path="E:/.WORK/TMS/TMS_new_bus" structs_path="Src/DebugTools/structs.xml"> <analysis proj_path="F:/Work/Projects/TMS/TMS_new_bus" makefile_path="Debug/makefile" structs_path="Src/DebugTools/structs.xml">
<variables> <variables>
<var name="ADC0finishAddr"> <var name="ADC0finishAddr">
<show_var>true</show_var> <show_var>true</show_var>
@ -1139,7 +1139,7 @@
<type>char</type> <type>char</type>
<file>Src/myLibs/bender.c</file> <file>Src/myLibs/bender.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="cmd_finish2"> <var name="cmd_finish2">
<show_var>false</show_var> <show_var>false</show_var>
@ -1151,7 +1151,7 @@
<type>char</type> <type>char</type>
<file>Src/myLibs/bender.c</file> <file>Src/myLibs/bender.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="cmd_start"> <var name="cmd_start">
<show_var>false</show_var> <show_var>false</show_var>
@ -1259,7 +1259,7 @@
<type>unsigned int</type> <type>unsigned int</type>
<file>Src/myXilinx/x_serial_bus.c</file> <file>Src/myXilinx/x_serial_bus.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="crc_16_tab"> <var name="crc_16_tab">
<show_var>false</show_var> <show_var>false</show_var>
@ -1295,7 +1295,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/message_modbus.c</file> <file>Src/myLibs/message_modbus.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="cur_position_buf_modbus16_can"> <var name="cur_position_buf_modbus16_can">
<show_var>false</show_var> <show_var>false</show_var>
@ -1319,7 +1319,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/message_modbus.c</file> <file>Src/myLibs/message_modbus.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="cycle"> <var name="cycle">
<show_var>false</show_var> <show_var>false</show_var>
@ -1343,7 +1343,7 @@
<type>int</type> <type>int</type>
<file>Src/main/init_protect_levels.c</file> <file>Src/main/init_protect_levels.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="data_to_umu1_8"> <var name="data_to_umu1_8">
<show_var>false</show_var> <show_var>false</show_var>
@ -1355,7 +1355,7 @@
<type>int</type> <type>int</type>
<file>Src/main/init_protect_levels.c</file> <file>Src/main/init_protect_levels.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="data_to_umu2_7f"> <var name="data_to_umu2_7f">
<show_var>false</show_var> <show_var>false</show_var>
@ -1367,7 +1367,7 @@
<type>int</type> <type>int</type>
<file>Src/main/init_protect_levels.c</file> <file>Src/main/init_protect_levels.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="data_to_umu2_8"> <var name="data_to_umu2_8">
<show_var>false</show_var> <show_var>false</show_var>
@ -1379,7 +1379,7 @@
<type>int</type> <type>int</type>
<file>Src/main/init_protect_levels.c</file> <file>Src/main/init_protect_levels.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="delta_capnum"> <var name="delta_capnum">
<show_var>false</show_var> <show_var>false</show_var>
@ -2015,7 +2015,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/bender.c</file> <file>Src/myLibs/bender.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="koef_Base_stop_run"> <var name="koef_Base_stop_run">
<show_var>false</show_var> <show_var>false</show_var>
@ -2255,7 +2255,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/bender.c</file> <file>Src/myLibs/bender.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="length"> <var name="length">
<show_var>false</show_var> <show_var>false</show_var>
@ -2351,7 +2351,7 @@
<type>int</type> <type>int</type>
<file>Src/main/PWMTMSHandle.c</file> <file>Src/main/PWMTMSHandle.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="mPWM_b"> <var name="mPWM_b">
<show_var>false</show_var> <show_var>false</show_var>
@ -2363,7 +2363,7 @@
<type>int</type> <type>int</type>
<file>Src/main/PWMTMSHandle.c</file> <file>Src/main/PWMTMSHandle.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="m_PWM"> <var name="m_PWM">
<show_var>false</show_var> <show_var>false</show_var>
@ -2507,7 +2507,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/modbus_read_table.c</file> <file>Src/myLibs/modbus_read_table.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="mzz_limit_1000"> <var name="mzz_limit_1000">
<show_var>false</show_var> <show_var>false</show_var>
@ -2519,7 +2519,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/modbus_read_table.c</file> <file>Src/myLibs/modbus_read_table.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="mzz_limit_1100"> <var name="mzz_limit_1100">
<show_var>false</show_var> <show_var>false</show_var>
@ -2531,7 +2531,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/modbus_read_table.c</file> <file>Src/myLibs/modbus_read_table.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="mzz_limit_1200"> <var name="mzz_limit_1200">
<show_var>false</show_var> <show_var>false</show_var>
@ -2543,7 +2543,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/modbus_read_table.c</file> <file>Src/myLibs/modbus_read_table.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="mzz_limit_1400"> <var name="mzz_limit_1400">
<show_var>false</show_var> <show_var>false</show_var>
@ -2555,7 +2555,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/modbus_read_table.c</file> <file>Src/myLibs/modbus_read_table.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="mzz_limit_1500"> <var name="mzz_limit_1500">
<show_var>false</show_var> <show_var>false</show_var>
@ -2567,7 +2567,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/modbus_read_table.c</file> <file>Src/myLibs/modbus_read_table.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="mzz_limit_2000"> <var name="mzz_limit_2000">
<show_var>false</show_var> <show_var>false</show_var>
@ -2579,7 +2579,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/modbus_read_table.c</file> <file>Src/myLibs/modbus_read_table.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="mzz_limit_500"> <var name="mzz_limit_500">
<show_var>false</show_var> <show_var>false</show_var>
@ -2591,7 +2591,7 @@
<type>int</type> <type>int</type>
<file>Src/myLibs/modbus_read_table.c</file> <file>Src/myLibs/modbus_read_table.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="new_cycle_fifo"> <var name="new_cycle_fifo">
<show_var>false</show_var> <show_var>false</show_var>
@ -3275,7 +3275,7 @@
<type>unsigned int</type> <type>unsigned int</type>
<file>Src/main/main22220.c</file> <file>Src/main/main22220.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="timePauseCAN_Messages"> <var name="timePauseCAN_Messages">
<show_var>false</show_var> <show_var>false</show_var>
@ -3287,7 +3287,7 @@
<type>unsigned int</type> <type>unsigned int</type>
<file>Src/main/main22220.c</file> <file>Src/main/main22220.c</file>
<extern>false</extern> <extern>false</extern>
<static>true</static> <static>True</static>
</var> </var>
<var name="time_alg"> <var name="time_alg">
<show_var>false</show_var> <show_var>false</show_var>
@ -3769,33 +3769,69 @@
<extern>false</extern> <extern>false</extern>
<static>false</static> <static>false</static>
</var> </var>
<var name="Bender[0].KOhms">
<show_var>true</show_var>
<enable>true</enable>
<shortname>Bender[0].KOhms</shortname>
<pt_type>pt_uint16</pt_type>
<iq_type>t_iq_none</iq_type>
<return_type>iq_none</return_type>
<type>unsigned int</type>
<file>Src/myLibs/bender.c</file>
<extern>false</extern>
<static>false</static>
</var>
<var name="Bender[0].Times">
<show_var>true</show_var>
<enable>true</enable>
<shortname>Bender[0].Times</shortname>
<pt_type>pt_uint16</pt_type>
<iq_type>t_iq_none</iq_type>
<return_type>iq_none</return_type>
<type>unsigned int</type>
<file>Src/myLibs/bender.c</file>
<extern>false</extern>
<static>false</static>
</var>
<var name="Bender[0].Error.all">
<show_var>true</show_var>
<enable>true</enable>
<shortname>Bender[0].Error.all</shortname>
<pt_type>pt_uint16</pt_type>
<iq_type>t_iq_none</iq_type>
<return_type>iq_none</return_type>
<type>unsigned int</type>
<file>Src/myLibs/bender.c</file>
<extern>false</extern>
<static>false</static>
</var>
</variables> </variables>
<includes> <includes>
<file>Src/myXilinx/xp_project.h</file>
<file>Src/myXilinx/RS_Functions_modbus.h</file>
<file>Src/main/adc_tools.h</file>
<file>Src/main/errors.h</file>
<file>Src/VectorControl/pwm_vector_regul.h</file>
<file>Src/main/vector.h</file> <file>Src/main/vector.h</file>
<file>Src/main/f281xpwm.h</file> <file>Src/main/errors.h</file>
<file>Src/myXilinx/RS_Functions_modbus.h</file>
<file>Src/myXilinx/xp_project.h</file>
<file>Src/main/adc_tools.h</file>
<file>Src/VectorControl/pwm_vector_regul.h</file>
<file>Src/myLibs/log_can.h</file> <file>Src/myLibs/log_can.h</file>
<file>Src/main/f281xpwm.h</file>
<file>Src/main/v_pwm24.h</file> <file>Src/main/v_pwm24.h</file>
<file>Src/myXilinx/xp_write_xpwm_time.h</file> <file>Src/myXilinx/xp_write_xpwm_time.h</file>
<file>Src/main/rotation_speed.h</file>
<file>Src/VectorControl/teta_calc.h</file>
<file>Src/VectorControl/dq_to_alphabeta_cos.h</file> <file>Src/VectorControl/dq_to_alphabeta_cos.h</file>
<file>Src/VectorControl/teta_calc.h</file>
<file>Src/main/rotation_speed.h</file>
<file>Src/myLibs/detect_phase_break2.h</file>
<file>Src/myXilinx/RS_Functions.h</file>
<file>Src/myXilinx/Spartan2E_Functions.h</file>
<file>Src/myXilinx/xp_controller.h</file> <file>Src/myXilinx/xp_controller.h</file>
<file>Src/myXilinx/xp_rotation_sensor.h</file>
<file>Src/myXilinx/x_serial_bus.h</file>
<file>Src/myXilinx/x_parallel_bus.h</file> <file>Src/myXilinx/x_parallel_bus.h</file>
<file>Src/myXilinx/xPeriphSP6_loader.h</file> <file>Src/myXilinx/xPeriphSP6_loader.h</file>
<file>Src/myXilinx/Spartan2E_Functions.h</file>
<file>Src/myXilinx/x_serial_bus.h</file>
<file>Src/myXilinx/xp_rotation_sensor.h</file>
<file>Src/myXilinx/RS_Functions.h</file>
<file>Src/myLibs/detect_phase_break2.h</file>
<file>Src/myLibs/log_to_memory.h</file>
<file>Src/myXilinx/CRC_Functions.h</file>
<file>Src/myLibs/CAN_Setup.h</file>
<file>Src/myLibs/log_params.h</file> <file>Src/myLibs/log_params.h</file>
<file>Src/myLibs/CAN_Setup.h</file>
<file>Src/myXilinx/CRC_Functions.h</file>
<file>Src/myLibs/log_to_memory.h</file>
<file>Src/main/global_time.h</file> <file>Src/main/global_time.h</file>
<file>Src/myLibs/svgen_dq.h</file> <file>Src/myLibs/svgen_dq.h</file>
<file>Src/myLibs/pid_reg3.h</file> <file>Src/myLibs/pid_reg3.h</file>
@ -4676,10 +4712,6 @@
<type>TMS_TO_TERMINAL_TEST_ALL_STRUCT</type> <type>TMS_TO_TERMINAL_TEST_ALL_STRUCT</type>
<file>Src/myXilinx/RS_Functions_modbus.c</file> <file>Src/myXilinx/RS_Functions_modbus.c</file>
</var> </var>
<var name="return_var">
<type>long</type>
<file>Src/main/Main.c</file>
</var>
<var name="rmp_freq"> <var name="rmp_freq">
<type>RMP_MY1</type> <type>RMP_MY1</type>
<file>Src/main/PWMTools.c</file> <file>Src/main/PWMTools.c</file>
@ -4820,10 +4852,6 @@
<type>UNITES_CAN_SETUP</type> <type>UNITES_CAN_SETUP</type>
<file>Src/myLibs/CAN_Setup.c</file> <file>Src/myLibs/CAN_Setup.c</file>
</var> </var>
<var name="var_numb">
<type>long</type>
<file>Src/main/Main.c</file>
</var>
<var name="vect_control"> <var name="vect_control">
<type>VECTOR_CONTROL</type> <type>VECTOR_CONTROL</type>
<file>Src/VectorControl/pwm_vector_regul.c</file> <file>Src/VectorControl/pwm_vector_regul.c</file>