|
|
|
void Periodic_run(){
|
|
|
|
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 Inputs
|
|
|
|
|
[Command 및 Process 중간 완료]
- Ethernet을 통한 명령
ㄴ DO!, DI?, AI?, SV!, SV?, PV?
ㄴ AT!(MC9 AutoTune): 테스트 완료, 주석으로 정리해 놨음
ㄴ AO!: DAC 수령 후 작성 예정
- Buffer
ㄴ Write는 CRLF 확인 후 없으면 CRLF 추가 후 write
ㄴ Read는 CRLF 까지 데이터를 출력, CRLF는 미출력으로 필요시 read후 추가 필요
ㄴ 즉, Buffer는 CRLF를 기준으로 쓰기/읽기 진행, 기본적으로 입출력시 CRLF 제외되나, 저장시 CRLF 있는 경우 중복방지처리 됨
2 years ago
|
|
|
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]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
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_10ms(){
|
|
|
|
msCnt += 10;
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|