변경 사항을 추적하기 위해 PLC 프로그램이 업데이트 될 때마다 정수 값을 증가시켜야합니다.CoDeSys가있는 WAGO PLC에서 프로그램 변경 추적
online_change
및 before_download
과 같은 시스템 이벤트가 있지만 해당 기능을 구현하는 방법을 알지 못합니다.
또한 업데이트 사이에 값을 저장해야합니다. 추적 변수는 RETAIN
으로 작성해야하지만 확실하지는 않습니다.
변경 사항을 추적하기 위해 PLC 프로그램이 업데이트 될 때마다 정수 값을 증가시켜야합니다.CoDeSys가있는 WAGO PLC에서 프로그램 변경 추적
online_change
및 before_download
과 같은 시스템 이벤트가 있지만 해당 기능을 구현하는 방법을 알지 못합니다.
또한 업데이트 사이에 값을 저장해야합니다. 추적 변수는 RETAIN
으로 작성해야하지만 확실하지는 않습니다.
변수 선언 유형은 VAR RETAIN PERSISTENT
이어야합니다. RETAIN
으로 선언 된 변수는 프로그램 변경으로 인해 (의도적으로) 그 값을 잃게됩니다.
나는 SysLibProjectInfo.lib 당신이 이 SysGetProjectID 기능과 함께 무엇을 찾고있는 내장 Codesys 라이브러리를 생각합니다. SysGetProjectID를 RETAIN PERSISTENT
으로 저장 한 다음 비교하면 변경 사항을 추적 할 수 있습니다 (또는이 고유 값은 수동으로 ID를 만들지 않고 처음부터 원했던 값일 수 있습니다).
참고 : 변수를 선언하는 방법에 따라 I/O 구성을 변경하면 VAR RETAIN PERSISTENT
변수에서도 예기치 않은 변경이 발생할 수 있습니다 (동적으로 할당 된 모든 주소가 이동되고 이전 위치를 가리킬 수 없음).
당신이 알고있는 것만 큼 당신은 PLC에서 어떤 버전이 실행되고 있고 변경 한 사항을 추적하고 싶습니까? 다음 두 가지 방법으로 할 수 있습니다 :
PLC 외부에서 변경할 때마다 상수이므로 SoftwareVersion : WORD : = 100;과 같이 선언 된 변수의 개정판을 굴립니다. 리비전 글로벌 목록에 보관하여 PLC에 다운로드하기 전에 메모를 추가하고 버전을 변경할 수 있습니다. 필드가있는 PLC 요약 영역을 사용하여 값을 입력 한 다음 소프트웨어 업로드없이 CoDeSys를 통해 읽을 수도 있습니다.
물론 위의 제안이 효과가 있습니다.
나는 그것을 밖으로 경영했다. 답변 감사합니다. –
@BatRamboZPM 다른 방법을 찾았다면 참조 용으로 자신의 답변을 게시 하시겠습니까. – user2097818
귀하의 대답은 올바른 해결책을 제시합니다. 비슷한 구현을 사용했습니다. –