Commit 5b54553bd36c92090aee4c1a178e4062d3869470
1 parent
337d4f1a3c
Exists in
master
and in
2 other branches
가스 오븐 프로토콜 반영
Showing
2 changed files
with
176 additions
and
161 deletions
Show diff stats
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 |