[SCADA] [스크립트] PLC의 전원 재부팅 후 태그값을 자동으로 동기화 시키고 싶습니다.
2016.05.08

안녕하세요.

CIMON입니다.

 

태그동작 및 태그동작실행 기능을 사용하고자 할 때, 태그값이 변화했을 때에만 지정된 스크립트를 실행할 수 있습니다.

PLC의 전원이 재부팅되었을 경우, 태그값이 변화한 것이 아니므로 태그값은 동기화되지 않습니다.

다음은 PLC의 전원이 재부팅되어도 태그값을 자동으로 동기화시킬 수 있도록 구성한 예제입니다.

 

1. 데이터베이스에서 아날로그 태그 A, B를 생성합니다.

 

 

2. 태그 A의 값이 변경될 때마다 B의 값도 같은 값으로 동기화하기 위해, 태그 A에 ‘태그 동작을 지정함’과 ‘태그값 변경시 태그 동작을 실행함’ 옵션을 선택합니다.

 

3. [태그 동작] 탭에 B=A를 입력합니다.

이는 B의 값을 A에 쓰기하는 동작입니다.

 

4. [도구]-[스크립트]에 진입하여 다음과 같이 스크립트를 작성합니다.

 

Sub Main()

 

while 1                                                     ‘ 통신상태 checking

 

com = commstatus(“디바이스이름”)

 

if com <> 0 then                                         ‘ 통신이 오프라인이면

 

Do                                                                ‘ 무조건 반복 루프 실행

 

com = commstatus(“디바이스이름”)

sleep(2000)

 

Loop Until com = 0                                 ‘ 통신이 정상이 될때 까지

 

AA = Gettagval(“A”)

 

settagval “B” , AA

sleep(2000)

 

end if

sleep(2000)

wend

 

End Sub

======================================

아래 그림과 같이 스크립트를 등록합니다.

Commstatus 함수에 대한 설명은 다음을 참고바랍니다.

Commstatus 지정된 디바이스 또는 스테이션의 통신 상태를 출력합니다.
수치함수 연산식 표기 Commstatus (디바이스이름”)

Commstatus (“디바이스이름.스테이션이름”)

Commstatus (“”)

스크립트 표기 n = Commstatus (디바이스이름”)

n = Commstatus (“디바이스이름.스테이션이름”)

n = Commstatus (“”)

기능 지정된 디바이스 또는 스테이션의 통신 상태를 출력합니다. 디바이스 이름을 지정하지 않으면 시스템 전체적인 통신 상태를 출력합니다.
-1 통신이 비활성화된 상태입니다.
0 통신이 정상적인 상태입니다.
1 통신이 비정상적인 상태입니다.
사용 예제 디바이스 이름이 ‘PLC’일 때, 해당 디바이스의 통신 상태를 확인합니다.

연산식 입력: Commstatus (“PLC”) = n

스크립트 입력: n = Commstatus (“PLC”)

 

 

언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

감사합니다.