상품
경보 발생 시각 로그 기능이 있는 아나운서 회로를 알려주세요.
- 등록일
- 2025. 12. 17.
경보 발생 시각 로그 기능이 있는 아나운서 회로를 알려주세요.
논록인 타입의 아나운서 회로에서 경보 발생 시각 로그 기능을 구현하는 방법을 소개합니다.
FAQ01009 회로에 추가되는 기능이므로, 먼저 FAQ01009를 읽어보시기 바랍니다.
경보 발생 시각 로그 기능이 있는 아나운서 회로의 타임 차트
<동작 설명>
경보 입력이 ON되면, 입력이 ON인 동안 경보 표시 출력을 1초 간격으로 점멸시키고 경보 부저를 울립니다.
또한 경보 입력 ON의 상승 에지 시 경보 발생 이력 데이터를 기록합니다.
부저 정지 PB를 누르면 부저를 정지시키고 경보 표시 출력도 점등으로 전환합니다.
램프 테스트 버튼을 누르고 있는 동안 모든 경보 표시 출력을 점등합니다.
<프로그램 구성 방법>
FAQ01009와 마찬가지로 ① 주소 오프셋 방식과 ② 기능 블록 방식을 소개합니다.
또한 말미에 기존의 ③ 인덱스 레지스터 방식에 대해서도 첨부하고 있습니다.
① 주소 오프셋 방식
CJ2 시리즈 등에서는 구조체를 다룰 수 있으므로, 이력 데이터 중 경보가 발생한 아나운서 번호와 당시 발생 시각을 구조체로 정의하여 하나의 데이터형: 경보 발생 이력 데이터 alm으로 통합합니다.
경보 발생 이력 데이터 alm형 데이터를 32개 배열로 추가하고, 배열 내 몇 번째 데이터인지를 [ ] 안에 로그 포인터 lptr의 첨자로 지정합니다.
일반 변수로 구성된 배열은 [ ] 안의 인덱스만으로 지정하지만, 구조체 변수로 구성된 배열의 지정 방법은 [ ] 안의 인덱스로 배열 내 몇 번째인지를 지정한 후, " . "(점)으로 연결하여 구조체 멤버 이름을 지정합니다.
구조체 멤버가 배열인 경우, 추가로 [ ] 안의 인덱스로 배열 내 몇 번째인지를 지정합니다.
여기서, 경보 발생 이력 데이터 배열 Log 안의, 아나운서 번호 구조체 멤버 an과, 발생 시각 구조체 멤버 cl에 대해, 로그 포인터 lptr로 지정하여 기록하고 있습니다.
아나운서 번호 지정 예: Log[lptr].an
발생 시각 지정 예: Log[lptr].cl[0]
이상의 방법으로 경보 발생 이력 데이터에 기록한 후, 로그 포인터를 1 증가시킵니다.
구조체로 정의한 형식은 4바이트 데이터이지만, 포인터를 1개 가산하기만 하면 다음 레코드의 주소를 자동으로 지정할 수 있습니다.
로그 포인터가 레코드 수 32개 이상이 되면 로그 포인터를 0으로 초기화합니다.
이상의 일련의 처리는 경보 입력이 ON되었을 때, 1회만 실행하도록 하는 미분형 실행으로 만들어야 합니다.
주소 오프셋 방식은 인덱스 레지스터 방식과 마찬가지로 포인터로 매번 접점을 전환하기 때문에, 그대로는 미분형 실행이 불가능합니다.
따라서, 1회 실행한 후 이를 임시 저장 접점 tmp의 배열에 저장하고, 해당 접점이 세워져 있으면 이후 실행하지 않도록 하는 기술이 필요합니다.
구조체를 정의하여, 아나운서 번호 an과 시계 데이터 cl로 구성된 경보 발생 이력 데이터 alm이라는 새로운 데이터형을 생성
변수 테이블 (클록 데이터 Cal, 경보 발생 이력 로그 Log, 로그 포인터 lptr, 미분용 워크 tmp 각 변수 추가)
래더 프로그램① (경보 입력 상승 시 경보 발생 이력 기록 및 로그 포인터 업데이트 처리 추가)
② 펑션 블록 방식
①에서는 경보 발생 이력 데이터를 모든 아나운서 분량을 한꺼번에 생성했지만, ②에서는 객체 지향의 장점을 활용하여 경보의 출처인 아나운서 안에 각각의 경보 발생 이력을 준비하고, 각 아나운서에서 이력이 출력되도록 합니다.
1개의 아나운서에서 여러 개의 기록 레코드를 준비하려면 주소 오프셋 방식과의 병용 등이 필요해지므로 사양이 약간 달라지지만, 여기서는 1개의 아나운서에서 1개의 기록이 출력되고 전체적으로 32개의 아나운서 기록이 모이도록 합니다.
모인 기록을 저장할 배열로 경보 발생 시각 로그 Log를 준비합니다.
아나운서터의 기능 블록(FB)에는 경보 입력 상승 시 경보 시각 로그를 출력하는 처리만 추가합니다.
또한, 어느 아나운서에서 발생한 경보 기록인지는 주소가 고정되어 한눈에 알 수 있으므로, 로그에는 아나운서 번호를 저장하지 않습니다.
이 방식은 주소 오프셋이나 구조체를 사용하지 않으므로 CJ1/CS1 시리즈에서도 대응 가능합니다.
변수 테이블 (경보 발생 시각 로그 Log 추가)
래더 프로그램②(기능 블록 외부 프로그램: FB의 이력을 경보 발생 시각 로그에 수집)과 설명
래더 모니터 화면 (FB의 입력/출력 상태가 한눈에 파악되어 디버깅이 가능합니다.)
기능 블록 정의: 내부 변수와 입력/출력 파라미터 (경보 시간 로그 Lg1과 시계 데이터 Cal: 주소 고정 추가)
기능 블록 정의: 래더 프로그램 (경보 입력 AlaramIn 상승 시 경보 시간 로그 저장 추가)
③ 인덱스 레지스터 방식
기존과 동일한 인덱스 레지스터 방식의 프로그램은 아래 첨부 자료를 참조하십시오.
~「인덱스 레지스터 활용하기」 시리즈에서~
indexreg3.pdf