버전 V2.3.56부터 이전 프로젝트를 컴파일하면 다음 에러 메시지가 표시될 수 있습니다.
[에러: 컴파일러를 예약하기에 '카운터 유지'가 부족합니다. 시스템 레지스터 5 또는 6을 변경해 주십시오.] 또는 [오류: 컴파일러를 예약하기에 '카운터 비유지'가 부족합니다. 시스템 레지스터 5 또는 6을 변경해 주십시오.]
그 이유는 버전 V2.3.56부터 펑션블럭 인스턴스를 유지 또는 비유지 영역에 할당할 수 있기 때문입니다. 따라서 컴파일러는 펑션블럭 CT_FB의 각 VAR_RETAIN 인스턴스에 대해 시스템 타이머를 최대 상한값의 타이머/카운터 영역에서 유지 영역의 시작(시스템 레지스터 6)으로 할당합니다. 클래스 VAR의 각 인스턴스에 대해 컴파일러는 시스템 카운터를 비유지 영역 끝(시스템 레지스터 6 - 1의 값)에서 최대 카운터 시작 번호(시스템 레지스터 5)까지 할당합니다. 시스템 레지스터 5 또는 6이 사용할 수 없는 할당된 영역에 설정되면 위와 같은 에러 메시지 중 하나가 표시됩니다. 변경된 펑션블럭 인스턴스의 클래스에 따라 시스템 레지스터 5 또는 6을 조정해야 합니다.
버전 V2.3.56 이전에서 카운터는 유지 영역에 있는 3071번에 할당되었습니다. 버전 V2.3.56부터 컴파일러는 카운터를 비유지 영역에 할당하려 합니다. 하지만 시스템 레지스터 5 또는 6에서 차단됩니다.
해결책: 시스템 레지스터 5 또는 6으로 카운터용 비유지 영역을 엽니다.
또는
프로그램 헤더의 클래스를 유지 영역에 할당된 인스턴스를 가지도록 변경합니다.