void Periodic_run(){ if(T_1ms){ // Read Arduino AI // read_analog(); T_1ms = false; } if(T_2ms){ // Read Arduino AI read_analog(); // runtime of 1.xxx ms @8ch T_2ms = false; } if(T_5ms){ // Read Arduino AI //read_analog(); // runtime of 2.048012 ms @16ch T_5ms = false; } if(T_10ms){ //read_analog(); T_10ms = false; } if(T_20ms){ // send and recieve RS485 send_485(); recieve_485(); T_20ms = false; } if(T_50ms){ // Read Arduino DI read_digital(); T_50ms = false; } if(T_100ms){ T_100ms = false; } if(T_200ms){ T_200ms = false; } if(T_500ms){ // RS485 recieve (for developing) recieve_485_0(); T_500ms = false; } if(T_1000ms){ // Read MC9 PV for(int i=0 ; i < 2 ; i++){ if(RS485_1_Addr[i] > 0){ write_buff(Buff_485_1_Wr, msg_MC9_PV(RS485_1_Addr[i])); } } /* float sum_AI = 0.0f; float factor = 1.0f / AI_AVG_SIZE; String str = "AI?:"; for (int i = 0; i < Size_AI; i++) { int sum_AI = 0; for(int j = 0; j < AI_AVG_SIZE; j++) { sum_AI += (float) Recent_AI[i][j] * factor; } sum_AI *= 100.0f; // convert the sum to an integer representation unsigned int integer_part = (unsigned int)sum_AI; char formattedNumber[5]; // 4자리 숫자 + 널 종료 문자 //sprintf(formattedNumber, "%04X", Values_AI[i]); // 4자리로 고정된 형식의 문자열 생성 sprintf(formattedNumber, "%04X", integer_part); // 4자리로 고정된 형식의 문자열 생성 str += formattedNumber; // 형식화된 문자열 추가 str += ','; } Serial.println(str); */ T_1000ms = false; } if(T_2000ms){ if(numOf485 > 0){ Serial.print("----- remain 485 buff : "); // For Serial.println(numOf485); // Debugging } T_2000ms = false; } if(T_5000ms){ // Read MC9 SV for(int i=0 ; i < 2 ; i++){ if(RS485_1_Addr[i] > 0){ write_buff(Buff_485_1_Wr, msg_MC9_SV(RS485_1_Addr[i])); } } T_5000ms = false; } } void timer_1ms(){ msCnt += 1; T_1ms = true; if (msCnt % 4 == 0){ T_2ms = true; } if (msCnt % 5 == 0){ T_5ms = true; } if (msCnt % 10 == 0){ T_10ms = true; } if (msCnt % 20 == 0){ T_20ms = true; } if (msCnt % 50 == 0){ T_50ms = true; } if (msCnt % 100 == 0){ T_100ms = true; } if (msCnt % 200 == 0){ T_200ms = true; } if (msCnt % 500 == 0){ T_500ms = true; } if (msCnt % 1000 == 0){ T_1000ms = true; } if (msCnt % 2000 == 0){ T_2000ms = true; } if (msCnt > 5000){ T_5000ms = true; msCnt = 0; } }