Commit 5b54553bd36c92090aee4c1a178e4062d3869470

Authored by 김태훈
1 parent 337d4f1a3c
Exists in master and in 2 other branches fhd, fhd-demo

가스 오븐 프로토콜 반영

app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c
@@ -8,8 +8,8 @@ @@ -8,8 +8,8 @@
8 /** 8 /**
9 @file main_control.c 9 @file main_control.c
10 @date 2017/01/12 10 @date 2017/01/12
11 - @author 장길석 jks@falinux.com FALinux.Co.,Ltd.  
12 - @brief 온도조절기 제어 프로그램 11 + @author 占쏙옙轢 jks@falinux.com FALinux.Co.,Ltd.
  12 + @brief 占승듸옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占싸그뤄옙
13 13
14 @todo 14 @todo
15 @bug 15 @bug
@@ -17,8 +17,8 @@ @@ -17,8 +17,8 @@
17 @warning 17 @warning
18 */ 18 */
19 // 19 //
20 -// 저작권 에프에이리눅스(주)  
21 -// 외부공개 금지 20 +// 占쏙옙占쌜깍옙 占쏙옙占쏙옙占쏙옙占싱몌옙占쏙옙占쏙옙(占쏙옙)
  21 +// 占쌤부곤옙占쏙옙 占쏙옙占쏙옙
