motorcontroldemo_035/Vinclude/SM_CmdLogic.h
Dmitry Shpak a99491f9b8 Основные обновления в данном коммите:
- проект переведён на VectorIDE v1.3

В целях экономии памяти удалены:
 - модуль управления светодиодами
 - модуль ШИМ для двигателей SRD
 - модуль часов реального времени
 - режим привода для измерения задержки меджу сигналами ШИМ и измерениями токов

Добавлены следующие модули:
 - проект переведён на VectorIDE v1.3
 - модуль SPI для абсолютного ДПР
 - модуль управление реле для заряда ЗПТ
 - модуль дискретных вводов-выводов
 - модуль управления вентилятором Одноплатного Инвертора
 - модуль тормозного резистора Одноплатного Инвертора

Прочие изменения:
 - оптимизирована инициализация регистров периферии
 - удалено множество неиспользуемых переменных
 - разрешение работы всех GPIO перенесено в функцию "PeripheralClockEnable"
 - добавлен счётчик индексной метки энкодера
 - исправлен сброс прерываний модуля захвата CAP
 - переработан режим задания постоянного тока статора
- исправлены прочие мелкие ошибки в разных модулях
2021-12-01 13:54:14 +03:00

92 lines
2.6 KiB
C

/*!
Copyright 2017 ÀÎ "ÍÈÈÝÒ" è ÎÎÎ "ÍÏÔ ÂÅÊÒÎÐ"
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
\file SMCmdLogic.h
\brief Îáðàáîòêà êîìàíä è çàäàíèé, ïîñòóïàþùèõ èç ðàçëè÷íûõ èñòî÷íèêîâ. (ñì. TSM_CmdLogic)
\author ÎÎÎ "ÍÏÔ Âåêòîð". http://motorcontrol.ru
\version v 2.0 25/03/2016
\defgroup SMCmdLogic Îáðàáîòêà êîìàíä è çàäàíèé, ïîñòóïàþùèõ èç ðàçëè÷íûõ èñòî÷íèêîâ. (ñì. TSM_CmdLogic)
@{
*/
#ifndef SM_CmdLogicH
#define SM_CmdLogicH
#include "V_common.h"
#ifdef __cplusplus
extern "C"
{
#endif
//! Ñèñòåìà îñòàíîâëåíà, ãîòîâà ê çàïóñêó (ÃÎÒÎÂ)
#define CMD_LOGIC_TURNED_OFF 0x0
//! Ñîñòîÿíèå ÐÀÁÎÒÀ
#define CMD_LOGIC_TURNED_ON 0x2
/*! \class TSM_CmdLogic
\brief Îáðàáîòêà êîìàíä è çàäàíèé, ïîñòóïàþùèõ èç ðàçëè÷íûõ èñòî÷íèêîâ.
Êëàññ \a TSM_CmdLogic, îñíîâàííûé íà ñòðóêòóðå SSMCmdLogic, ñëóæèò äëÿ îáðàáîòêè êîìàíä
îïåðàòèâíîãî óïðàâëåíèÿ è çàäàíèÿ ñêîðîñòè. Êîìàíäû ìîãóò ïîñòóïàòü êàê ïî CANOpen,
òàê è ïî äðóãèì ïðîòîêîëàì (ModBus). Ñîäåðæèò äèñêðåòíûé àâòîìàò, êîòîðûé ïåðåêëþ÷àåò
ñèñòåìó ìåæäó ñîñòîÿíèÿìè ÐÀÁÎÒÀ è ÎÑÒÀÍÎÂ (ÃÎÒÎÂ).
*/
//! ñì. TSM_CmdLogic
struct SSM_CmdLogic
{
int16 state;//!<Cîñòîÿíèå
int16 state_prev;//!<Ïðåäûäóùåå ñîñòîÿíèå
int16 E;//!<Ôëàã ïåðâîãî âõîæäåíèÿ
TCmd cmd_by_level_prev;//!<Ïðåäûäóùåå ñîñòîÿíèå êîìàíäíîãî ñëîâà
void (*init)(volatile struct SSM_CmdLogic*);//!< Pointer to the init funcion
void (*slow_calc)(volatile struct SSM_CmdLogic*);//!< Pointer to the calc funtion
void (*ms_calc)(volatile struct SSM_CmdLogic*); //!< Pointer to the calc funtion
};
typedef volatile struct SSM_CmdLogic TSM_CmdLogic;
//! Èíèöèàëèçàòð ïî óìîë÷àíèþ
#define SM_CMD_LOGIC_DEFAULTS {.init = SM_CmdLogicInit,\
.slow_calc = SM_CmdLogicSlow_Calc,\
.ms_calc = SM_CmdLogicms_Calc}
//! \memberof TSM_CmdLogic
void SM_CmdLogicInit(TSM_CmdLogic*);
//! \memberof TSM_CmdLogic
void SM_CmdLogicSlow_Calc(TSM_CmdLogic*);
//! \memberof TSM_CmdLogic
void SM_CmdLogicms_Calc(TSM_CmdLogic*);
#ifdef __cplusplus
}
#endif
#endif
/*@}*/