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 /**
9 9 @file main_control.c
10 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 14 @todo
15 15 @bug
... ... @@ -17,8 +17,8 @@
17 17 @warning
18 18 */
19 19 //
20   -// 저작권 에프에이리눅스(주)
21   -// 외부공개 금지
  20 +// 占쏙옙占쌜깍옙 占쏙옙占쏙옙占쏙옙占싱몌옙占쏙옙占쏙옙(占쏙옙)
  21 +// 占쌤부곤옙占쏙옙 占쏙옙占쏙옙
22 22 //
23 23 //----------------------------------------------------------------------------
24 24  
... ... @@ -31,7 +31,7 @@
31 31 #include <rs485_serial.h>
32 32 #include <udp_gui.h>
33 33  
34   -#define MAX_RETRY 3 // 전송 실패 시 재 전송 횟수
  34 +#define MAX_RETRY 3 // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙 占쏙옙 占쏙옙占쏙옙 횟占쏙옙
35 35 #define MAX_BUFF_SIZE 1024
36 36  
37 37 enum step_t {
... ... @@ -63,25 +63,25 @@ static char buff[MAX_BUFF_SIZE];
63 63 static poll_obj_t *obj_uart;
64 64 static enum step_t step_work = STEP_CONTROL;
65 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 68 static U8 rx_data[MAX_BUFF_SIZE];
69 69 static int rx_index;
70 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 85 @param -
86 86 @return -
87 87 -----------------------------------------------------------------------------*/
... ... @@ -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 99 @param
100 100 @return
101 101 -----------------------------------------------------------------------------*/
102 102 static int write_to_uart( void){
103 103  
104   - { // 디버깅 코드, 전송 데이터를 바이트 단위로 출력
  104 + { // 占쏙옙占쏙옙占 占쌘듸옙, 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙트 占쏙옙占쏙옙占쏙옙 占쏙옙占
105 105 int ndx;
106 106  
107 107 printf( "send:");
... ... @@ -112,19 +112,19 @@ static int write_to_uart( void){
112 112 }
113 113  
114 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 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 128 @return
129 129 -----------------------------------------------------------------------------*/
130 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 141 }
142 142  
143 143 /** ----------------------------------------------------------------------------
144   -@brief 오븐으로부터 상태 데이터를 요청한다.
  144 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쏙옙청占싼댐옙.
145 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 149 @return
150 150 -----------------------------------------------------------------------------*/
151 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 159 buff[ndx++] = 0x00;
160 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 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 171 @return
172 172 -----------------------------------------------------------------------------*/
173 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 181 buff[ndx++] = 0x00;
182 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 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 195 @return
196 196 -----------------------------------------------------------------------------*/
197 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 205 buff[ndx++] = data_high;
206 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 214 @remark
215   -@param pcmd : GUI가 요청한 명령
  215 +@param pcmd : GUI占쏙옙 占쏙옙청占쏙옙 占쏙옙占
216 216 @return
217 217 -----------------------------------------------------------------------------*/
218 218 static void set_value( command_t *pcmd){
... ... @@ -234,19 +234,23 @@ static void set_value( command_t *pcmd){
234 234 case TG_FAN2_RPM : addr = 0x1e; break;
235 235 case TG_FAN1_DIRECTOIN : addr = 0x1f; break;
236 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 241 case TG_ERROR_CLEAR : addr = 0x31; break;
238 242 }
239 243  
240 244 int value_high = ( pcmd->value >> 8) & 0xff;
241 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 252 @remark
249   -@param pcmd : GUI가 요청한 명령
  253 +@param pcmd : GUI占쏙옙 占쏙옙청占쏙옙 占쏙옙占
250 254 @return
251 255 -----------------------------------------------------------------------------*/
252 256 static void onoff_switch( command_t *pcmd){
... ... @@ -265,13 +269,13 @@ static void onoff_switch( command_t *pcmd){
265 269 int value_high = 0;
266 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 279 @return
276 280 -----------------------------------------------------------------------------*/
277 281 static void onoff_bit( command_t *pcmd){
... ... @@ -346,11 +350,11 @@ static void onoff_bit( command_t *pcmd){
346 350 int value_high = ( *p_onoff >> 8) & 0xff;
347 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 358 @remark -
355 359 @param -
356 360 @return
... ... @@ -365,7 +369,7 @@ static void clear_error_cnt(){
365 369  
366 370 }
367 371 /** ----------------------------------------------------------------------------
368   -@brief GUI로부터 수신한 요청이 있다면
  372 +@brief GUI占싸븝옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙청占쏙옙 占쌍다몌옙
369 373 @remark -
370 374 @param -
371 375 @return
... ... @@ -374,19 +378,19 @@ static void check_gui_cmd( void){
374 378  
375 379 command_t cmd;
376 380  
377   - if ( 0 < gui_get_command( &cmd)){ // GUI로부터 요청이 있다면
  381 + if ( 0 < gui_get_command( &cmd)){ // GUI占싸븝옙占쏙옙 占쏙옙청占쏙옙 占쌍다몌옙
378 382 switch( cmd.cmd){
379   - case CMD_VALUE : // 오븐 값 설정
  383 + case CMD_VALUE : // 占쏙옙占쏙옙 占쏙옙 占쏙옙占쏙옙
380 384 set_value( &cmd);
381 385 break;
382   - case CMD_ONOFF : // 오븐 스위치 변경
  386 + case CMD_ONOFF : // 占쏙옙占쏙옙 占쏙옙占쏙옙치 占쏙옙占쏙옙
383 387 if ( TG_BITONOFF > cmd.target){
384 388 onoff_switch( &cmd);
385 389 } else {
386 390 onoff_bit( &cmd);
387 391 }
388 392 break;
389   - case CMD_CLEAR_ERROR_CNT : // 에러 카운트 초기
  393 + case CMD_CLEAR_ERROR_CNT : // 占쏙옙占쏙옙 카占쏙옙트 占십깍옙
390 394 clear_error_cnt();
391 395 break;
392 396 }
... ... @@ -397,7 +401,7 @@ static void check_gui_cmd( void){
397 401 }
398 402  
399 403 /** ----------------------------------------------------------------------------
400   -@brief 오븐으로부터 상태 값을 받았음
  404 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌨억옙占쏙옙
401 405 @remark
402 406 @param -
403 407 @return
... ... @@ -407,14 +411,14 @@ static void on_rcv_control( void){
407 411 gui_oven_control_t oven;
408 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 417 for ( ndx = 0; ndx < rx_szdata / 2; ndx++){
414 418 swap_byte( pword++);
415 419 }
416 420  
417   - // 변수 처리
  421 + // 占쏙옙占쏙옙 처占쏙옙
418 422  
419 423 oven.header = HDR_OVEN_CONTROL;
420 424 memcpy( ( char *)&oven.control, &rx_data[3], sizeof( oven_control_t));
... ... @@ -435,14 +439,14 @@ static void on_rcv_control( void){
435 439 printf( "manual_onoff21 = 0x%04x\n", bit_onoff21);
436 440 printf( "manual_onoff22 = 0x%04x\n", bit_onoff22);
437 441  
438   - // GUI로 전송
  442 + // GUI占쏙옙 占쏙옙占쏙옙
439 443 gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t));
440 444  
441   - // 다음 단계 실행
  445 + // 占쏙옙占쏙옙 占쌤곤옙 占쏙옙占쏙옙
442 446 run_next_step_work();
443 447 }
444 448 /** ----------------------------------------------------------------------------
445   -@brief 오븐으로부터 상태 값을 받았음
  449 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌨억옙占쏙옙
446 450 @remark
447 451 @param -
448 452 @return
... ... @@ -452,59 +456,59 @@ static void on_rcv_status( void){
452 456 gui_oven_state_t oven;
453 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 462 for ( ndx = 0; ndx < rx_szdata / 2; ndx++){
459 463 swap_byte( pword++);
460 464 }
461 465  
462   - // 변수 처리
  466 + // 占쏙옙占쏙옙 처占쏙옙
463 467  
464 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 474 if ( oven_error_bit != oven.state.system_error){
471 475  
472   - // 변경된 비트가 있는 지 확인
  476 + // 占쏙옙占쏙옙占 占쏙옙트占쏙옙 占쌍댐옙 占쏙옙 확占쏙옙
473 477 U16 bit_ndx = 0x0001;
474 478 int bit_prev;
475 479 int bit_curr;
476 480  
477 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 486 ary_error_cnt[ndx]++;
483 487 }
484 488 }
485 489 bit_ndx <<= 1;
486 490 }
487 491  
488   - // GUI로 에러 카우트 전달
  492 + // GUI占쏙옙 占쏙옙占쏙옙 카占쏙옙트 占쏙옙占쏙옙
489 493 for ( ndx = 0; ndx < 16; ndx++){
490 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 500 printf( "onoff_state1 = 0x%04x\n", oven.state.onoff_state1);
497 501 printf( "onoff_state2 = 0x%04x\n", oven.state.onoff_state2);
498 502 printf( "onoff_realy_load = 0x%04x\n", oven.state.onoff_relay_load);
499 503  
500   - // GUI로 전송
  504 + // GUI占쏙옙 占쏙옙占쏙옙
501 505 gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t));
502 506  
503   - // 다음 단계 실행
  507 + // 占쏙옙占쏙옙 占쌤곤옙 占쏙옙占쏙옙
504 508 run_next_step_work();
505 509 }
506 510 /** ----------------------------------------------------------------------------
507   -@brief 오븐으로부터 명령 수행 결과를 받았음
  511 +@brief 占쏙옙占쏙옙占쏙옙占싸븝옙占쏙옙 占쏙옙占 占쏙옙占쏙옙 占쏙옙占쏙옙占 占쌨억옙占쏙옙
508 512 @remark
509 513 @param -
510 514 @return
... ... @@ -513,15 +517,15 @@ static void on_rcv_echo( void){
513 517  
514 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 529 @remark
526 530 @param -
527 531 @return
... ... @@ -533,7 +537,7 @@ static void on_rcv_80_code( void){
533 537 switch( step_work){
534 538 case STEP_CHECK :
535 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 541 break;
538 542 default :
539 543 break;
... ... @@ -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 550 @remark
547 551 @param
548 552 @return
549 553 -----------------------------------------------------------------------------*/
550 554 static void on_receive_data( void){
551 555  
552   - // function 코드별로 분류
  556 + // function 占쌘드별占쏙옙 占싻뤄옙
553 557 switch ( rx_data[1]){
554 558 case 0x03 : on_rcv_control(); break;
555 559 case 0x04 : on_rcv_status(); break;
... ... @@ -566,11 +570,11 @@ static void on_receive_data( void){
566 570 @brief CRC 체크
567 571 @remark
568 572 @param
569   -@return true: CRC 값 옳음
  573 +@return true: CRC 占쏙옙 占쏙옙占쏙옙
570 574 -----------------------------------------------------------------------------*/
571 575 static int is_crc_ok( void){
572 576  
573   - // rx_index는 새로운 바이트를 넣을 위치. 즉, 데이터 바이트 개수
  577 + // rx_index占쏙옙 占쏙옙占싸울옙 占쏙옙占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙치. 占쏙옙, 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
574 578 U16 crc = CRC16( ( unsigned char *)rx_data, rx_index-2);
575 579  
576 580 U32 data_crc_lo = rx_data[rx_index-2];
... ... @@ -582,10 +586,10 @@ static int is_crc_ok( void){
582 586 }
583 587  
584 588 /** ----------------------------------------------------------------------------
585   -@brief uart 포트로부터 수신한 데이터를 처리
  589 +@brief uart 占쏙옙트占싸븝옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 처占쏙옙
586 590 @remark
587   -@param obj : 통신 객체
588   -@return 수신 바이트 개수
  591 +@param obj : 占쏙옙占 占쏙옙체
  592 +@return 占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
589 593 -----------------------------------------------------------------------------*/
590 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 597 int ndx;
594 598 int rdcnt;
595 599  
596   - tm_recv = get_cur_msec(); // 웨이트 타임 오버에 걸리지 않도록 현재 시간 갱신.
  600 + tm_recv = get_cur_msec(); // 占쏙옙占쏙옙트 타占쏙옙 占쏙옙占쏙옙占쏙옙 占심몌옙占쏙옙 占십듸옙占쏙옙 占쏙옙占쏙옙 占시곤옙 占쏙옙占쏙옙.
597 601  
598 602 memset(buff, 0, sizeof(buff));
599 603 rdcnt = uart_read(obj, buff, sizeof(buff));
... ... @@ -609,10 +613,10 @@ static int on_serial_read( poll_obj_t *obj )
609 613 case SW_WAIT_FUNCTION :
610 614 rx_data[rx_index++] = ch_data;
611 615 switch( ch_data){
612   - case 0x03 : // 모드버스 0x04는 COUNT 정보가 필요
  616 + case 0x03 : // 占쏙옙占쏙옙占쏙옙 0x04占쏙옙 COUNT 占쏙옙占쏙옙占쏙옙 占십울옙
613 617 sw_uart = SW_WAIT_COUNT;
614 618 break;
615   - case 0x04 : // 모드버스 0x04는 COUNT 정보가 필요
  619 + case 0x04 : // 占쏙옙占쏙옙占쏙옙 0x04占쏙옙 COUNT 占쏙옙占쏙옙占쏙옙 占십울옙
616 620 sw_uart = SW_WAIT_COUNT;
617 621 break;
618 622 default :
... ... @@ -620,28 +624,28 @@ static int on_serial_read( poll_obj_t *obj )
620 624 break;
621 625 }
622 626 break;
623   - case SW_WAIT_COUNT : // 데이터 길이를 구함
  627 + case SW_WAIT_COUNT : // 占쏙옙占쏙옙占쏙옙 占쏙옙占싱몌옙 占쏙옙占쏙옙
624 628 sw_uart = SW_WAIT_DATA_COUNT;
625 629 rx_data[rx_index++] = ch_data;
626   - rx_szdata = ch_data; // CRC를 제외한 바이트 개수
  630 + rx_szdata = ch_data; // CRC占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙
627 631 break;
628 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 635 sw_uart = SW_WAIT_CRC_LOW;
632 636 }
633 637 break;
634   - case SW_WAIT_DATA : // 모드 버스 0x05에서 읽어 들일 데이터 개수는 4바이
  638 + case SW_WAIT_DATA : // 占쏙옙占 占쏙옙占쏙옙 0x05占쏙옙占쏙옙 占싻억옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 4占쏙옙占쏙옙
635 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 641 sw_uart = SW_WAIT_CRC_LOW;
638 642 }
639 643 break;
640   - case SW_WAIT_CRC_LOW : // crc low 바이트 수신
  644 + case SW_WAIT_CRC_LOW : // crc low 占쏙옙占쏙옙트 占쏙옙占쏙옙
641 645 sw_uart = SW_WAIT_CRC_HIGH;
642 646 rx_data[rx_index++] = ch_data;
643 647 break;
644   - case SW_WAIT_CRC_HIGH : // crc high 바이트 수신
  648 + case SW_WAIT_CRC_HIGH : // crc high 占쏙옙占쏙옙트 占쏙옙占쏙옙
645 649 sw_uart = SW_WAIT_ADDRESS;
646 650 rx_data[rx_index++] = ch_data;
647 651 if ( is_crc_ok()){
... ... @@ -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 665 @param
662 666 @return
663 667 -----------------------------------------------------------------------------*/
... ... @@ -666,44 +670,44 @@ static void on_no_data( void){
666 670 if ( MAX_RETRY < cnt_retry){
667 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 676 } else {
673   - write_to_uart(); // 이전 전송 데이터를 다시 전송
  677 + write_to_uart(); // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占싶몌옙 占쌕쏙옙 占쏙옙占쏙옙
674 678 cnt_retry++;
675 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 687 @remark
684   -@param n_step : 실행할 STEP
  688 +@param n_step : 占쏙옙占쏙옙占쏙옙 STEP
685 689 @return -
686 690 -----------------------------------------------------------------------------*/
687 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 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 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 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 711 @param -
708 712 @return -
709 713 -----------------------------------------------------------------------------*/
... ... @@ -715,14 +719,14 @@ static void run_next_step_work( void){
715 719 }
716 720  
717 721 /** ----------------------------------------------------------------------------
718   -@brief 데이터 수신 여부 확인
  722 +@brief 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 확占쏙옙
719 723 @remark
720   -@param msec_t tm_curr : 현재 시간
  724 +@param msec_t tm_curr : 占쏙옙占쏙옙 占시곤옙
721 725 @return
722 726 -----------------------------------------------------------------------------*/
723 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 730 on_no_data();
727 731 }
728 732 return 0;
... ... @@ -730,20 +734,20 @@ int rs485_timer( msec_t tm_curr){
730 734  
731 735  
732 736 /** ----------------------------------------------------------------------------
733   -@brief rs485 모듈 실행 시작
  737 +@brief rs485 占쏙옙占 占쏙옙占쏙옙 占쏙옙占쏙옙
734 738 @remark
735   -@param uart_name : uart 장치 이름
  739 +@param uart_name : uart 占쏙옙치 占싱몌옙
736 740 @return
737 741 -----------------------------------------------------------------------------*/
738 742 int rs845_run_start( void){
739 743  
740   - run_step_work( STEP_CONTROL); // 오븐 제어 상태를 구하는 작업부터 시작
  744 + run_step_work( STEP_CONTROL); // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占승몌옙 占쏙옙占싹댐옙 占쌜억옙占쏙옙占쏙옙 占쏙옙占쏙옙
741 745  
742 746 return 0;
743 747 }
744 748  
745 749 /** ----------------------------------------------------------------------------
746   -@brief 모듈 시작을 위한 초기활를 한다.
  750 +@brief 占쏙옙占 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占십깍옙활占쏙옙 占싼댐옙.
747 751 @remark
748 752 @param
749 753 @return
... ... @@ -754,7 +758,7 @@ int rs485_initialize( void){
754 758 poll_obj_t *obj;
755 759 int ndx;
756 760  
757   - inifile = ini_create( INI_SYSTEM); // IniFile 생성
  761 + inifile = ini_create( INI_SYSTEM); // IniFile 占쏙옙占쏙옙
758 762 if ( NULL == inifile){
759 763 printf( "ini file error.\n");
760 764 return -1;
... ... @@ -775,12 +779,12 @@ int rs485_initialize( void){
775 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 784 obj_uart = obj;
781 785  
782   - // 에러 카운트를 위한 비트 초기화
783   - // 추후 파일에서 읽어 들임
  786 + // 占쏙옙占쏙옙 카占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙트 占십깍옙화
  787 + // 占쏙옙占쏙옙 占쏙옙占싹울옙占쏙옙 占싻억옙 占쏙옙占쏙옙
784 788  
785 789 for ( ndx = 0; ndx < 16; ndx++){
786 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 9 #ifndef _ALL__SHARE_HEADER_
10 10 #define _ALL__SHARE_HEADER_
... ... @@ -25,9 +25,9 @@ typedef unsigned long long U64;
25 25 typedef signed short I16;
26 26  
27 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 33 enum target_value_t {
... ... @@ -46,6 +46,10 @@ enum target_value_t {
46 46 TG_FAN2_RPM,
47 47 TG_FAN1_DIRECTOIN,
48 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 53 TG_ERROR_CLEAR
50 54 };
51 55  
... ... @@ -87,18 +91,18 @@ enum target_onoff_t {
87 91 };
88 92  
89 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 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 108 typedef struct
... ... @@ -149,10 +153,10 @@ typedef struct {
149 153 U16 reserved25; // 25
150 154 U16 reserved26; // 26
151 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 160 U16 reserved2c; // 2C
157 161 U16 reserved2d; // 2D
158 162 U16 reserved2e; // 2E
... ... @@ -212,7 +216,14 @@ typedef struct {
212 216 U16 communication_error; // 2F
213 217 U16 sensor_error; // 30
214 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 227 } STRUCT_PACK oven_state_t;
217 228  
218 229 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  
... ...