SM_CTRL  1.0
Управление генератором сигналов
sm_ctrl.cpp
Go to the documentation of this file.
1 
2 
3 #include "sm_ctrl.h"
4 #include "TF_SimulinkShared.h"
5 
6 //------------------------------------------------------------------------------
7 void Block::start()
8 {
9  printf("Starting the s-function for outputs testing...\n");
10 
11 
12  flagLowVal_0=0;
13  flagLowVal_1=0;
14 
15  flagError=0;
16  indexReq=0;
17  indexWr=0;
18 
20 
21  m_DataSize = blockSize; // к этому моменту размер выходного массива уже определён
22 
23 
24 
25  printf( "DATA_SIZE=%d\n", m_DataSize );
26  printf( "FNAME = %s\n", m_SharedFileName.c_str() );
27 
28  m_pSimulinkShared = new TF_SimulinkShared( "SimulinkCtrl" );
29 
30  U32 timeout=0;
31  for( ; ; )
32  {
33  U32 flag = m_pSimulinkShared->GetFlag( 1 ); // SIG
34  if( 0xAA55 == flag )
35  {
36  break;
37  }
38  Sleep( 1 );
39  timeout++;
40 
41  if( timeout>60*1000 )
42  {
43  flagError=1;
44  return;
45  }
46 
47  }
48 
49 
50  m_pSimulinkShared->SetFlag( 2, 0xB422 ); // START
51  for( ; ; )
52  {
53  U32 flag = m_pSimulinkShared->GetFlag( 2 ); // START
54  if( 0xB410 == flag )
55  {
56  // Сеанс моделирования запущен
57  break;
58  }
59  Sleep( 1 );
60  timeout++;
61  if( timeout>60*1000 )
62  {
63  flagError=2;
64  return;
65  }
66 
67  flag = m_pSimulinkShared->GetFlag( 1 );
68  if( 0==flag )
69  {
70  flagError=21;
71  return;
72  }
73 
74 
75  }
76  m_pSimulinkShared->SetFlag( 2, 0xB000 ); // START
77 
78 }
79 
80 void Block::outputs()
81 {
82 
83  if( flagError )
84  return;
85 
86  double start = getInputDouble(START_IN);
87 // double get_data = getInputDouble(GET_DATA);
88 
89  if( start<0.4 )
90  {
91  flagLowVal_0=1;
92  if( 1==flagHighVal_0 )
93  {
95  flagHighVal_0=0;
96  }
97  }
98 
99  //if( get_data<0.4 )
100  //{
101  // flagLowVal_1=1;
102  //}
103 
104 
105 
107 
108  if( (start>0.5) && (flagLowVal_0==1) )
109  {
110  flagLowVal_0=0;
111 
112  double sourceParam[8];
113 
114  sourceParam[0]=getInputDouble( D0 );
115  sourceParam[1]=getInputDouble( D1 );
116  sourceParam[2]=getInputDouble( D2 );
117  sourceParam[3]=getInputDouble( D3 );
118  sourceParam[4]=getInputDouble( D4 );
119  sourceParam[5]=getInputDouble( D5 );
120  sourceParam[6]=getInputDouble( D6 );
121  sourceParam[7]=getInputDouble( D7 );
122 
123  for( int ii=0; ii<8; ii++ )
124  {
125  m_pSimulinkShared->SetDoubleParam( ii, sourceParam[ii] );
126  }
127 
128 
129  indexReq++;
131 
132  U32 timeout=0;
133  U32 flag;
134  for( ; ; )
135  {
136  flag = m_pSimulinkShared->GetFlag( 11 );
137  if( flag==indexReq )
138  {
139  break;
140  }
141  timeout++;
142  if( timeout>10000 )
143  {
144  Sleep(1);
145  }
146  if( timeout>60000 )
147  {
148  flagError=4;
149  break;
150  }
151 
152  flag = m_pSimulinkShared->GetFlag( 2 ); // START
153  if( 0==flag )
154  {
155  flagError=5; // Перезапуск программы сбора
156  }
157 
158  flag = m_pSimulinkShared->GetFlag( 1 ); // SIG
159  if( 0==flag )
160  {
161  flagError=6; // Перезапуск программы сбора
162  }
163 
164  if( flagError )
165  break;
166  }
167 
168 
169 
171  flagHighVal_0 = 1;
172  }
173 
174 }
175 
176 void Block::terminate()
177 {
178  printf("Terminating the s-function for outputs testing.\n");
179 }
180 
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:84
int flagError
Definition: sm_ctrl.h:130
static double getInputDouble(int port)
Definition: baseblock.h:326
unsigned indexWr
Definition: sm_ctrl.h:133
int flagLowVal_0
Definition: sm_ctrl.h:124
static string getParameterString(int port)
Definition: baseblock.h:476
unsigned indexReq
Definition: sm_ctrl.h:132
static void setOutputDouble(int port, double value)
Definition: baseblock.h:390
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:92
void outputs()
Definition: sm_adc.cpp:92
void start()
Definition: sm_adc.cpp:14
void terminate()
Definition: sm_adc.cpp:260
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:92
int flagHighVal_0
Definition: sm_ctrl.h:127
string m_SharedFileName
Definition: sm_ctrl.h:136
Definition: sm_ctrl.h:92
Definition: sm_ctrl.h:92
TF_SimulinkShared * m_pSimulinkShared
Definition: sm_ctrl.h:138
static void initializeSampleTimes()
Definition: baseblock.h:243
int m_DataSize
Definition: sm_ctrl.h:135
const int blockSize
Definition: sm_ctrl.h:96
int flagLowVal_1
Definition: sm_ctrl.h:125