22 // 22 //
23 //---------------------------------------------------------------------------- 23 //----------------------------------------------------------------------------
24 24
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 #include <rs485_serial.h> 31 #include <rs485_serial.h>
32 #include <udp_gui.h> 32 #include <udp_gui.h>
33 33
34 -#define MAX_RETRY 3 // 전송 실패 시 재 전송 횟수 34 +#define MAX_RETRY 3 // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙 占쏙옙 占쏙옙占쏙옙 횟占쏙옙
35 #define MAX_BUFF_SIZE 1024 35 #define MAX_BUFF_SIZE 1024
36 36
37 enum step_t { 37 enum step_t {
@@ -63,25 +63,25 @@ static char buff[MAX_BUFF_SIZE]; @@ -63,25 +63,25 @@ static char buff[MAX_BUFF_SIZE];
63 static poll_obj_t *obj_uart; 63 static poll_obj_t *obj_uart;
64 static enum step_t step_work = STEP_CONTROL; 64 static enum step_t step_work = STEP_CONTROL;
65 static enum switch_t sw_uart = SW_WAIT_ADDRESS; 65 static enum switch_t sw_uart = SW_WAIT_ADDRESS;
66 -static char tx_data[MAX_BUFF_SIZE]; // 전송 데이터 버퍼  
67 -static int tx_szdata; // 전송 데이터 길이 66 +static char tx_data[MAX_BUFF_SIZE]; // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
  67 +static int tx_szdata; // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
68 static U8 rx_data[MAX_BUFF_SIZE]; 68 static U8 rx_data[MAX_BUFF_SIZE];
69 static int rx_index; 69 static int rx_index;
70 static int rx_szdata; 70 static int rx_szdata;
71 -static msec_t tm_recv; // 통신 상태 확인을 위한 시간 변수  
72 -static int cnt_retry; // 전송 실패에 대한 재 전송 횟수  
73 -static int bit_onoff19 = 0; // bit sw 0x19 변수 값  
74 -static int bit_onoff21 = 0; // bit sw 0x21 변수 값  
75 -static int bit_onoff22 = 0; // bit sw 0x22 변수 값  
76 -static U16 oven_error_bit = 0; // 오븐 에러 비트 값  
77 -static U16 ary_error_cnt[16]; // 에러 카운트 71 +static msec_t tm_recv; // 占쏙옙占 占쏙옙占쏙옙 확占쏙옙占쏙옙 占쏙옙占쏙옙 占시곤옙 占쏙옙占쏙옙
  72 +static int cnt_retry; // 占쏙옙占쏙옙 占쏙옙占싻울옙 占쏙옙占쏙옙 占쏙옙 占쏙옙占쏙옙 횟占쏙옙
  73 +static int bit_onoff19 = 0; // bit sw 0x19 占쏙옙占쏙옙 占쏙옙
  74 +static int bit_onoff21 = 0; // bit sw 0x21 占쏙옙占쏙옙 占쏙옙
  75 +static int bit_onoff22 = 0; // bit sw 0x22 占쏙옙占쏙옙 占쏙옙
  76 +static U16 oven_error_bit = 0; // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙트 占쏙옙
  77 +static U16 ary_error_cnt[16]; // 占쏙옙占쏙옙 카占쏙옙트
78 78
79 -static void run_step_work( int n_step); // 지정된 작업을 실행  
80 -static void run_next_step_work( void); // 다음 작업 실행 79 +static void run_step_work( int n_step); // 占쏙옙占쏙옙占쏙옙 占쌜억옙占쏙옙 占쏙옙占쏙옙
  80 +static void run_next_step_work( void); // 占쏙옙占쏙옙 占쌜억옙 占쏙옙占쏙옙
81 81
82 /** ---------------------------------------------------------------------------- 82 /** ----------------------------------------------------------------------------
83 -@brief WORD 바이트의 하위/상위 바이트 순서를 바꾼다.  
84 -@remark 빅엔디안을 리틀엔디안으로, 리틀엔디안을 빅엔디안으로 변경 83 +@brief WORD 占쏙옙占쏙옙트占쏙옙 占쏙옙占쏙옙/占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙占쏙옙 占쌕꾼댐옙.
  84 +@remark 占쏠엔듸옙占쏙옙占 占쏙옙틀占쏙옙占쏙옙占쏙옙占쏙옙占, 占쏙옙틀占쏙옙占쏙옙占쏙옙占 占쏠엔듸옙占쏙옙占쏙옙占 占쏙옙占쏙옙
85 @param - 85 @param -
86 @return - 86 @return -
87 -----------------------------------------------------------------------------*/ 87 -----------------------------------------------------------------------------*/
@@ -94,14 +94,14 @@ static void swap_byte( U16 *p16){ @@ -94,14 +94,14 @@ static void swap_byte( U16 *p16){
94 } 94 }
95 95
96 /** ---------------------------------------------------------------------------- 96 /** ----------------------------------------------------------------------------
97 -@brief uart로 실제 데이터 전송  
98 -@remark 데이터 전송후 uart 수신 단계를 초기화한다. 97 +@brief uart占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
  98 +@remark 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 uart 占쏙옙占쏙옙 占쌤계를 占십깍옙화占싼댐옙.
99 @param 99 @param
100 @return 100 @return
101 -----------------------------------------------------------------------------*/ 101 -----------------------------------------------------------------------------*/
102 static int write_to_uart( void){ 102 static int write_to_uart( void){
103 103
104 - { // 디버깅 코드, 전송 데이터를 바이트 단위로 출력 104 + { // 占쏙옙占쏙옙占 占쌘듸옙, 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙트 占쏙옙占쏙옙占쏙옙 占쏙옙占
105 int ndx; 105 int ndx;
106 106
107 printf( "send:"); 107 printf( "send:");
@@ -112,19 +112,19 @@ static int write_to_uart( void){ @@ -112,19 +112,19 @@ static int write_to_uart( void){
112 } 112 }
113 113
114 int rst = uart_write( obj_uart, tx_data, tx_szdata); 114 int rst = uart_write( obj_uart, tx_data, tx_szdata);
115 - sw_uart = SW_WAIT_ADDRESS; // 데이터 전송 후 uart 수신 단계 초기 115 + sw_uart = SW_WAIT_ADDRESS; // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙 uart 占쏙옙占쏙옙 占쌤곤옙 占십깍옙
116 116
117 - tm_recv = get_cur_msec(); // 현재 시간 갱신 117 + tm_recv = get_cur_msec(); // 占쏙옙占쏙옙 占시곤옙 占쏙옙占쏙옙
118 118
119 return rst; 119 return rst;
120 } 120 }
121 121
122 /** ---------------------------------------------------------------------------- 122 /** ----------------------------------------------------------------------------
123 -@brief uart로 전송할 데이터를 완성  
124 -@remark tx_data <- 전송할 데이터  
125 - tx_szdata <- 전송할 데이터 바이트 개수  
126 -@param pdata : 데이터 포인터  
127 - sz_data : 데이터 바이트 개수 123 +@brief uart占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占싹쇽옙
  124 +@remark tx_data <- 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙
  125 + tx_szdata <- 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
  126 +@param pdata : 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙
  127 + sz_data : 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
128 @return 128 @return
129 -----------------------------------------------------------------------------*/ 129 -----------------------------------------------------------------------------*/
130 static void make_tx_data( char *pdata, int sz_data){ 130 static void make_tx_data( char *pdata, int sz_data){
@@ -141,11 +141,11 @@ static void make_tx_data( char *pdata, int sz_data){ @@ -141,11 +141,11 @@ static void make_tx_data( char *pdata, int sz_data){
141 } 141 }
142 142
143 /** ---------------------------------------------------------------------------- 143 /** ----------------------------------------------------------------------------
144 -@brief 오븐으로부터 상태 데이터를 요청한다. 144 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쏙옙청占싼댐옙.
145 @remark 145 @remark
146 -@param addr_high : 상위 address  
147 - addr_low : 하위 address  
148 - size : 요구할 데이터 바이트 개수 146 +@param addr_high : 占쏙옙占쏙옙 address
  147 + addr_low : 占쏙옙占쏙옙 address
  148 + size : 占썰구占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
149 @return 149 @return
150 -----------------------------------------------------------------------------*/ 150 -----------------------------------------------------------------------------*/
151 static void modbus_func03( int addr_high, int addr_low, int size){ 151 static void modbus_func03( int addr_high, int addr_low, int size){
@@ -159,15 +159,15 @@ static void modbus_func03( int addr_high, int addr_low, int size){ @@ -159,15 +159,15 @@ static void modbus_func03( int addr_high, int addr_low, int size){
159 buff[ndx++] = 0x00; 159 buff[ndx++] = 0x00;
160 buff[ndx++] = size; 160 buff[ndx++] = size;
161 161
162 - make_tx_data( buff, ndx); // 실제 전송 데이터를 생성  
163 - write_to_uart(); // uart로 전송 162 + make_tx_data( buff, ndx); // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙
  163 + write_to_uart(); // uart占쏙옙 占쏙옙占쏙옙
164 } 164 }
165 /** ---------------------------------------------------------------------------- 165 /** ----------------------------------------------------------------------------
166 -@brief 오븐으로부터 상태 데이터를 요청한다. 166 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쏙옙청占싼댐옙.
167 @remark 167 @remark
168 -@param addr_high : 상위 address  
169 - addr_low : 하위 address  
170 - size : 요구할 데이터 바이트 개수 168 +@param addr_high : 占쏙옙占쏙옙 address
  169 + addr_low : 占쏙옙占쏙옙 address
  170 + size : 占썰구占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
171 @return 171 @return
172 -----------------------------------------------------------------------------*/ 172 -----------------------------------------------------------------------------*/
173 static void modbus_func04( int addr_high, int addr_low, int size){ 173 static void modbus_func04( int addr_high, int addr_low, int size){
@@ -181,17 +181,17 @@ static void modbus_func04( int addr_high, int addr_low, int size){ @@ -181,17 +181,17 @@ static void modbus_func04( int addr_high, int addr_low, int size){
181 buff[ndx++] = 0x00; 181 buff[ndx++] = 0x00;
182 buff[ndx++] = size; 182 buff[ndx++] = size;
183 183
184 - make_tx_data( buff, ndx); // 실제 전송 데이터를 생성  
185 - write_to_uart(); // uart로 전송 184 + make_tx_data( buff, ndx); // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙
  185 + write_to_uart(); // uart占쏙옙 占쏙옙占쏙옙
186 } 186 }
187 187
188 /** ---------------------------------------------------------------------------- 188 /** ----------------------------------------------------------------------------
189 -@brief 오븐으로 명령 전송(쓰기 요청) 189 +@brief 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占 占쏙옙占쏙옙(占쏙옙占쏙옙 占쏙옙청)
190 @remark 190 @remark
191 -@param addr_high : 상위 address  
192 - addr_low : 하위 address  
193 - data_high : 상위 data  
194 - data_log : 하위 data 191 +@param addr_high : 占쏙옙占쏙옙 address
  192 + addr_low : 占쏙옙占쏙옙 address
  193 + data_high : 占쏙옙占쏙옙 data
  194 + data_log : 占쏙옙占쏙옙 data
195 @return 195 @return
196 -----------------------------------------------------------------------------*/ 196 -----------------------------------------------------------------------------*/
197 static void modbus_func06( int addr_high, int addr_low, int data_high, int data_low){ 197 static void modbus_func06( int addr_high, int addr_low, int data_high, int data_low){
@@ -205,14 +205,14 @@ static void modbus_func06( int addr_high, int addr_low, int data_high, int data_ @@ -205,14 +205,14 @@ static void modbus_func06( int addr_high, int addr_low, int data_high, int data_
205 buff[ndx++] = data_high; 205 buff[ndx++] = data_high;
206 buff[ndx++] = data_low; 206 buff[ndx++] = data_low;
207 207
208 - make_tx_data( buff, ndx); // 실제 전송 데이터를 생성  
209 - write_to_uart(); // uart로 전송 208 + make_tx_data( buff, ndx); // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙
  209 + write_to_uart(); // uart占쏙옙 占쏙옙占쏙옙
210 } 210 }
211 211
212 /** ---------------------------------------------------------------------------- 212 /** ----------------------------------------------------------------------------
213 -@brief GUI의 쓰기 명령 실행 213 +@brief GUI占쏙옙 占쏙옙占쏙옙 占쏙옙占 占쏙옙占쏙옙
214 @remark 214 @remark
215 -@param pcmd : GUI가 요청한 명령 215 +@param pcmd : GUI占쏙옙 占쏙옙청占쏙옙 占쏙옙占
216 @return 216 @return
217 -----------------------------------------------------------------------------*/ 217 -----------------------------------------------------------------------------*/
218 static void set_value( command_t *pcmd){ 218 static void set_value( command_t *pcmd){
@@ -234,19 +234,23 @@ static void set_value( command_t *pcmd){ @@ -234,19 +234,23 @@ static void set_value( command_t *pcmd){
234 case TG_FAN2_RPM : addr = 0x1e; break; 234 case TG_FAN2_RPM : addr = 0x1e; break;
235 case TG_FAN1_DIRECTOIN : addr = 0x1f; break; 235 case TG_FAN1_DIRECTOIN : addr = 0x1f; break;
236 case TG_FAN2_DIRECTOIN : addr = 0x20; break; 236 case TG_FAN2_DIRECTOIN : addr = 0x20; break;
  237 + case TG_BURNER1_1_RPM : addr = 0x28; break;
  238 + case TG_BURNER1_2_RPM : addr = 0x29; break;
  239 + case TG_BURNER23_1_RPM : addr = 0x2A; break;
  240 + case TG_BURNER23_2_RPM : addr = 0x2B; break;
237 case TG_ERROR_CLEAR : addr = 0x31; break; 241 case TG_ERROR_CLEAR : addr = 0x31; break;
238 } 242 }
239 243
240 int value_high = ( pcmd->value >> 8) & 0xff; 244 int value_high = ( pcmd->value >> 8) & 0xff;
241 int value_low = ( pcmd->value ) & 0xff; 245 int value_low = ( pcmd->value ) & 0xff;
242 246
243 - modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 함수 호출 247 + modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 占쌉쇽옙 호占쏙옙
244 } 248 }
245 249
246 /** ---------------------------------------------------------------------------- 250 /** ----------------------------------------------------------------------------
247 -@brief GUI의 스위치 on/off 명령 실행 251 +@brief GUI占쏙옙 占쏙옙占쏙옙치 on/off 占쏙옙占 占쏙옙占쏙옙
248 @remark 252 @remark
249 -@param pcmd : GUI가 요청한 명령 253 +@param pcmd : GUI占쏙옙 占쏙옙청占쏙옙 占쏙옙占
250 @return 254 @return
251 -----------------------------------------------------------------------------*/ 255 -----------------------------------------------------------------------------*/
252 static void onoff_switch( command_t *pcmd){ 256 static void onoff_switch( command_t *pcmd){
@@ -265,13 +269,13 @@ static void onoff_switch( command_t *pcmd){ @@ -265,13 +269,13 @@ static void onoff_switch( command_t *pcmd){
265 int value_high = 0; 269 int value_high = 0;
266 int value_low = pcmd->value; 270 int value_low = pcmd->value;
267 271
268 - modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 함수 호출 272 + modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 占쌉쇽옙 호占쏙옙
269 } 273 }
270 274
271 /** ---------------------------------------------------------------------------- 275 /** ----------------------------------------------------------------------------
272 -@brief GUI의 비트 단위 스위치 on/off 명령 실행  
273 -@remark 0x0021, 0x0022 비트 단위 스위치 제어  
274 -@param pcmd : GUI가 요청한 명령 276 +@brief GUI占쏙옙 占쏙옙트 占쏙옙占쏙옙 占쏙옙占쏙옙치 on/off 占쏙옙占 占쏙옙占쏙옙
  277 +@remark 0x0021, 0x0022 占쏙옙트 占쏙옙占쏙옙 占쏙옙占쏙옙치 占쏙옙占쏙옙
  278 +@param pcmd : GUI占쏙옙 占쏙옙청占쏙옙 占쏙옙占
275 @return 279 @return
276 -----------------------------------------------------------------------------*/ 280 -----------------------------------------------------------------------------*/
277 static void onoff_bit( command_t *pcmd){ 281 static void onoff_bit( command_t *pcmd){
@@ -346,11 +350,11 @@ static void onoff_bit( command_t *pcmd){ @@ -346,11 +350,11 @@ static void onoff_bit( command_t *pcmd){
346 int value_high = ( *p_onoff >> 8) & 0xff; 350 int value_high = ( *p_onoff >> 8) & 0xff;
347 int value_low = ( *p_onoff ) & 0xff; 351 int value_low = ( *p_onoff ) & 0xff;
348 352
349 - modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 함수 호출 353 + modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 占쌉쇽옙 호占쏙옙
350 } 354 }
351 355
352 /** ---------------------------------------------------------------------------- 356 /** ----------------------------------------------------------------------------
353 -@brief 오븐 에러 비트별 카운트를 초기 357 +@brief 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙트占쏙옙 카占쏙옙트占쏙옙 占십깍옙
354 @remark - 358 @remark -
355 @param - 359 @param -
356 @return 360 @return
@@ -365,7 +369,7 @@ static void clear_error_cnt(){ @@ -365,7 +369,7 @@ static void clear_error_cnt(){
365 369
366 } 370 }
367 /** ---------------------------------------------------------------------------- 371 /** ----------------------------------------------------------------------------
368 -@brief GUI로부터 수신한 요청이 있다면 372 +@brief GUI占싸븝옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙청占쏙옙 占쌍다몌옙
369 @remark - 373 @remark -
370 @param - 374 @param -
371 @return 375 @return
@@ -374,19 +378,19 @@ static void check_gui_cmd( void){ @@ -374,19 +378,19 @@ static void check_gui_cmd( void){
374 378
375 command_t cmd; 379 command_t cmd;
376 380
377 - if ( 0 < gui_get_command( &cmd)){ // GUI로부터 요청이 있다면 381 + if ( 0 < gui_get_command( &cmd)){ // GUI占싸븝옙占쏙옙 占쏙옙청占쏙옙 占쌍다몌옙
378 switch( cmd.cmd){ 382 switch( cmd.cmd){
379 - case CMD_VALUE : // 오븐 값 설정 383 + case CMD_VALUE : // 占쏙옙占쏙옙 占쏙옙 占쏙옙占쏙옙
380 set_value( &cmd); 384 set_value( &cmd);
381 break; 385 break;
382 - case CMD_ONOFF : // 오븐 스위치 변경 386 + case CMD_ONOFF : // 占쏙옙占쏙옙 占쏙옙占쏙옙치 占쏙옙占쏙옙
383 if ( TG_BITONOFF > cmd.target){ 387 if ( TG_BITONOFF > cmd.target){
384 onoff_switch( &cmd); 388 onoff_switch( &cmd);
385 } else { 389 } else {
386 onoff_bit( &cmd); 390 onoff_bit( &cmd);
387 } 391 }
388 break; 392 break;
389 - case CMD_CLEAR_ERROR_CNT : // 에러 카운트 초기 393 + case CMD_CLEAR_ERROR_CNT : // 占쏙옙占쏙옙 카占쏙옙트 占십깍옙
390 clear_error_cnt(); 394 clear_error_cnt();
391 break; 395 break;
392 } 396 }
@@ -397,7 +401,7 @@ static void check_gui_cmd( void){ @@ -397,7 +401,7 @@ static void check_gui_cmd( void){
397 } 401 }
398 402
399 /** ---------------------------------------------------------------------------- 403 /** ----------------------------------------------------------------------------
400 -@brief 오븐으로부터 상태 값을 받았음 404 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌨억옙占쏙옙
401 @remark 405 @remark
402 @param - 406 @param -
403 @return 407 @return
@@ -407,14 +411,14 @@ static void on_rcv_control( void){ @@ -407,14 +411,14 @@ static void on_rcv_control( void){
407 gui_oven_control_t oven; 411 gui_oven_control_t oven;
408 int ndx; 412 int ndx;
409 413
410 - // 빅엔디안을 리틀엔디안으로 변경  
411 - U16 *pword = (U16 *)&rx_data[3]; // 데이터는 rx_data[3]에서 시작 414 + // 占쏠엔듸옙占쏙옙占 占쏙옙틀占쏙옙占쏙옙占쏙옙占쏙옙占 占쏙옙占쏙옙
  415 + U16 *pword = (U16 *)&rx_data[3]; // 占쏙옙占쏙옙占싶댐옙 rx_data[3]占쏙옙占쏙옙 占쏙옙占쏙옙
412 416
413 for ( ndx = 0; ndx < rx_szdata / 2; ndx++){ 417 for ( ndx = 0; ndx < rx_szdata / 2; ndx++){
414 swap_byte( pword++); 418 swap_byte( pword++);
415 } 419 }
416 420
417 - // 변수 처리 421 + // 占쏙옙占쏙옙 처占쏙옙
418 422
419 oven.header = HDR_OVEN_CONTROL; 423 oven.header = HDR_OVEN_CONTROL;
420 memcpy( ( char *)&oven.control, &rx_data[3], sizeof( oven_control_t)); 424 memcpy( ( char *)&oven.control, &rx_data[3], sizeof( oven_control_t));
@@ -435,14 +439,14 @@ static void on_rcv_control( void){ @@ -435,14 +439,14 @@ static void on_rcv_control( void){
435 printf( "manual_onoff21 = 0x%04x\n", bit_onoff21); 439 printf( "manual_onoff21 = 0x%04x\n", bit_onoff21);
436 printf( "manual_onoff22 = 0x%04x\n", bit_onoff22); 440 printf( "manual_onoff22 = 0x%04x\n", bit_onoff22);
437 441
438 - // GUI로 전송 442 + // GUI占쏙옙 占쏙옙占쏙옙
439 gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t)); 443 gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t));
440 444
441 - // 다음 단계 실행 445 + // 占쏙옙占쏙옙 占쌤곤옙 占쏙옙占쏙옙
442 run_next_step_work(); 446 run_next_step_work();
443 } 447 }
444 /** ---------------------------------------------------------------------------- 448 /** ----------------------------------------------------------------------------
445 -@brief 오븐으로부터 상태 값을 받았음 449 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌨억옙占쏙옙
446 @remark 450 @remark
447 @param - 451 @param -
448 @return 452 @return
@@ -452,59 +456,59 @@ static void on_rcv_status( void){ @@ -452,59 +456,59 @@ static void on_rcv_status( void){
452 gui_oven_state_t oven; 456 gui_oven_state_t oven;
453 int ndx; 457 int ndx;
454 458
455 - // 빅엔디안을 리틀엔디안으로 변경  
456 - U16 *pword = (U16 *)&rx_data[3]; // 데이터는 rx_data[3]에서 시작 459 + // 占쏠엔듸옙占쏙옙占 占쏙옙틀占쏙옙占쏙옙占쏙옙占쏙옙占 占쏙옙占쏙옙
  460 + U16 *pword = (U16 *)&rx_data[3]; // 占쏙옙占쏙옙占싶댐옙 rx_data[3]占쏙옙占쏙옙 占쏙옙占쏙옙
457 461
458 for ( ndx = 0; ndx < rx_szdata / 2; ndx++){ 462 for ( ndx = 0; ndx < rx_szdata / 2; ndx++){
459 swap_byte( pword++); 463 swap_byte( pword++);
460 } 464 }
461 465
462 - // 변수 처리 466 + // 占쏙옙占쏙옙 처占쏙옙
463 467
464 oven.header = HDR_OVEN_STATE; 468 oven.header = HDR_OVEN_STATE;
465 - memcpy( ( char *)&oven.state, &rx_data[3], 0x32 * 2); // 0x32 : 오븐 상태 워드 2바이트 개수 469 + memcpy( ( char *)&oven.state, &rx_data[3], 0x32 * 2); // 0x32 : 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 2占쏙옙占쏙옙트 占쏙옙占쏙옙
466 470
467 - bit_onoff21 = oven.state.onoff_state1; // 현재 오븐 상태를 반영  
468 - bit_onoff22 = oven.state.onoff_state2; // 현재 오븐 상태를 반영 471 + bit_onoff21 = oven.state.onoff_state1; // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占승몌옙 占쌥울옙
  472 + bit_onoff22 = oven.state.onoff_state2; // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占승몌옙 占쌥울옙
469 473
470 if ( oven_error_bit != oven.state.system_error){ 474 if ( oven_error_bit != oven.state.system_error){
471 475
472 - // 변경된 비트가 있는 지 확인 476 + // 占쏙옙占쏙옙占 占쏙옙트占쏙옙 占쌍댐옙 占쏙옙 확占쏙옙
473 U16 bit_ndx = 0x0001; 477 U16 bit_ndx = 0x0001;
474 int bit_prev; 478 int bit_prev;
475 int bit_curr; 479 int bit_curr;
476 480
477 for ( ndx = 0; ndx < 16; ndx++){ 481 for ( ndx = 0; ndx < 16; ndx++){
478 - bit_prev = oven_error_bit & bit_ndx; // 이전 비트 상태  
479 - bit_curr = oven.state.system_error & bit_ndx; // 현재 비트 상태  
480 - if ( bit_prev != bit_curr){ // 비트 값에 차이가 있다면  
481 - if ( 0 != bit_prev){ // 비트 값이 0->1 변화일 때 에러 카운트 증가 482 + bit_prev = oven_error_bit & bit_ndx; // 占쏙옙占쏙옙 占쏙옙트 占쏙옙占쏙옙
  483 + bit_curr = oven.state.system_error & bit_ndx; // 占쏙옙占쏙옙 占쏙옙트 占쏙옙占쏙옙
  484 + if ( bit_prev != bit_curr){ // 占쏙옙트 占쏙옙占쏙옙 占쏙옙占싱곤옙 占쌍다몌옙
  485 + if ( 0 != bit_prev){ // 占쏙옙트 占쏙옙占쏙옙 0->1 占쏙옙화占쏙옙 占쏙옙 占쏙옙占쏙옙 카占쏙옙트 占쏙옙占쏙옙
482 ary_error_cnt[ndx]++; 486 ary_error_cnt[ndx]++;
483 } 487 }
484 } 488 }
485 bit_ndx <<= 1; 489 bit_ndx <<= 1;
486 } 490 }
487 491
488 - // GUI로 에러 카우트 전달 492 + // GUI占쏙옙 占쏙옙占쏙옙 카占쏙옙트 占쏙옙占쏙옙
489 for ( ndx = 0; ndx < 16; ndx++){ 493 for ( ndx = 0; ndx < 16; ndx++){
490 oven.state.error_cnt[ndx] = ary_error_cnt[ndx]; 494 oven.state.error_cnt[ndx] = ary_error_cnt[ndx];
491 } 495 }
492 496
493 - oven_error_bit = oven.state.system_error; // 에러 비트 값 변경 497 + oven_error_bit = oven.state.system_error; // 占쏙옙占쏙옙 占쏙옙트 占쏙옙 占쏙옙占쏙옙
494 } 498 }
495 499
496 printf( "onoff_state1 = 0x%04x\n", oven.state.onoff_state1); 500 printf( "onoff_state1 = 0x%04x\n", oven.state.onoff_state1);
497 printf( "onoff_state2 = 0x%04x\n", oven.state.onoff_state2); 501 printf( "onoff_state2 = 0x%04x\n", oven.state.onoff_state2);
498 printf( "onoff_realy_load = 0x%04x\n", oven.state.onoff_relay_load); 502 printf( "onoff_realy_load = 0x%04x\n", oven.state.onoff_relay_load);
499 503
500 - // GUI로 전송 504 + // GUI占쏙옙 占쏙옙占쏙옙
501 gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t)); 505 gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t));
502 506
503 - // 다음 단계 실행 507 + // 占쏙옙占쏙옙 占쌤곤옙 占쏙옙占쏙옙
504 run_next_step_work(); 508 run_next_step_work();
505 } 509 }
506 /** ---------------------------------------------------------------------------- 510 /** ----------------------------------------------------------------------------
507 -@brief 오븐으로부터 명령 수행 결과를 받았음 511 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占 占쏙옙占쏙옙 占쏙옙占쏙옙占 占쌨억옙占쏙옙
508 @remark 512 @remark
509 @param - 513 @param -
510 @return 514 @return
@@ -513,15 +517,15 @@ static void on_rcv_echo( void){ @@ -513,15 +517,15 @@ static void on_rcv_echo( void){
513 517
514 printf( "receive func code 0x%x\n", rx_data[1] & 0xff); 518 printf( "receive func code 0x%x\n", rx_data[1] & 0xff);
515 519
516 - if ( gui_command_exists()){ // 처리해야할 명령이 남아 있다면  
517 - check_gui_cmd(); // 다음 명령을 전송한다.  
518 - } else { // 처리해야할 명령이 없다면  
519 - run_next_step_work(); // 다음 단계로 넘어 간다. 520 + if ( gui_command_exists()){ // 처占쏙옙占쌔억옙占쏙옙 占쏙옙占쏙옙占 占쏙옙占쏙옙 占쌍다몌옙
  521 + check_gui_cmd(); // 占쏙옙占쏙옙 占쏙옙占쏙옙占 占쏙옙占쏙옙占싼댐옙.
  522 + } else { // 처占쏙옙占쌔억옙占쏙옙 占쏙옙占쏙옙占 占쏙옙占쌕몌옙
  523 + run_next_step_work(); // 占쏙옙占쏙옙 占쌤곤옙占 占싼억옙 占쏙옙占쏙옙.
520 } 524 }
521 } 525 }
522 526
523 /** ---------------------------------------------------------------------------- 527 /** ----------------------------------------------------------------------------
524 -@brief 오븐으로부터 Modbus 80 에러 코드 수신 시 처리 528 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 Modbus 80 占쏙옙占쏙옙 占쌘듸옙 占쏙옙占쏙옙 占쏙옙 처占쏙옙
525 @remark 529 @remark
526 @param - 530 @param -
527 @return 531 @return
@@ -533,7 +537,7 @@ static void on_rcv_80_code( void){ @@ -533,7 +537,7 @@ static void on_rcv_80_code( void){
533 switch( step_work){ 537 switch( step_work){
534 case STEP_CHECK : 538 case STEP_CHECK :
535 printf( "failed to command to oven\n"); 539 printf( "failed to command to oven\n");
536 - gui_send_error_code( ERR_RECEIVE_80); // 0x80 코드 수령을 GUI에 알림 540 + gui_send_error_code( ERR_RECEIVE_80); // 0x80 占쌘듸옙 占쏙옙占쏙옙占쏙옙 GUI占쏙옙 占싯몌옙
537 break; 541 break;
538 default : 542 default :
539 break; 543 break;
@@ -542,14 +546,14 @@ static void on_rcv_80_code( void){ @@ -542,14 +546,14 @@ static void on_rcv_80_code( void){
542 } 546 }
543 547
544 /** ---------------------------------------------------------------------------- 548 /** ----------------------------------------------------------------------------
545 -@brief uart로부터 CRC까지 확인한 전문을 수신했음 549 +@brief uart占싸븝옙占쏙옙 CRC占쏙옙占쏙옙 확占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙
546 @remark 550 @remark
547 @param 551 @param
548 @return 552 @return
549 -----------------------------------------------------------------------------*/ 553 -----------------------------------------------------------------------------*/
550 static void on_receive_data( void){ 554 static void on_receive_data( void){
551 555
552 - // function 코드별로 분류 556 + // function 占쌘드별占쏙옙 占싻뤄옙
553 switch ( rx_data[1]){ 557 switch ( rx_data[1]){
554 case 0x03 : on_rcv_control(); break; 558 case 0x03 : on_rcv_control(); break;
555 case 0x04 : on_rcv_status(); break; 559 case 0x04 : on_rcv_status(); break;
@@ -566,11 +570,11 @@ static void on_receive_data( void){ @@ -566,11 +570,11 @@ static void on_receive_data( void){
566 @brief CRC 체크 570 @brief CRC 체크
567 @remark 571 @remark
568 @param 572 @param
569 -@return true: CRC 값 옳음 573 +@return true: CRC 占쏙옙 占쏙옙占쏙옙
570 -----------------------------------------------------------------------------*/ 574 -----------------------------------------------------------------------------*/
571 static int is_crc_ok( void){ 575 static int is_crc_ok( void){
572 576
573 - // rx_index는 새로운 바이트를 넣을 위치. 즉, 데이터 바이트 개수 577 + // rx_index占쏙옙 占쏙옙占싸울옙 占쏙옙占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙치. 占쏙옙, 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
574 U16 crc = CRC16( ( unsigned char *)rx_data, rx_index-2); 578 U16 crc = CRC16( ( unsigned char *)rx_data, rx_index-2);
575 579
576 U32 data_crc_lo = rx_data[rx_index-2]; 580 U32 data_crc_lo = rx_data[rx_index-2];
@@ -582,10 +586,10 @@ static int is_crc_ok( void){ @@ -582,10 +586,10 @@ static int is_crc_ok( void){
582 } 586 }
583 587
584 /** ---------------------------------------------------------------------------- 588 /** ----------------------------------------------------------------------------
585 -@brief uart 포트로부터 수신한 데이터를 처리 589 +@brief uart 占쏙옙트占싸븝옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 처占쏙옙
586 @remark 590 @remark
587 -@param obj : 통신 객체  
588 -@return 수신 바이트 개수 591 +@param obj : 占쏙옙占 占쏙옙체
  592 +@return 占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
589 -----------------------------------------------------------------------------*/ 593 -----------------------------------------------------------------------------*/
590 static int on_serial_read( poll_obj_t *obj ) 594 static int on_serial_read( poll_obj_t *obj )
591 { 595 {
@@ -593,7 +597,7 @@ static int on_serial_read( poll_obj_t *obj ) @@ -593,7 +597,7 @@ static int on_serial_read( poll_obj_t *obj )
593 int ndx; 597 int ndx;
594 int rdcnt; 598 int rdcnt;
595 599
596 - tm_recv = get_cur_msec(); // 웨이트 타임 오버에 걸리지 않도록 현재 시간 갱신. 600 + tm_recv = get_cur_msec(); // 占쏙옙占쏙옙트 타占쏙옙 占쏙옙占쏙옙占쏙옙 占심몌옙占쏙옙 占십듸옙占쏙옙 占쏙옙占쏙옙 占시곤옙 占쏙옙占쏙옙.
597 601
598 memset(buff, 0, sizeof(buff)); 602 memset(buff, 0, sizeof(buff));
599 rdcnt = uart_read(obj, buff, sizeof(buff)); 603 rdcnt = uart_read(obj, buff, sizeof(buff));
@@ -609,10 +613,10 @@ static int on_serial_read( poll_obj_t *obj ) @@ -609,10 +613,10 @@ static int on_serial_read( poll_obj_t *obj )
609 case SW_WAIT_FUNCTION : 613 case SW_WAIT_FUNCTION :
610 rx_data[rx_index++] = ch_data; 614 rx_data[rx_index++] = ch_data;
611 switch( ch_data){ 615 switch( ch_data){
612 - case 0x03 : // 모드버스 0x04는 COUNT 정보가 필요 616 + case 0x03 : // 占쏙옙占쏙옙占쏙옙 0x04占쏙옙 COUNT 占쏙옙占쏙옙占쏙옙 占십울옙
613 sw_uart = SW_WAIT_COUNT; 617 sw_uart = SW_WAIT_COUNT;
614 break; 618 break;
615 - case 0x04 : // 모드버스 0x04는 COUNT 정보가 필요 619 + case 0x04 : // 占쏙옙占쏙옙占쏙옙 0x04占쏙옙 COUNT 占쏙옙占쏙옙占쏙옙 占십울옙
616 sw_uart = SW_WAIT_COUNT; 620 sw_uart = SW_WAIT_COUNT;
617 break; 621 break;
618 default : 622 default :
@@ -620,28 +624,28 @@ static int on_serial_read( poll_obj_t *obj ) @@ -620,28 +624,28 @@ static int on_serial_read( poll_obj_t *obj )
620 break; 624 break;
621 } 625 }
622 break; 626 break;
623 - case SW_WAIT_COUNT : // 데이터 길이를 구함 627 + case SW_WAIT_COUNT : // 占쏙옙占쏙옙占쏙옙 占쏙옙占싱몌옙 占쏙옙占쏙옙
624 sw_uart = SW_WAIT_DATA_COUNT; 628 sw_uart = SW_WAIT_DATA_COUNT;
625 rx_data[rx_index++] = ch_data; 629 rx_data[rx_index++] = ch_data;
626 - rx_szdata = ch_data; // CRC를 제외한 바이트 개수 630 + rx_szdata = ch_data; // CRC占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
627 break; 631 break;
628 case SW_WAIT_DATA_COUNT : 632 case SW_WAIT_DATA_COUNT :
629 - rx_data[rx_index++] = ch_data; // rx_szdata 개의 바이트 만큼 읽어 들임  
630 - if ( rx_szdata == rx_index-3){ // -3: 국번 1바이트, FUN 1바이트, 데이터 길이 1바이트 선두 제거 633 + rx_data[rx_index++] = ch_data; // rx_szdata 占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙큼 占싻억옙 占쏙옙占쏙옙
  634 + if ( rx_szdata == rx_index-3){ // -3: 占쏙옙占쏙옙 1占쏙옙占쏙옙트, FUN 1占쏙옙占쏙옙트, 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 1占쏙옙占쏙옙트 占쏙옙占쏙옙 占쏙옙占쏙옙
631 sw_uart = SW_WAIT_CRC_LOW; 635 sw_uart = SW_WAIT_CRC_LOW;
632 } 636 }
633 break; 637 break;
634 - case SW_WAIT_DATA : // 모드 버스 0x05에서 읽어 들일 데이터 개수는 4바이 638 + case SW_WAIT_DATA : // 占쏙옙占 占쏙옙占쏙옙 0x05占쏙옙占쏙옙 占싻억옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 4占쏙옙占쏙옙
635 rx_data[rx_index++] = ch_data; 639 rx_data[rx_index++] = ch_data;
636 - if ( 4 == rx_index-2){ // -2: 국번 1바이트, FUN 1바이 640 + if ( 4 == rx_index-2){ // -2: 占쏙옙占쏙옙 1占쏙옙占쏙옙트, FUN 1占쏙옙占쏙옙
637 sw_uart = SW_WAIT_CRC_LOW; 641 sw_uart = SW_WAIT_CRC_LOW;
638 } 642 }
639 break; 643 break;
640 - case SW_WAIT_CRC_LOW : // crc low 바이트 수신 644 + case SW_WAIT_CRC_LOW : // crc low 占쏙옙占쏙옙트 占쏙옙占쏙옙
641 sw_uart = SW_WAIT_CRC_HIGH; 645 sw_uart = SW_WAIT_CRC_HIGH;
642 rx_data[rx_index++] = ch_data; 646 rx_data[rx_index++] = ch_data;
643 break; 647 break;
644 - case SW_WAIT_CRC_HIGH : // crc high 바이트 수신 648 + case SW_WAIT_CRC_HIGH : // crc high 占쏙옙占쏙옙트 占쏙옙占쏙옙
645 sw_uart = SW_WAIT_ADDRESS; 649 sw_uart = SW_WAIT_ADDRESS;
646 rx_data[rx_index++] = ch_data; 650 rx_data[rx_index++] = ch_data;
647 if ( is_crc_ok()){ 651 if ( is_crc_ok()){
@@ -655,9 +659,9 @@ static int on_serial_read( poll_obj_t *obj ) @@ -655,9 +659,9 @@ static int on_serial_read( poll_obj_t *obj )
655 } 659 }
656 660
657 /** ---------------------------------------------------------------------------- 661 /** ----------------------------------------------------------------------------
658 -@brief 데이터를 수신하지 못 했을 때의 처리  
659 -@remark 온도를 못 읽었을 때는 공유 메모리의 온도 값에는 -9999로  
660 - RUNSTOP 값 요청에 대한 데이터가 없다면 RUNSTOP_NOT_EXISTS로 지정 662 +@brief 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 처占쏙옙
  663 +@remark 占승듸옙占쏙옙 占쏙옙 占싻억옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌨몌옙占쏙옙 占승듸옙 占쏙옙占쏙옙占쏙옙 -9999占쏙옙
  664 + RUNSTOP 占쏙옙 占쏙옙청占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶곤옙 占쏙옙占쌕몌옙 RUNSTOP_NOT_EXISTS占쏙옙 占쏙옙占쏙옙
661 @param 665 @param
662 @return 666 @return
663 -----------------------------------------------------------------------------*/ 667 -----------------------------------------------------------------------------*/
@@ -666,44 +670,44 @@ static void on_no_data( void){ @@ -666,44 +670,44 @@ static void on_no_data( void){
666 if ( MAX_RETRY < cnt_retry){ 670 if ( MAX_RETRY < cnt_retry){
667 printf( ">>>>>>>> failed to send data\n"); 671 printf( ">>>>>>>> failed to send data\n");
668 672
669 - if ( STEP_CHECK == step_work){ // GUI 요청으로 명령을 전송 중이었다  
670 - gui_send_error_code( ERR_SEND_COMMAND); // 명령 전송 실패를 GUI에 알림 673 + if ( STEP_CHECK == step_work){ // GUI 占쏙옙청占쏙옙占쏙옙 占쏙옙占쏙옙占 占쏙옙占쏙옙 占쏙옙占싱억옙占쏙옙
  674 + gui_send_error_code( ERR_SEND_COMMAND); // 占쏙옙占 占쏙옙占쏙옙 占쏙옙占싻몌옙 GUI占쏙옙 占싯몌옙
671 } 675 }
672 } else { 676 } else {
673 - write_to_uart(); // 이전 전송 데이터를 다시 전송 677 + write_to_uart(); // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쌕쏙옙 占쏙옙占쏙옙
674 cnt_retry++; 678 cnt_retry++;
675 return; 679 return;
676 } 680 }
677 681
678 - run_step_work( STEP_CONTROL); // 통신을 계속 실패했다면 오븐 상태를 구하는 작업부터 다시 시작 682 + run_step_work( STEP_CONTROL); // 占쏙옙占쏙옙占 占쏙옙占 占쏙옙占쏙옙占쌩다몌옙 占쏙옙占쏙옙 占쏙옙占승몌옙 占쏙옙占싹댐옙 占쌜억옙占쏙옙占쏙옙 占쌕쏙옙 占쏙옙占쏙옙
679 } 683 }
680 684
681 /** ---------------------------------------------------------------------------- 685 /** ----------------------------------------------------------------------------
682 -@brief 인수로 받은 작업 STEP을 실행한다. 686 +@brief 占싸쇽옙占쏙옙 占쏙옙占쏙옙 占쌜억옙 STEP占쏙옙 占쏙옙占쏙옙占싼댐옙.
683 @remark 687 @remark
684 -@param n_step : 실행할 STEP 688 +@param n_step : 占쏙옙占쏙옙占쏙옙 STEP
685 @return - 689 @return -
686 -----------------------------------------------------------------------------*/ 690 -----------------------------------------------------------------------------*/
687 static void run_step_work( int n_step){ 691 static void run_step_work( int n_step){
688 692
689 - step_work = n_step; // 작업 단계 변경  
690 - cnt_retry = 0; // 현재 작업에 대한 재 전송 횟수 초기화  
691 - msleep( 50); // 다음 명령 요청 전에 쉬지 않으면 수신이 안 되는 경우가 있음 693 + step_work = n_step; // 占쌜억옙 占쌤곤옙 占쏙옙占쏙옙
  694 + cnt_retry = 0; // 占쏙옙占쏙옙 占쌜억옙占쏙옙 占쏙옙占쏙옙 占쏙옙 占쏙옙占쏙옙 횟占쏙옙 占십깍옙화
  695 + msleep( 50); // 占쏙옙占쏙옙 占쏙옙占 占쏙옙청 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙 占실댐옙 占쏙옙李 占쏙옙占쏙옙
692 696
693 switch( step_work){ 697 switch( step_work){
694 - case STEP_CONTROL : modbus_func03( 0x00, 0x00, sizeof( oven_control_t) /2); break; // 데이터 요청 개수 /2: word 개수의 절반, 2개로 요청하면 4 바이트 수령  
695 - case STEP_STATE : modbus_func04( 0x00, 0x00, 0x32 ); break; // oven_stae_t에 error_cnt[] 변수가 있어서 직접 입력  
696 - case STEP_CHECK : check_gui_cmd(); break; // GUI 요청 확인 698 + case STEP_CONTROL : modbus_func03( 0x00, 0x00, sizeof( oven_control_t) /2); break; // 占쏙옙占쏙옙占쏙옙 占쏙옙청 占쏙옙占쏙옙 /2: word 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙, 2占쏙옙占쏙옙 占쏙옙청占싹몌옙 4 占쏙옙占쏙옙트 占쏙옙占쏙옙
  699 + case STEP_STATE : modbus_func04( 0x00, 0x00, 0x32 ); break; // oven_stae_t占쏙옙 error_cnt[] 占쏙옙占쏙옙占쏙옙 占쌍어서 占쏙옙占쏙옙 占쌉뤄옙
  700 + case STEP_CHECK : check_gui_cmd(); break; // GUI 占쏙옙청 확占쏙옙
697 default : 701 default :
698 - msleep( 100); // 100mm sec 휴식, 통신 간격 조절  
699 - run_next_step_work(); // 다음 STEP 실행 702 + msleep( 100); // 100mm sec 占쌨쏙옙, 占쏙옙占 占쏙옙占쏙옙 占쏙옙占쏙옙
  703 + run_next_step_work(); // 占쏙옙占쏙옙 STEP 占쏙옙占쏙옙
700 break; 704 break;
701 } 705 }
702 } 706 }
703 707
704 /** ---------------------------------------------------------------------------- 708 /** ----------------------------------------------------------------------------
705 -@brief 다음 작업 STEP을 실행한다.  
706 -@remark STEP을 기억하는 step_work를 증가 709 +@brief 占쏙옙占쏙옙 占쌜억옙 STEP占쏙옙 占쏙옙占쏙옙占싼댐옙.
  710 +@remark STEP占쏙옙 占쏙옙占쏙옙求占 step_work占쏙옙 占쏙옙占쏙옙
707 @param - 711 @param -
708 @return - 712 @return -
709 -----------------------------------------------------------------------------*/ 713 -----------------------------------------------------------------------------*/
@@ -715,14 +719,14 @@ static void run_next_step_work( void){ @@ -715,14 +719,14 @@ static void run_next_step_work( void){
715 } 719 }
716 720
717 /** ---------------------------------------------------------------------------- 721 /** ----------------------------------------------------------------------------
718 -@brief 데이터 수신 여부 확인 722 +@brief 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 확占쏙옙
719 @remark 723 @remark
720 -@param msec_t tm_curr : 현재 시간 724 +@param msec_t tm_curr : 占쏙옙占쏙옙 占시곤옙
721 @return 725 @return
722 -----------------------------------------------------------------------------*/ 726 -----------------------------------------------------------------------------*/
723 int rs485_timer( msec_t tm_curr){ 727 int rs485_timer( msec_t tm_curr){
724 728
725 - if ( 500 <= ( tm_curr - tm_recv) ){ // 1초 이상 수신되는 데이터가 없다면 통신 이상으로 판단 729 + if ( 500 <= ( tm_curr - tm_recv) ){ // 1占쏙옙 占싱삼옙 占쏙옙占신되댐옙 占쏙옙占쏙옙占싶곤옙 占쏙옙占쌕몌옙 占쏙옙占 占싱삼옙占쏙옙占쏙옙 占실댐옙
726 on_no_data(); 730 on_no_data();
727 } 731 }
728 return 0; 732 return 0;
@@ -730,20 +734,20 @@ int rs485_timer( msec_t tm_curr){ @@ -730,20 +734,20 @@ int rs485_timer( msec_t tm_curr){
730 734
731 735
732 /** ---------------------------------------------------------------------------- 736 /** ----------------------------------------------------------------------------
733 -@brief rs485 모듈 실행 시작 737 +@brief rs485 占쏙옙占 占쏙옙占쏙옙 占쏙옙占쏙옙
734 @remark 738 @remark
735 -@param uart_name : uart 장치 이름 739 +@param uart_name : uart 占쏙옙치 占싱몌옙
736 @return 740 @return
737 -----------------------------------------------------------------------------*/ 741 -----------------------------------------------------------------------------*/
738 int rs845_run_start( void){ 742 int rs845_run_start( void){
739 743
740 - run_step_work( STEP_CONTROL); // 오븐 제어 상태를 구하는 작업부터 시작 744 + run_step_work( STEP_CONTROL); // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占승몌옙 占쏙옙占싹댐옙 占쌜억옙占쏙옙占쏙옙 占쏙옙占쏙옙
741 745
742 return 0; 746 return 0;
743 } 747 }
744 748
745 /** ---------------------------------------------------------------------------- 749 /** ----------------------------------------------------------------------------
746 -@brief 모듈 시작을 위한 초기활를 한다. 750 +@brief 占쏙옙占 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占십깍옙활占쏙옙 占싼댐옙.
747 @remark 751 @remark
748 @param 752 @param
749 @return 753 @return
@@ -754,7 +758,7 @@ int rs485_initialize( void){ @@ -754,7 +758,7 @@ int rs485_initialize( void){
754 poll_obj_t *obj; 758 poll_obj_t *obj;
755 int ndx; 759 int ndx;
756 760
757 - inifile = ini_create( INI_SYSTEM); // IniFile 생성 761 + inifile = ini_create( INI_SYSTEM); // IniFile 占쏙옙占쏙옙
758 if ( NULL == inifile){ 762 if ( NULL == inifile){
759 printf( "ini file error.\n"); 763 printf( "ini file error.\n");
760 return -1; 764 return -1;
@@ -775,12 +779,12 @@ int rs485_initialize( void){ @@ -775,12 +779,12 @@ int rs485_initialize( void){
775 ini_free( inifile); 779 ini_free( inifile);
776 } 780 }
777 781
778 - memset( &rx_data, 0, sizeof( rx_data)); // 누적 수신 버퍼 초기 782 + memset( &rx_data, 0, sizeof( rx_data)); // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占십깍옙
779 783
780 obj_uart = obj; 784 obj_uart = obj;
781 785
782 - // 에러 카운트를 위한 비트 초기화  
783 - // 추후 파일에서 읽어 들임 786 + // 占쏙옙占쏙옙 카占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙트 占십깍옙화
  787 + // 占쏙옙占쏙옙 占쏙옙占싹울옙占쏙옙 占싻억옙 占쏙옙占쏙옙
784 788
785 for ( ndx = 0; ndx < 16; ndx++){ 789 for ( ndx = 0; ndx < 16; ndx++){
786 ary_error_cnt[ndx] = 0; 790 ary_error_cnt[ndx] = 0;
app/app-prime-modbus/include/all_share.h
1 //------------------------------------------------------------------------------ 1 //------------------------------------------------------------------------------
2 -// 화일명 : all_share.h  
3 -// 프로젝트 :  
4 -// 설 명 : 공유 메모리 구조체를 선언한다. 2 +// 화占싹몌옙 : all_share.h
  3 +// 占쏙옙占쏙옙占쏙옙트 :
  4 +// 占쏙옙 占쏙옙 : 占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙체占쏙옙 占쏙옙占쏙옙占싼댐옙.
5 // 5 //
6 -// 저작권 : FA리눅스주식회사  
7 -// 주 의 : 6 +// 占쏙옙占쌜깍옙 : FA占쏙옙占쏙옙占쏙옙占쌍쏙옙회占쏙옙
  7 +// 占쏙옙 占쏙옙 :
8 //------------------------------------------------------------------------------ 8 //------------------------------------------------------------------------------
9 #ifndef _ALL__SHARE_HEADER_ 9 #ifndef _ALL__SHARE_HEADER_
10 #define _ALL__SHARE_HEADER_ 10 #define _ALL__SHARE_HEADER_
@@ -25,9 +25,9 @@ typedef unsigned long long U64; @@ -25,9 +25,9 @@ typedef unsigned long long U64;
25 typedef signed short I16; 25 typedef signed short I16;
26 26
27 enum command_enum_t { 27 enum command_enum_t {
28 - CMD_VALUE = 0, // 오븐 값 변경  
29 - CMD_ONOFF, // 오븐 스위치 ON/OFF  
30 - CMD_CLEAR_ERROR_CNT // 에러 카운트를 초기화 28 + CMD_VALUE = 0, // 占쏙옙占쏙옙 占쏙옙 占쏙옙占쏙옙
  29 + CMD_ONOFF, // 占쏙옙占쏙옙 占쏙옙占쏙옙치 ON/OFF
  30 + CMD_CLEAR_ERROR_CNT // 占쏙옙占쏙옙 카占쏙옙트占쏙옙 占십깍옙화
31 }; 31 };
32 32
33 enum target_value_t { 33 enum target_value_t {
@@ -46,6 +46,10 @@ enum target_value_t { @@ -46,6 +46,10 @@ enum target_value_t {
46 TG_FAN2_RPM, 46 TG_FAN2_RPM,
47 TG_FAN1_DIRECTOIN, 47 TG_FAN1_DIRECTOIN,
48 TG_FAN2_DIRECTOIN, 48 TG_FAN2_DIRECTOIN,
  49 + TG_BURNER1_1_RPM,
  50 + TG_BURNER1_2_RPM,
  51 + TG_BURNER23_1_RPM,
  52 + TG_BURNER23_2_RPM,
49 TG_ERROR_CLEAR 53 TG_ERROR_CLEAR
50 }; 54 };
51 55
@@ -87,18 +91,18 @@ enum target_onoff_t { @@ -87,18 +91,18 @@ enum target_onoff_t {
87 }; 91 };
88 92
89 enum { 93 enum {
90 - HDR_OVEN_CONTROL = 0, // 40000 번지 값, 컨트롤 제어  
91 - HDR_OVEN_STATE, // 30000 번지 값, 오븐 상태  
92 - HDR_ERROR_CODE // 에러 코드 94 + HDR_OVEN_CONTROL = 0, // 40000 占쏙옙占쏙옙 占쏙옙, 占쏙옙트占쏙옙 占쏙옙占쏙옙
  95 + HDR_OVEN_STATE, // 30000 占쏙옙占쏙옙 占쏙옙, 占쏙옙占쏙옙 占쏙옙占쏙옙
  96 + HDR_ERROR_CODE // 占쏙옙占쏙옙 占쌘듸옙
93 }; 97 };
94 98
95 enum { 99 enum {
96 - ERR_SEND_COMMAND = 0, // 명령 전송에 대한 응답이 없음  
97 - ERR_RECEIVE_80 // 0x80 코드를 수신했음 100 + ERR_SEND_COMMAND = 0, // 占쏙옙占 占쏙옙占쌜울옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
  101 + ERR_RECEIVE_80 // 0x80 占쌘드를 占쏙옙占쏙옙占쏙옙占쏙옙
98 }; 102 };
99 103
100 // 104 //
101 -// 시스템 전체 공유 구조체 구조 105 +// 占시쏙옙占쏙옙 占쏙옙체 占쏙옙占쏙옙 占쏙옙占쏙옙체 占쏙옙占쏙옙
102 // 106 //
103 107
104 typedef struct 108 typedef struct
@@ -149,10 +153,10 @@ typedef struct { @@ -149,10 +153,10 @@ typedef struct {
149 U16 reserved25; // 25 153 U16 reserved25; // 25
150 U16 reserved26; // 26 154 U16 reserved26; // 26
151 U16 reserved27; // 27 155 U16 reserved27; // 27
152 - U16 reserved28; // 28  
153 - U16 reserved29; // 29  
154 - U16 reserved2a; // 2A  
155 - U16 reserved2b; // 2B 156 + U16 burner1_1_rpm; // 28
  157 + U16 burner1_2_rpm; // 29
  158 + U16 burner23_1_rpm; // 2A
  159 + U16 burner23_2_rpm; // 2B
156 U16 reserved2c; // 2C 160 U16 reserved2c; // 2C
157 U16 reserved2d; // 2D 161 U16 reserved2d; // 2D
158 U16 reserved2e; // 2E 162 U16 reserved2e; // 2E
@@ -212,7 +216,14 @@ typedef struct { @@ -212,7 +216,14 @@ typedef struct {
212 U16 communication_error; // 2F 216 U16 communication_error; // 2F
213 U16 sensor_error; // 30 217 U16 sensor_error; // 30
214 U16 reserved31; // 31 218 U16 reserved31; // 31
215 - U16 error_cnt[16]; // 에러 카운트 219 + U16 burner1_ignition_rpm; // 32
  220 + U16 burner2_ignition_rpm; // 33
  221 + U16 burner3_ignition_rpm; // 34
  222 + U16 burner1_current_rpm; // 35
  223 + U16 burner2_current_rpm; // 36
  224 + U16 burner3_current_rpm; // 37
  225 + U16 controller_error; // 38
  226 + U16 error_cnt[16]; // 占쏙옙占쏙옙 카占쏙옙트
216 } STRUCT_PACK oven_state_t; 227 } STRUCT_PACK oven_state_t;
217 228
218 typedef struct { 229 typedef struct {
@@ -232,13 +243,13 @@ typedef struct { @@ -232,13 +243,13 @@ typedef struct {
232 243
233 //------------------------------------------------------------------------------ 244 //------------------------------------------------------------------------------
234 // 245 //
235 -// 프레임, 페이로드 246 +// 占쏙옙占쏙옙占쏙옙, 占쏙옙占싱로듸옙
236 // 247 //
237 //------------------------------------------------------------------------------ 248 //------------------------------------------------------------------------------
238 249
239 //------------------------------------------------------------------------------ 250 //------------------------------------------------------------------------------
240 // 251 //
241 -// 전역 변수 정의 252 +// 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙
242 // 253 //
243 //------------------------------------------------------------------------------ 254 //------------------------------------------------------------------------------
244 255