SM_CTRL  1.0
Управление генератором сигналов
sm_ctrl.h
Go to the documentation of this file.
1 /**
2 
3  \mainpage
4 
5  <h2>
6  C++ S-function для управления генератором сигналов
7  </h2>
8 
9  ####Входные порты
10  <list type="unnumbered" >
11  <item> START_IN - вход сигнала старта
12  <item> D0..D7 - произвольные параметры типа double
13  </list>
14 
15  ###Выходные порты
16  <list type="unnumbered" >
17  <item> START_OUT - выход сигнала старта
18  </list>
19 
20  По фронту START_IN происходит запись параметров D0..D7 в разделяемую память
21  и формирование сигнала на сбор данных, после подтверждения начала сбора данных
22  производится формирование фронта на выходе START_OUT
23 
24  При работе с приложением <b>simulink_a7dac</b> назначение параметров следующее:
25  <list type="unnumbered" >
26  <item> D0 - канал ЦАП 0 - частота сигнала
27  <item> D1 - канал ЦАП 0 - начальная фаза сигнала
28  <item> D2 - канал ЦАП 0 - амплитуда сигнала
29  <item> D3 - канал ЦАП 1 - частота сигнала
30  <item> D4 - канал ЦАП 1 - начальная фаза сигнала
31  <item> D5 - канал ЦАП 1 - амплитуда сигнала
32  <item> D6 - длина импульса в отсчётах тактовой частоты
33  <item> D7 - резерв
34  </list>
35  При работе с другими приложениями назначение параметров может быть другим.
36 
37  ### Основные функции и классы:
38  <list type="unnumbered" >
39  <item> BaseBlock - базовый класс для создания S-Function из библиотеки easyLink
40  <item> Block - класс S-Function sm_ctrl
41  <item> Block::start() - начало сеанса моделирования
42  <item> Block::outputs() - формирование выходных сигналов
43  <item> TF_SimulinkShared - обмен с приложением через разделяемую память
44  <item> TL_SharedMemoryWrapper - управление разделяемой памятью
45  </list>
46 
47 
48  Для реализации S-Function используется библиотека <b>easyLink-3.3.0</b>
49 
50  ### About easyLink-3.3.0
51 
52  easyLink is developed and maintained within the FEMTO-ST Institute located in
53  Besanзon, France and hosted by Renater.
54 
55  easyLink official site is: http://sourcesup.renater.fr/easylink/
56 
57  contact: Guillaume J. Laurent, http://www.femto-st.fr/~guillaume.laurent/
58 
59 
60 
61  */
62 
63 #define S_FUNCTION_NAME sm_ctrl
64 
65 
66 //------------------------------------------------------------------------------
67 // Specify the number, the type and the sizes of the parameters of the block
68 // A parameter is set to tunable if its values can change during the simulation
69 //
70 // The possible types of the paramaters are:
71 // * 1 for real parameters (scalar or array, use -1 as size to specify
72 // a dynamically dimensioned array)
73 // * 2 for literal string parameters
74 // * 3 for literal identifiers of MATLAB variables
75 //
76 //------------------------------------------------------------------------------
77 #define PARAMETER_NUMBER 1
78 //enum parameterName { PAR1, PAR2, PAR3, PAR4, PAR5, PAR6 };
79 //int parameterType[PARAMETER_NUMBER] = { 1, 1, 1, 1, 2, 3 };
80 //int parameterRows[PARAMETER_NUMBER] = { 1, 2, 1, -1, -1, -1 };
81 //int parameterCols[PARAMETER_NUMBER] = { 1, 3, -1, -1, 1, 1 };
82 //int parameterTunable[PARAMETER_NUMBER] = { 1, 0, 1, 1, 1, 1 };
83 
89 
90 
91 #define INPUT_PORT_NUMBER 9
92 enum inputPortName { START_IN, D0, D1, D2, D3, D4, D5, D6, D7 };
93 int inputPortRows[INPUT_PORT_NUMBER] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
94 int inputPortCols[INPUT_PORT_NUMBER] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
95 
96 const int blockSize = 16384;
97 
98 //------------------------------------------------------------------------------
99 // Specify the number and the sizes of the output ports of the block
100 //
101 // Use -1 to specify a dynamically dimensioned output signal
102 //------------------------------------------------------------------------------
103 #define OUTPUT_PORT_NUMBER 1
107 
108 //------------------------------------------------------------------------------
109 #include "easylink.h"
110 
111 class TF_SimulinkShared;
112 
113 
114 //------------------------------------------------------------------------------
115 class Block : public BaseBlock
116 {
117 
118 private:
119 
120  //double *waveform;
121  //double data;
122  //int cnt;
123  //int flag;
126 
129 
131 
132  unsigned indexReq;
133  unsigned indexWr;
134 
137 
139 
140 public:
141 
142  void start();
143 
144  void outputs();
145 
146  void terminate();
147 };
148 
149 //------------------------------------------------------------------------------
150 #include "mdldefinitions.h"
151 
152 //------------------------------------------------------------------------------
#define PARAMETER_NUMBER
Definition: sm_ctrl.h:77
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:84
int flagError
Definition: sm_ctrl.h:130
unsigned indexWr
Definition: sm_ctrl.h:133
int flagLowVal_0
Definition: sm_ctrl.h:124
unsigned indexReq
Definition: sm_ctrl.h:132
outputPortName
Definition: baseblock.h:28
parameterName
Definition: baseblock.h:36
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:92
void outputs()
Definition: sm_adc.cpp:92
int outputPortRows[OUTPUT_PORT_NUMBER]
Definition: sm_ctrl.h:105
void start()
Definition: sm_adc.cpp:14
void terminate()
Definition: sm_adc.cpp:260
Definition: sm_ctrl.h:115
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:92
int flagHighVal_0
Definition: sm_ctrl.h:127
int inputPortCols[INPUT_PORT_NUMBER]
Definition: sm_ctrl.h:94
int flagHighVal_1
Definition: sm_ctrl.h:128
string m_SharedFileName
Definition: sm_ctrl.h:136
int outputPortCols[OUTPUT_PORT_NUMBER]
Definition: sm_ctrl.h:106
int parameterType[PARAMETER_NUMBER]
Definition: sm_ctrl.h:85
int inputPortRows[INPUT_PORT_NUMBER]
Definition: sm_ctrl.h:93
Definition: sm_ctrl.h:92
inputPortName
Definition: baseblock.h:20
Definition: sm_ctrl.h:92
TF_SimulinkShared * m_pSimulinkShared
Definition: sm_ctrl.h:138
int m_DataSize
Definition: sm_ctrl.h:135
int parameterRows[PARAMETER_NUMBER]
Definition: sm_ctrl.h:86
const int blockSize
Definition: sm_ctrl.h:96
int parameterCols[PARAMETER_NUMBER]
Definition: sm_ctrl.h:87
#define INPUT_PORT_NUMBER
Definition: sm_ctrl.h:91
#define OUTPUT_PORT_NUMBER
Definition: sm_ctrl.h:103
int flagLowVal_1
Definition: sm_ctrl.h:125
int parameterTunable[PARAMETER_NUMBER]
Definition: sm_ctrl.h:88