You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
2.6 KiB
C++

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;
}
}