From 5b54553bd36c92090aee4c1a178e4062d3869470 Mon Sep 17 00:00:00 2001 From: victor Date: Wed, 17 May 2017 17:38:40 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B0=80=EC=8A=A4=20=EC=98=A4=EB=B8=90=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=86=A0=EC=BD=9C=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/app-prime-modbus/rs485_serial.c | 284 +++++++++++---------- app/app-prime-modbus/include/all_share.h | 53 ++-- 2 files changed, 176 insertions(+), 161 deletions(-) diff --git a/app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c b/app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c index d178f3f..33a87f0 100644 --- a/app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c +++ b/app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c @@ -8,8 +8,8 @@ /** @file main_control.c @date 2017/01/12 - @author Àå±æ¼® jks@falinux.com FALinux.Co.,Ltd. - @brief ¿ÂµµÁ¶Àý±â Á¦¾î ÇÁ·Î±×·¥ + @author ��漮 jks@falinux.com FALinux.Co.,Ltd. + @brief �µ������� ���� ���α׷� @todo @bug @@ -17,8 +17,8 @@ @warning */ // -// ÀúÀÛ±Ç ¿¡ÇÁ¿¡À̸®´ª½º(ÁÖ) -// ¿ÜºÎ°ø°³ ±ÝÁö +// ���۱� �������̸�����(��) +// �ܺΰ��� ���� // //---------------------------------------------------------------------------- @@ -31,7 +31,7 @@ #include #include -#define MAX_RETRY 3 // Àü¼Û ½ÇÆÐ ½Ã Àç Àü¼Û Ƚ¼ö +#define MAX_RETRY 3 // ���� ���� �� �� ���� Ƚ�� #define MAX_BUFF_SIZE 1024 enum step_t { @@ -63,25 +63,25 @@ static char buff[MAX_BUFF_SIZE]; static poll_obj_t *obj_uart; static enum step_t step_work = STEP_CONTROL; static enum switch_t sw_uart = SW_WAIT_ADDRESS; -static char tx_data[MAX_BUFF_SIZE]; // Àü¼Û µ¥ÀÌÅÍ ¹öÆÛ -static int tx_szdata; // Àü¼Û µ¥ÀÌÅÍ ±æÀÌ +static char tx_data[MAX_BUFF_SIZE]; // ���� ������ ���� +static int tx_szdata; // ���� ������ ���� static U8 rx_data[MAX_BUFF_SIZE]; static int rx_index; static int rx_szdata; -static msec_t tm_recv; // Åë½Å »óÅ ȮÀÎÀ» À§ÇÑ ½Ã°£ º¯¼ö -static int cnt_retry; // Àü¼Û ½ÇÆп¡ ´ëÇÑ Àç Àü¼Û Ƚ¼ö -static int bit_onoff19 = 0; // bit sw 0x19 º¯¼ö °ª -static int bit_onoff21 = 0; // bit sw 0x21 º¯¼ö °ª -static int bit_onoff22 = 0; // bit sw 0x22 º¯¼ö °ª -static U16 oven_error_bit = 0; // ¿Àºì ¿¡·¯ ºñÆ® °ª -static U16 ary_error_cnt[16]; // ¿¡·¯ Ä«¿îÆ® +static msec_t tm_recv; // ��� ���� Ȯ���� ���� �ð� ���� +static int cnt_retry; // ���� ���п� ���� �� ���� Ƚ�� +static int bit_onoff19 = 0; // bit sw 0x19 ���� �� +static int bit_onoff21 = 0; // bit sw 0x21 ���� �� +static int bit_onoff22 = 0; // bit sw 0x22 ���� �� +static U16 oven_error_bit = 0; // ���� ���� ��Ʈ �� +static U16 ary_error_cnt[16]; // ���� ī��Ʈ -static void run_step_work( int n_step); // ÁöÁ¤µÈ ÀÛ¾÷À» ½ÇÇà -static void run_next_step_work( void); // ´ÙÀ½ ÀÛ¾÷ ½ÇÇà +static void run_step_work( int n_step); // ������ �۾��� ���� +static void run_next_step_work( void); // ���� �۾� ���� /** ---------------------------------------------------------------------------- -@brief WORD ¹ÙÀÌÆ®ÀÇ ÇÏÀ§/»óÀ§ ¹ÙÀÌÆ® ¼ø¼­¸¦ ¹Ù²Û´Ù. -@remark ºò¿£µð¾ÈÀ» ¸®Æ²¿£µð¾ÈÀ¸·Î, ¸®Æ²¿£µð¾ÈÀ» ºò¿£µð¾ÈÀ¸·Î º¯°æ +@brief WORD ����Ʈ�� ����/���� ����Ʈ ������ �ٲ۴�. +@remark �ò¿£µï¿½ï¿½ï¿½ï¿½ ��Ʋ���������, ��Ʋ������� �ò¿£µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ���� @param - @return - -----------------------------------------------------------------------------*/ @@ -94,14 +94,14 @@ static void swap_byte( U16 *p16){ } /** ---------------------------------------------------------------------------- -@brief uart·Î ½ÇÁ¦ µ¥ÀÌÅÍ Àü¼Û -@remark µ¥ÀÌÅÍ Àü¼ÛÈÄ uart ¼ö½Å ´Ü°è¸¦ ÃʱâÈ­ÇÑ´Ù. +@brief uart�� ���� ������ ���� +@remark ������ ������ uart ���� �ܰ踦 �ʱ�ȭ�Ѵ�. @param @return -----------------------------------------------------------------------------*/ static int write_to_uart( void){ - { // µð¹ö±ë ÄÚµå, Àü¼Û µ¥ÀÌÅ͸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î Ãâ·Â + { // ����� �ڵ�, ���� �����͸� ����Ʈ ������ ��� int ndx; printf( "send:"); @@ -112,19 +112,19 @@ static int write_to_uart( void){ } int rst = uart_write( obj_uart, tx_data, tx_szdata); - sw_uart = SW_WAIT_ADDRESS; // µ¥ÀÌÅÍ Àü¼Û ÈÄ uart ¼ö½Å ´Ü°è ÃʱâÈ­ + sw_uart = SW_WAIT_ADDRESS; // ������ ���� �� uart ���� �ܰ� �ʱ�ȭ - tm_recv = get_cur_msec(); // ÇöÀç ½Ã°£ °»½Å + tm_recv = get_cur_msec(); // ���� �ð� ���� return rst; } /** ---------------------------------------------------------------------------- -@brief uart·Î Àü¼ÛÇÒ µ¥ÀÌÅ͸¦ ¿Ï¼º -@remark tx_data <- Àü¼ÛÇÒ µ¥ÀÌÅÍ - tx_szdata <- Àü¼ÛÇÒ µ¥ÀÌÅÍ ¹ÙÀÌÆ® °³¼ö -@param pdata : µ¥ÀÌÅÍ Æ÷ÀÎÅÍ - sz_data : µ¥ÀÌÅÍ ¹ÙÀÌÆ® °³¼ö +@brief uart�� ������ �����͸� �ϼ� +@remark tx_data <- ������ ������ + tx_szdata <- ������ ������ ����Ʈ ���� +@param pdata : ������ ������ + sz_data : ������ ����Ʈ ���� @return -----------------------------------------------------------------------------*/ static void make_tx_data( char *pdata, int sz_data){ @@ -141,11 +141,11 @@ static void make_tx_data( char *pdata, int sz_data){ } /** ---------------------------------------------------------------------------- -@brief ¿ÀºìÀ¸·ÎºÎÅÍ »óÅ µ¥ÀÌÅ͸¦ ¿äûÇÑ´Ù. +@brief ��������� ���� �����͸� ��û�Ѵ�. @remark -@param addr_high : »óÀ§ address - addr_low : ÇÏÀ§ address - size : ¿ä±¸ÇÒ µ¥ÀÌÅÍ ¹ÙÀÌÆ® °³¼ö +@param addr_high : ���� address + addr_low : ���� address + size : �䱸�� ������ ����Ʈ ���� @return -----------------------------------------------------------------------------*/ 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){ buff[ndx++] = 0x00; buff[ndx++] = size; - make_tx_data( buff, ndx); // ½ÇÁ¦ Àü¼Û µ¥ÀÌÅ͸¦ »ý¼º - write_to_uart(); // uart·Î Àü¼Û + make_tx_data( buff, ndx); // ���� ���� �����͸� ���� + write_to_uart(); // uart�� ���� } /** ---------------------------------------------------------------------------- -@brief ¿ÀºìÀ¸·ÎºÎÅÍ »óÅ µ¥ÀÌÅ͸¦ ¿äûÇÑ´Ù. +@brief ��������� ���� �����͸� ��û�Ѵ�. @remark -@param addr_high : »óÀ§ address - addr_low : ÇÏÀ§ address - size : ¿ä±¸ÇÒ µ¥ÀÌÅÍ ¹ÙÀÌÆ® °³¼ö +@param addr_high : ���� address + addr_low : ���� address + size : �䱸�� ������ ����Ʈ ���� @return -----------------------------------------------------------------------------*/ 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){ buff[ndx++] = 0x00; buff[ndx++] = size; - make_tx_data( buff, ndx); // ½ÇÁ¦ Àü¼Û µ¥ÀÌÅ͸¦ »ý¼º - write_to_uart(); // uart·Î Àü¼Û + make_tx_data( buff, ndx); // ���� ���� �����͸� ���� + write_to_uart(); // uart�� ���� } /** ---------------------------------------------------------------------------- -@brief ¿ÀºìÀ¸·Î ¸í·É Àü¼Û(¾²±â ¿äû) +@brief �������� ��� ����(���� ��û) @remark -@param addr_high : »óÀ§ address - addr_low : ÇÏÀ§ address - data_high : »óÀ§ data - data_log : ÇÏÀ§ data +@param addr_high : ���� address + addr_low : ���� address + data_high : ���� data + data_log : ���� data @return -----------------------------------------------------------------------------*/ 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_ buff[ndx++] = data_high; buff[ndx++] = data_low; - make_tx_data( buff, ndx); // ½ÇÁ¦ Àü¼Û µ¥ÀÌÅ͸¦ »ý¼º - write_to_uart(); // uart·Î Àü¼Û + make_tx_data( buff, ndx); // ���� ���� �����͸� ���� + write_to_uart(); // uart�� ���� } /** ---------------------------------------------------------------------------- -@brief GUIÀÇ ¾²±â ¸í·É ½ÇÇà +@brief GUI�� ���� ��� ���� @remark -@param pcmd : GUI°¡ ¿äûÇÑ ¸í·É +@param pcmd : GUI�� ��û�� ��� @return -----------------------------------------------------------------------------*/ static void set_value( command_t *pcmd){ @@ -234,19 +234,23 @@ static void set_value( command_t *pcmd){ case TG_FAN2_RPM : addr = 0x1e; break; case TG_FAN1_DIRECTOIN : addr = 0x1f; break; case TG_FAN2_DIRECTOIN : addr = 0x20; break; + case TG_BURNER1_1_RPM : addr = 0x28; break; + case TG_BURNER1_2_RPM : addr = 0x29; break; + case TG_BURNER23_1_RPM : addr = 0x2A; break; + case TG_BURNER23_2_RPM : addr = 0x2B; break; case TG_ERROR_CLEAR : addr = 0x31; break; } int value_high = ( pcmd->value >> 8) & 0xff; int value_low = ( pcmd->value ) & 0xff; - modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 ÇÔ¼ö È£Ãâ + modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 �Լ� ȣ�� } /** ---------------------------------------------------------------------------- -@brief GUIÀÇ ½ºÀ§Ä¡ on/off ¸í·É ½ÇÇà +@brief GUI�� ����ġ on/off ��� ���� @remark -@param pcmd : GUI°¡ ¿äûÇÑ ¸í·É +@param pcmd : GUI�� ��û�� ��� @return -----------------------------------------------------------------------------*/ static void onoff_switch( command_t *pcmd){ @@ -265,13 +269,13 @@ static void onoff_switch( command_t *pcmd){ int value_high = 0; int value_low = pcmd->value; - modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 ÇÔ¼ö È£Ãâ + modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 �Լ� ȣ�� } /** ---------------------------------------------------------------------------- -@brief GUIÀÇ ºñÆ® ´ÜÀ§ ½ºÀ§Ä¡ on/off ¸í·É ½ÇÇà -@remark 0x0021, 0x0022 ºñÆ® ´ÜÀ§ ½ºÀ§Ä¡ Á¦¾î -@param pcmd : GUI°¡ ¿äûÇÑ ¸í·É +@brief GUI�� ��Ʈ ���� ����ġ on/off ��� ���� +@remark 0x0021, 0x0022 ��Ʈ ���� ����ġ ���� +@param pcmd : GUI�� ��û�� ��� @return -----------------------------------------------------------------------------*/ static void onoff_bit( command_t *pcmd){ @@ -346,11 +350,11 @@ static void onoff_bit( command_t *pcmd){ int value_high = ( *p_onoff >> 8) & 0xff; int value_low = ( *p_onoff ) & 0xff; - modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 ÇÔ¼ö È£Ãâ + modbus_func06( 0, addr, value_high, value_low); // Modbus Func 6 �Լ� ȣ�� } /** ---------------------------------------------------------------------------- -@brief ¿Àºì ¿¡·¯ ºñÆ®º° Ä«¿îÆ®¸¦ ÃʱâÈ­ +@brief ���� ���� ��Ʈ�� ī��Ʈ�� �ʱ�ȭ @remark - @param - @return @@ -365,7 +369,7 @@ static void clear_error_cnt(){ } /** ---------------------------------------------------------------------------- -@brief GUI·ÎºÎÅÍ ¼ö½ÅÇÑ ¿äûÀÌ ÀÖ´Ù¸é +@brief GUI��� ������ ��û�� �ִٸ� @remark - @param - @return @@ -374,19 +378,19 @@ static void check_gui_cmd( void){ command_t cmd; - if ( 0 < gui_get_command( &cmd)){ // GUI·ÎºÎÅÍ ¿äûÀÌ ÀÖ´Ù¸é + if ( 0 < gui_get_command( &cmd)){ // GUI��� ��û�� �ִٸ� switch( cmd.cmd){ - case CMD_VALUE : // ¿Àºì °ª ¼³Á¤ + case CMD_VALUE : // ���� �� ���� set_value( &cmd); break; - case CMD_ONOFF : // ¿Àºì ½ºÀ§Ä¡ º¯°æ + case CMD_ONOFF : // ���� ����ġ ���� if ( TG_BITONOFF > cmd.target){ onoff_switch( &cmd); } else { onoff_bit( &cmd); } break; - case CMD_CLEAR_ERROR_CNT : // ¿¡·¯ Ä«¿îÆ® ÃʱâÈ­ + case CMD_CLEAR_ERROR_CNT : // ���� ī��Ʈ �ʱ�ȭ clear_error_cnt(); break; } @@ -397,7 +401,7 @@ static void check_gui_cmd( void){ } /** ---------------------------------------------------------------------------- -@brief ¿ÀºìÀ¸·ÎºÎÅÍ »óÅ °ªÀ» ¹Þ¾ÒÀ½ +@brief ��������� ���� ���� �޾��� @remark @param - @return @@ -407,14 +411,14 @@ static void on_rcv_control( void){ gui_oven_control_t oven; int ndx; - // ºò¿£µð¾ÈÀ» ¸®Æ²¿£µð¾ÈÀ¸·Î º¯°æ - U16 *pword = (U16 *)&rx_data[3]; // µ¥ÀÌÅÍ´Â rx_data[3]¿¡¼­ ½ÃÀÛ + // �ò¿£µï¿½ï¿½ï¿½ï¿½ ��Ʋ��������� ���� + U16 *pword = (U16 *)&rx_data[3]; // �����ʹ� rx_data[3]���� ���� for ( ndx = 0; ndx < rx_szdata / 2; ndx++){ swap_byte( pword++); } - // º¯¼ö ó¸® + // ���� ó�� oven.header = HDR_OVEN_CONTROL; memcpy( ( char *)&oven.control, &rx_data[3], sizeof( oven_control_t)); @@ -435,14 +439,14 @@ static void on_rcv_control( void){ printf( "manual_onoff21 = 0x%04x\n", bit_onoff21); printf( "manual_onoff22 = 0x%04x\n", bit_onoff22); - // GUI·Î Àü¼Û + // GUI�� ���� gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t)); - // ´ÙÀ½ ´Ü°è ½ÇÇà + // ���� �ܰ� ���� run_next_step_work(); } /** ---------------------------------------------------------------------------- -@brief ¿ÀºìÀ¸·ÎºÎÅÍ »óÅ °ªÀ» ¹Þ¾ÒÀ½ +@brief ��������� ���� ���� �޾��� @remark @param - @return @@ -452,59 +456,59 @@ static void on_rcv_status( void){ gui_oven_state_t oven; int ndx; - // ºò¿£µð¾ÈÀ» ¸®Æ²¿£µð¾ÈÀ¸·Î º¯°æ - U16 *pword = (U16 *)&rx_data[3]; // µ¥ÀÌÅÍ´Â rx_data[3]¿¡¼­ ½ÃÀÛ + // �ò¿£µï¿½ï¿½ï¿½ï¿½ ��Ʋ��������� ���� + U16 *pword = (U16 *)&rx_data[3]; // �����ʹ� rx_data[3]���� ���� for ( ndx = 0; ndx < rx_szdata / 2; ndx++){ swap_byte( pword++); } - // º¯¼ö ó¸® + // ���� ó�� oven.header = HDR_OVEN_STATE; - memcpy( ( char *)&oven.state, &rx_data[3], 0x32 * 2); // 0x32 : ¿Àºì »óÅ ¿öµå 2¹ÙÀÌÆ® °³¼ö + memcpy( ( char *)&oven.state, &rx_data[3], 0x32 * 2); // 0x32 : ���� ���� ���� 2����Ʈ ���� - bit_onoff21 = oven.state.onoff_state1; // ÇöÀç ¿Àºì »óŸ¦ ¹Ý¿µ - bit_onoff22 = oven.state.onoff_state2; // ÇöÀç ¿Àºì »óŸ¦ ¹Ý¿µ + bit_onoff21 = oven.state.onoff_state1; // ���� ���� ���¸� �ݿ� + bit_onoff22 = oven.state.onoff_state2; // ���� ���� ���¸� �ݿ� if ( oven_error_bit != oven.state.system_error){ - // º¯°æµÈ ºñÆ®°¡ ÀÖ´Â Áö È®ÀÎ + // ����� ��Ʈ�� �ִ� �� Ȯ�� U16 bit_ndx = 0x0001; int bit_prev; int bit_curr; for ( ndx = 0; ndx < 16; ndx++){ - bit_prev = oven_error_bit & bit_ndx; // ÀÌÀü ºñÆ® »óÅ - bit_curr = oven.state.system_error & bit_ndx; // ÇöÀç ºñÆ® »óÅ - if ( bit_prev != bit_curr){ // ºñÆ® °ª¿¡ Â÷ÀÌ°¡ ÀÖ´Ù¸é - if ( 0 != bit_prev){ // ºñÆ® °ªÀÌ 0->1 º¯È­ÀÏ ¶§ ¿¡·¯ Ä«¿îÆ® Áõ°¡ + bit_prev = oven_error_bit & bit_ndx; // ���� ��Ʈ ���� + bit_curr = oven.state.system_error & bit_ndx; // ���� ��Ʈ ���� + if ( bit_prev != bit_curr){ // ��Ʈ ���� ���̰� �ִٸ� + if ( 0 != bit_prev){ // ��Ʈ ���� 0->1 ��ȭ�� �� ���� ī��Ʈ ���� ary_error_cnt[ndx]++; } } bit_ndx <<= 1; } - // GUI·Î ¿¡·¯ Ä«¿ìÆ® Àü´Þ + // GUI�� ���� ī��Ʈ ���� for ( ndx = 0; ndx < 16; ndx++){ oven.state.error_cnt[ndx] = ary_error_cnt[ndx]; } - oven_error_bit = oven.state.system_error; // ¿¡·¯ ºñÆ® °ª º¯°æ + oven_error_bit = oven.state.system_error; // ���� ��Ʈ �� ���� } printf( "onoff_state1 = 0x%04x\n", oven.state.onoff_state1); printf( "onoff_state2 = 0x%04x\n", oven.state.onoff_state2); printf( "onoff_realy_load = 0x%04x\n", oven.state.onoff_relay_load); - // GUI·Î Àü¼Û + // GUI�� ���� gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t)); - // ´ÙÀ½ ´Ü°è ½ÇÇà + // ���� �ܰ� ���� run_next_step_work(); } /** ---------------------------------------------------------------------------- -@brief ¿ÀºìÀ¸·ÎºÎÅÍ ¸í·É ¼öÇà °á°ú¸¦ ¹Þ¾ÒÀ½ +@brief ��������� ��� ���� ����� �޾��� @remark @param - @return @@ -513,15 +517,15 @@ static void on_rcv_echo( void){ printf( "receive func code 0x%x\n", rx_data[1] & 0xff); - if ( gui_command_exists()){ // ó¸®ÇؾßÇÒ ¸í·ÉÀÌ ³²¾Æ ÀÖ´Ù¸é - check_gui_cmd(); // ´ÙÀ½ ¸í·ÉÀ» Àü¼ÛÇÑ´Ù. - } else { // ó¸®ÇؾßÇÒ ¸í·ÉÀÌ ¾ø´Ù¸é - run_next_step_work(); // ´ÙÀ½ ´Ü°è·Î ³Ñ¾î °£´Ù. + if ( gui_command_exists()){ // ó���ؾ��� ����� ���� �ִٸ� + check_gui_cmd(); // ���� ����� �����Ѵ�. + } else { // ó���ؾ��� ����� ���ٸ� + run_next_step_work(); // ���� �ܰ�� �Ѿ� ����. } } /** ---------------------------------------------------------------------------- -@brief ¿ÀºìÀ¸·ÎºÎÅÍ Modbus 80 ¿¡·¯ ÄÚµå ¼ö½Å ½Ã ó¸® +@brief ��������� Modbus 80 ���� �ڵ� ���� �� ó�� @remark @param - @return @@ -533,7 +537,7 @@ static void on_rcv_80_code( void){ switch( step_work){ case STEP_CHECK : printf( "failed to command to oven\n"); - gui_send_error_code( ERR_RECEIVE_80); // 0x80 ÄÚµå ¼ö·ÉÀ» GUI¿¡ ¾Ë¸² + gui_send_error_code( ERR_RECEIVE_80); // 0x80 �ڵ� ������ GUI�� �˸� break; default : break; @@ -542,14 +546,14 @@ static void on_rcv_80_code( void){ } /** ---------------------------------------------------------------------------- -@brief uart·ÎºÎÅÍ CRC±îÁö È®ÀÎÇÑ Àü¹®À» ¼ö½ÅÇßÀ½ +@brief uart��� CRC���� Ȯ���� ������ �������� @remark @param @return -----------------------------------------------------------------------------*/ static void on_receive_data( void){ - // function Äڵ庰·Î ºÐ·ù + // function �ڵ庰�� �з� switch ( rx_data[1]){ case 0x03 : on_rcv_control(); break; case 0x04 : on_rcv_status(); break; @@ -566,11 +570,11 @@ static void on_receive_data( void){ @brief CRC üũ @remark @param -@return true: CRC °ª ¿ÇÀ½ +@return true: CRC �� ���� -----------------------------------------------------------------------------*/ static int is_crc_ok( void){ - // rx_index´Â »õ·Î¿î ¹ÙÀÌÆ®¸¦ ³ÖÀ» À§Ä¡. Áï, µ¥ÀÌÅÍ ¹ÙÀÌÆ® °³¼ö + // rx_index�� ���ο� ����Ʈ�� ���� ��ġ. ��, ������ ����Ʈ ���� U16 crc = CRC16( ( unsigned char *)rx_data, rx_index-2); U32 data_crc_lo = rx_data[rx_index-2]; @@ -582,10 +586,10 @@ static int is_crc_ok( void){ } /** ---------------------------------------------------------------------------- -@brief uart Æ÷Æ®·ÎºÎÅÍ ¼ö½ÅÇÑ µ¥ÀÌÅ͸¦ ó¸® +@brief uart ��Ʈ�κ��� ������ �����͸� ó�� @remark -@param obj : Åë½Å °´Ã¼ -@return ¼ö½Å ¹ÙÀÌÆ® °³¼ö +@param obj : ��� ��ü +@return ���� ����Ʈ ���� -----------------------------------------------------------------------------*/ static int on_serial_read( poll_obj_t *obj ) { @@ -593,7 +597,7 @@ static int on_serial_read( poll_obj_t *obj ) int ndx; int rdcnt; - tm_recv = get_cur_msec(); // ¿þÀÌÆ® ŸÀÓ ¿À¹ö¿¡ °É¸®Áö ¾Êµµ·Ï ÇöÀç ½Ã°£ °»½Å. + tm_recv = get_cur_msec(); // ����Ʈ Ÿ�� ������ �ɸ��� �ʵ��� ���� �ð� ����. memset(buff, 0, sizeof(buff)); rdcnt = uart_read(obj, buff, sizeof(buff)); @@ -609,10 +613,10 @@ static int on_serial_read( poll_obj_t *obj ) case SW_WAIT_FUNCTION : rx_data[rx_index++] = ch_data; switch( ch_data){ - case 0x03 : // ¸ðµå¹ö½º 0x04´Â COUNT Á¤º¸°¡ ÇÊ¿ä + case 0x03 : // ������ 0x04�� COUNT ������ �ʿ� sw_uart = SW_WAIT_COUNT; break; - case 0x04 : // ¸ðµå¹ö½º 0x04´Â COUNT Á¤º¸°¡ ÇÊ¿ä + case 0x04 : // ������ 0x04�� COUNT ������ �ʿ� sw_uart = SW_WAIT_COUNT; break; default : @@ -620,28 +624,28 @@ static int on_serial_read( poll_obj_t *obj ) break; } break; - case SW_WAIT_COUNT : // µ¥ÀÌÅÍ ±æÀ̸¦ ±¸ÇÔ + case SW_WAIT_COUNT : // ������ ���̸� ���� sw_uart = SW_WAIT_DATA_COUNT; rx_data[rx_index++] = ch_data; - rx_szdata = ch_data; // CRC¸¦ Á¦¿ÜÇÑ ¹ÙÀÌÆ® °³¼ö + rx_szdata = ch_data; // CRC�� ������ ����Ʈ ���� break; case SW_WAIT_DATA_COUNT : - rx_data[rx_index++] = ch_data; // rx_szdata °³ÀÇ ¹ÙÀÌÆ® ¸¸Å­ ÀÐ¾î µéÀÓ - if ( rx_szdata == rx_index-3){ // -3: ±¹¹ø 1¹ÙÀÌÆ®, FUN 1¹ÙÀÌÆ®, µ¥ÀÌÅÍ ±æÀÌ 1¹ÙÀÌÆ® ¼±µÎ Á¦°Å + rx_data[rx_index++] = ch_data; // rx_szdata ���� ����Ʈ ��ŭ �о� ���� + if ( rx_szdata == rx_index-3){ // -3: ���� 1����Ʈ, FUN 1����Ʈ, ������ ���� 1����Ʈ ���� ���� sw_uart = SW_WAIT_CRC_LOW; } break; - case SW_WAIT_DATA : // ¸ðµå ¹ö½º 0x05¿¡¼­ ÀÐ¾î µéÀÏ µ¥ÀÌÅÍ °³¼ö´Â 4¹ÙÀÌÆ® + case SW_WAIT_DATA : // ��� ���� 0x05���� �о� ���� ������ ������ 4����Ʈ rx_data[rx_index++] = ch_data; - if ( 4 == rx_index-2){ // -2: ±¹¹ø 1¹ÙÀÌÆ®, FUN 1¹ÙÀÌÆ® + if ( 4 == rx_index-2){ // -2: ���� 1����Ʈ, FUN 1����Ʈ sw_uart = SW_WAIT_CRC_LOW; } break; - case SW_WAIT_CRC_LOW : // crc low ¹ÙÀÌÆ® ¼ö½Å + case SW_WAIT_CRC_LOW : // crc low ����Ʈ ���� sw_uart = SW_WAIT_CRC_HIGH; rx_data[rx_index++] = ch_data; break; - case SW_WAIT_CRC_HIGH : // crc high ¹ÙÀÌÆ® ¼ö½Å + case SW_WAIT_CRC_HIGH : // crc high ����Ʈ ���� sw_uart = SW_WAIT_ADDRESS; rx_data[rx_index++] = ch_data; if ( is_crc_ok()){ @@ -655,9 +659,9 @@ static int on_serial_read( poll_obj_t *obj ) } /** ---------------------------------------------------------------------------- -@brief µ¥ÀÌÅ͸¦ ¼ö½ÅÇÏÁö ¸ø ÇßÀ» ¶§ÀÇ Ã³¸® -@remark ¿Âµµ¸¦ ¸ø ÀоúÀ» ¶§´Â °øÀ¯ ¸Þ¸ð¸®ÀÇ ¿Âµµ °ª¿¡´Â -9999·Î - RUNSTOP °ª ¿äû¿¡ ´ëÇÑ µ¥ÀÌÅÍ°¡ ¾ø´Ù¸é RUNSTOP_NOT_EXISTS·Î ÁöÁ¤ +@brief �����͸� �������� �� ���� ���� ó�� +@remark �µ��� �� ��� ���� ���� �޸��� �µ� ������ -9999�� + RUNSTOP �� ��û�� ���� �����Ͱ� ���ٸ� RUNSTOP_NOT_EXISTS�� ���� @param @return -----------------------------------------------------------------------------*/ @@ -666,44 +670,44 @@ static void on_no_data( void){ if ( MAX_RETRY < cnt_retry){ printf( ">>>>>>>> failed to send data\n"); - if ( STEP_CHECK == step_work){ // GUI ¿äûÀ¸·Î ¸í·ÉÀ» Àü¼Û ÁßÀ̾ú´Ù - gui_send_error_code( ERR_SEND_COMMAND); // ¸í·É Àü¼Û ½ÇÆи¦ GUI¿¡ ¾Ë¸² + if ( STEP_CHECK == step_work){ // GUI ��û���� ����� ���� ���̾��� + gui_send_error_code( ERR_SEND_COMMAND); // ��� ���� ���и� GUI�� �˸� } } else { - write_to_uart(); // ÀÌÀü Àü¼Û µ¥ÀÌÅ͸¦ ´Ù½Ã Àü¼Û + write_to_uart(); // ���� ���� �����͸� �ٽ� ���� cnt_retry++; return; } - run_step_work( STEP_CONTROL); // Åë½ÅÀ» °è¼Ó ½ÇÆÐÇß´Ù¸é ¿Àºì »óŸ¦ ±¸ÇÏ´Â ÀÛ¾÷ºÎÅÍ ´Ù½Ã ½ÃÀÛ + run_step_work( STEP_CONTROL); // ����� ��� �����ߴٸ� ���� ���¸� ���ϴ� �۾����� �ٽ� ���� } /** ---------------------------------------------------------------------------- -@brief Àμö·Î ¹ÞÀº ÀÛ¾÷ STEPÀ» ½ÇÇàÇÑ´Ù. +@brief ��� ���� �۾� STEP�� �����Ѵ�. @remark -@param n_step : ½ÇÇàÇÒ STEP +@param n_step : ������ STEP @return - -----------------------------------------------------------------------------*/ static void run_step_work( int n_step){ - step_work = n_step; // ÀÛ¾÷ ´Ü°è º¯°æ - cnt_retry = 0; // ÇöÀç ÀÛ¾÷¿¡ ´ëÇÑ Àç Àü¼Û Ƚ¼ö ÃʱâÈ­ - msleep( 50); // ´ÙÀ½ ¸í·É ¿äû Àü¿¡ ½¬Áö ¾ÊÀ¸¸é ¼ö½ÅÀÌ ¾È µÇ´Â °æ¿ì°¡ ÀÖÀ½ + step_work = n_step; // �۾� �ܰ� ���� + cnt_retry = 0; // ���� �۾��� ���� �� ���� Ƚ�� �ʱ�ȭ + msleep( 50); // ���� ��� ��û ���� ���� ������ ������ �� �Ǵ� ��찡 ���� switch( step_work){ - case STEP_CONTROL : modbus_func03( 0x00, 0x00, sizeof( oven_control_t) /2); break; // µ¥ÀÌÅÍ ¿äû °³¼ö /2: word °³¼öÀÇ Àý¹Ý, 2°³·Î ¿äûÇϸé 4 ¹ÙÀÌÆ® ¼ö·É - case STEP_STATE : modbus_func04( 0x00, 0x00, 0x32 ); break; // oven_stae_t¿¡ error_cnt[] º¯¼ö°¡ À־ Á÷Á¢ ÀÔ·Â - case STEP_CHECK : check_gui_cmd(); break; // GUI ¿äû È®ÀÎ + case STEP_CONTROL : modbus_func03( 0x00, 0x00, sizeof( oven_control_t) /2); break; // ������ ��û ���� /2: word ������ ����, 2���� ��û�ϸ� 4 ����Ʈ ���� + case STEP_STATE : modbus_func04( 0x00, 0x00, 0x32 ); break; // oven_stae_t�� error_cnt[] ������ �־ ���� �Է� + case STEP_CHECK : check_gui_cmd(); break; // GUI ��û Ȯ�� default : - msleep( 100); // 100mm sec ÈÞ½Ä, Åë½Å °£°Ý Á¶Àý - run_next_step_work(); // ´ÙÀ½ STEP ½ÇÇà + msleep( 100); // 100mm sec �޽�, ��� ���� ���� + run_next_step_work(); // ���� STEP ���� break; } } /** ---------------------------------------------------------------------------- -@brief ´ÙÀ½ ÀÛ¾÷ STEPÀ» ½ÇÇàÇÑ´Ù. -@remark STEPÀ» ±â¾ïÇÏ´Â step_work¸¦ Áõ°¡ +@brief ���� �۾� STEP�� �����Ѵ�. +@remark STEP�� ����ϴ� step_work�� ���� @param - @return - -----------------------------------------------------------------------------*/ @@ -715,14 +719,14 @@ static void run_next_step_work( void){ } /** ---------------------------------------------------------------------------- -@brief µ¥ÀÌÅÍ ¼ö½Å ¿©ºÎ È®ÀÎ +@brief ������ ���� ���� Ȯ�� @remark -@param msec_t tm_curr : ÇöÀç ½Ã°£ +@param msec_t tm_curr : ���� �ð� @return -----------------------------------------------------------------------------*/ int rs485_timer( msec_t tm_curr){ - if ( 500 <= ( tm_curr - tm_recv) ){ // 1ÃÊ ÀÌ»ó ¼ö½ÅµÇ´Â µ¥ÀÌÅÍ°¡ ¾ø´Ù¸é Åë½Å ÀÌ»óÀ¸·Î ÆÇ´Ü + if ( 500 <= ( tm_curr - tm_recv) ){ // 1�� �̻� ���ŵǴ� �����Ͱ� ���ٸ� ��� �̻����� �Ǵ� on_no_data(); } return 0; @@ -730,20 +734,20 @@ int rs485_timer( msec_t tm_curr){ /** ---------------------------------------------------------------------------- -@brief rs485 ¸ðµâ ½ÇÇà ½ÃÀÛ +@brief rs485 ��� ���� ���� @remark -@param uart_name : uart ÀåÄ¡ À̸§ +@param uart_name : uart ��ġ �̸� @return -----------------------------------------------------------------------------*/ int rs845_run_start( void){ - run_step_work( STEP_CONTROL); // ¿Àºì Á¦¾î »óŸ¦ ±¸ÇÏ´Â ÀÛ¾÷ºÎÅÍ ½ÃÀÛ + run_step_work( STEP_CONTROL); // ���� ���� ���¸� ���ϴ� �۾����� ���� return 0; } /** ---------------------------------------------------------------------------- -@brief ¸ðµâ ½ÃÀÛÀ» À§ÇÑ ÃʱâÈ°¸¦ ÇÑ´Ù. +@brief ��� ������ ���� �ʱ�Ȱ�� �Ѵ�. @remark @param @return @@ -754,7 +758,7 @@ int rs485_initialize( void){ poll_obj_t *obj; int ndx; - inifile = ini_create( INI_SYSTEM); // IniFile »ý¼º + inifile = ini_create( INI_SYSTEM); // IniFile ���� if ( NULL == inifile){ printf( "ini file error.\n"); return -1; @@ -775,12 +779,12 @@ int rs485_initialize( void){ ini_free( inifile); } - memset( &rx_data, 0, sizeof( rx_data)); // ´©Àû ¼ö½Å ¹öÆÛ ÃʱâÈ­ + memset( &rx_data, 0, sizeof( rx_data)); // ���� ���� ���� �ʱ�ȭ obj_uart = obj; - // ¿¡·¯ Ä«¿îÆ®¸¦ À§ÇÑ ºñÆ® ÃʱâÈ­ - // ÃßÈÄ ÆÄÀÏ¿¡¼­ ÀÐ¾î µéÀÓ + // ���� ī��Ʈ�� ���� ��Ʈ �ʱ�ȭ + // ���� ���Ͽ��� �о� ���� for ( ndx = 0; ndx < 16; ndx++){ ary_error_cnt[ndx] = 0; diff --git a/app/app-prime-modbus/include/all_share.h b/app/app-prime-modbus/include/all_share.h index 6577855..74273aa 100644 --- a/app/app-prime-modbus/include/all_share.h +++ b/app/app-prime-modbus/include/all_share.h @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ -// È­Àϸí : all_share.h -// ÇÁ·ÎÁ§Æ® : -// ¼³ ¸í : °øÀ¯ ¸Þ¸ð¸® ±¸Á¶Ã¼¸¦ ¼±¾ðÇÑ´Ù. +// ȭ�ϸ� : all_share.h +// ������Ʈ : +// �� �� : ���� �޸� ����ü�� �����Ѵ�. // -// ÀúÀÛ±Ç : FA¸®´ª½ºÁÖ½Äȸ»ç -// ÁÖ ÀÇ : +// ���۱� : FA�������ֽ�ȸ�� +// �� �� : //------------------------------------------------------------------------------ #ifndef _ALL__SHARE_HEADER_ #define _ALL__SHARE_HEADER_ @@ -25,9 +25,9 @@ typedef unsigned long long U64; typedef signed short I16; enum command_enum_t { - CMD_VALUE = 0, // ¿Àºì °ª º¯°æ - CMD_ONOFF, // ¿Àºì ½ºÀ§Ä¡ ON/OFF - CMD_CLEAR_ERROR_CNT // ¿¡·¯ Ä«¿îÆ®¸¦ ÃʱâÈ­ + CMD_VALUE = 0, // ���� �� ���� + CMD_ONOFF, // ���� ����ġ ON/OFF + CMD_CLEAR_ERROR_CNT // ���� ī��Ʈ�� �ʱ�ȭ }; enum target_value_t { @@ -46,6 +46,10 @@ enum target_value_t { TG_FAN2_RPM, TG_FAN1_DIRECTOIN, TG_FAN2_DIRECTOIN, + TG_BURNER1_1_RPM, + TG_BURNER1_2_RPM, + TG_BURNER23_1_RPM, + TG_BURNER23_2_RPM, TG_ERROR_CLEAR }; @@ -87,18 +91,18 @@ enum target_onoff_t { }; enum { - HDR_OVEN_CONTROL = 0, // 40000 ¹øÁö °ª, ÄÁÆ®·Ñ Á¦¾î - HDR_OVEN_STATE, // 30000 ¹øÁö °ª, ¿Àºì »óÅ - HDR_ERROR_CODE // ¿¡·¯ ÄÚµå + HDR_OVEN_CONTROL = 0, // 40000 ���� ��, ��Ʈ�� ���� + HDR_OVEN_STATE, // 30000 ���� ��, ���� ���� + HDR_ERROR_CODE // ���� �ڵ� }; enum { - ERR_SEND_COMMAND = 0, // ¸í·É Àü¼Û¿¡ ´ëÇÑ ÀÀ´äÀÌ ¾øÀ½ - ERR_RECEIVE_80 // 0x80 Äڵ带 ¼ö½ÅÇßÀ½ + ERR_SEND_COMMAND = 0, // ��� ���ۿ� ���� ������ ���� + ERR_RECEIVE_80 // 0x80 �ڵ带 �������� }; // -// ½Ã½ºÅÛ Àüü °øÀ¯ ±¸Á¶Ã¼ ±¸Á¶Ã¼ +// �ý��� ��ü ���� ����ü ����ü // typedef struct @@ -149,10 +153,10 @@ typedef struct { U16 reserved25; // 25 U16 reserved26; // 26 U16 reserved27; // 27 - U16 reserved28; // 28 - U16 reserved29; // 29 - U16 reserved2a; // 2A - U16 reserved2b; // 2B + U16 burner1_1_rpm; // 28 + U16 burner1_2_rpm; // 29 + U16 burner23_1_rpm; // 2A + U16 burner23_2_rpm; // 2B U16 reserved2c; // 2C U16 reserved2d; // 2D U16 reserved2e; // 2E @@ -212,7 +216,14 @@ typedef struct { U16 communication_error; // 2F U16 sensor_error; // 30 U16 reserved31; // 31 - U16 error_cnt[16]; // ¿¡·¯ Ä«¿îÆ® + U16 burner1_ignition_rpm; // 32 + U16 burner2_ignition_rpm; // 33 + U16 burner3_ignition_rpm; // 34 + U16 burner1_current_rpm; // 35 + U16 burner2_current_rpm; // 36 + U16 burner3_current_rpm; // 37 + U16 controller_error; // 38 + U16 error_cnt[16]; // ���� ī��Ʈ } STRUCT_PACK oven_state_t; typedef struct { @@ -232,13 +243,13 @@ typedef struct { //------------------------------------------------------------------------------ // -// ÇÁ·¹ÀÓ, ÆäÀ̷εå +// ������, ���̷ε� // //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ // -// Àü¿ª º¯¼ö Á¤ÀÇ +// ���� ���� ���� // //------------------------------------------------------------------------------ -- 2.1.4