안녕하세요.
다름이 아니라 필드에서 지적 받은 것이 있는데, 도무지 어떻게 풀어야 할지 답이 안나와서여.
제가 설치한 장비는 이런 모양새입니다.
모든 기기는 485 통신으로 데이타를 주고 받고, 로컬 장비들은 하드 와이어(전선)으로 연결되어 있습니다.
_____<로컬운전실 PLC 1>--------<제가 설치한 시스템1>*******로컬 장비들1
|
|_____<로컬운전실 PLC 2>--------<제가 설치한 시스템2>*******로컬 장비들2
<메인 운전실 PLC> ------|
|_____<로컬운전실 PLC 3>--------<제가 설치한 시스템3>*******로컬 장비들3
|
|_____<로컬운전실 PLC 4>--------<제가 설치한 시스템4>*******로컬 장비들4
|
|_____<로컬운전실 PLC 5>--------<제가 설치한 시스템5>*******로컬 장비들5
그러니깐 위와 같이 구성되어 있는데요.
이번에 지적 받은 사항이 무엇이냐면, 매일 아침에 메인 운전실에서 각 로컬 장비들 점검을 실시합니다.
이때 메인 운전실 PLC 에서 통신으로 각 로컬 운전실 PLC들로 지령을 주고 각 로컬 운전실 PLC들은 다시
해당 <제가 설치한 시스템>들에 다시 그 지령을 통신으로 뿌려 줍니다. 그럼 <제가 설치한 시스템>들은 받은
지령값이 일정하게 약 4초간 지속되면 인정하고, 받은 지령대로 로컬장비들을 움직이게 됩니다.
그런데, <제가 설치한 시스템>들에 설치된 프로그램은 여러개의 수행 함수들로 구성되어 있고, 함수들은
각각 수행 딜레이 타이머들을 가지고 있으며, 인터럽트 루틴도 두개 정도 들어 있다보니..
문제가 FEEDBACK 입니다. 메인 운전실에는 큰 모니터가 있고 그곳에 각 로컬시스템들의 로컬 장비들의
상태표시 창이 있는데요.
그 로컬 장비들 상태표시는 순수하게 <제가 설치한 시스템>들로 부터 받은 정보입니다.
<제가 설치한 시스템> 들이 <로컬 운전실 PLC> 들로 받아 약 4초간 확실한 지령인지 확인하고 로컬장비를
구동하고 그 로컬 장비들의 상태들을 받아 다시 <로컬 운전실 PLC>들로 주는 이 일련의 과정에서 각각 다른 수행 시간
대를 가지기 때문에 결국 <메인 운전실 모니터> 에도 결국 로컬장비들1과 로컬장비들5 의 상태표시가
똑같이 업데이트 되지 않는다는 것입니다. 심하면 3초정도 차이가 나더라구요...
그니깐 메인 운전실에서 지령 스위치는 하나입니다. 그 스위치로 지령을 내렸는데, 피드백은 화면에 각기 다른
시간대에 들어오니깐 문제로 제시하고 있습니다. 왜, 지령 내리는 스위치는 하나로 일괄적으로 주는데, 각기 다른 시간대
차(1~2초)를 두고 피드백이 들어 오느냐는 것이죠.
각 시스템들을 어떻게 동기화 시키면 될까요?...
현재 <제가 설치한 시스템>들에 깔린 프로그램은 대략 이렇게 구성되어 있는데요.
MAIN(){
통신송신();// 500us 딜레이 타이머가지고 있음
로컬장비피드팩검출();// 1ms 딜레이 타이머 가지고 있음
로컬운전실 PLC로부터 받은 지령검출(); 500us 타이머
로컬장비 작동(); //1ms 딜레이 타이머
제가 설치한 시스템 디스플레이함수LCD 컨트롤(); 90ms 딜레이 타이머
제가 설치한 시스템 스위치검출(); 150ms 딜레이 타이머
}
인터럽트 루틴
통신 수신(); //인터럽트 소스가 외부 통신 IC로부터 인가되면 수행되어, 데이터를 통신 IC로 부터 읽어오는 루틴
제가 설치한 시스템 디스플레이LCD업데이트(); //500us 인터럽트 타이머
이렇게 되어있는데요.. 설명이 좀 복잡하죠...^^;