타이밍 모드
이 프로세스 제어 및 드라이브 명령어는 여러 가지 타이밍 모드를 지원합니다.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
세 가지 타이밍 모드가 있습니다.
타이밍 모드 | 설명 | |
주기 | 주기 모드는 기본 모드로 대부분이 제어 용도에 적합합니다. 이 모드를 이용하는 명령어를 주기 태스크를 실행하는 루틴에 놓기를 권장합니다. 이 명령어의 델타 시간(DeltaT)은 다음과 같이 결정됩니다. | |
명령어 실행 위치 | DeltaT= | |
정기적 태스크 | 태스크의 기간 | |
이벤트 또는 연속 태스크 | 이전 실행 이후 경과 시간 컨트롤러는 경과 시간을 소수점 이하 밀리초 단위(ms)를 절사합니다. 여컨대, 경과 시간이 10.5 ms라면 컨트롤러는 DeltaT=10 ms로 설정합니다. | |
프로세스 입력의 업데이트는 태스크의 실행과 동기화하거나 태스크 실행보다 5 ~ 10배 빠르게 샘플링해야 합니다. 입력과 명령어 간 샘플링 에러를 최소화하기 위함입니다. | ||
오버 샘플링 | 오버 샘플링 모드에서는 명령어가 사용하는 델타 시간(DeltaT)이 명령어의 OversampleDT 파라미터에 쓰는 값이 됩니다. 프로세스 입력에 타임 스탬프 값이 있다면 대신 실시간 샘플링 모드를 사용합니다. 명령어가 실행될 때 컨트롤할 프로그램에 로직을 추가하세요. 예를 들어, OversampleDeltaT 값으로 설정된 타이머와 명령어의 EnableIn 입력을 이용해 실행을 제어할 수 있습니다. 프로세스 입력은 명령어의 실행보다 5 ~ 10배 빠르게 샘플링해야 합니다. 입력과 명령어 간 샘플링 에러를 최소화하기 위함입니다. | |
실시간 샘플링 | 실시간 샘플링 모드에서는 명령어가 사용하는 델타 시간(DeltaT)은 프로세스 입력의 업데이트에 해당하는 두 타임 스탬프 값의 차이입니다. 프로세스 입력에 업데이트와 관련된 타임 스탬프가 있고 정밀한 조정이 필요할 때 이 모드를 이용합니다. 타임 스탬프 값은 명령어의 RTSTimeStamp 파라미터에 입력된 태그 이름에서 읽어옵니다. 일반적으로 이 태그 이름은 프로세스 입력과 관련된 입력 모듈의 파라미터입니다. 이 명령어는 구성된 RTSTime 값(예상 업데이트 기간)과 계산된 DeltaT를 비교해 프로세스 입력의 모든 업데이트가 명령어에 읽힐 준비가 되었는지 판단합니다. DeltaT가 구성 시간의 1밀리초 이내가 아니라면 명령어는 RTSMissed 상태 비트를 설정해 모듈에서 입력 업데이트를 읽는 데 문제가 있다고 표시합니다. | |
시간 기반 명령어에 DeltaT의 상수값이 있어야 제어 알고리즘이 프로세스 출력을 제대로 계산합니다. DeltaT가 가변적이면 프로세스 출력에 비연속이 발생합니다. 비연속의 심각도는 명령어, 그리고 DeltaT가 변하는 정도에 따라 달라집니다.
비연속이 발생하는 결과는 다음과 같습니다.
- 명령어가 스캔 중에 실행되지 않습니다.
- 명령어가 태스크 중에 여러 번 실행됩니다.
- 태스크가 실행 중이고 태스크 실행 속도 또는 프로세스 입력의 샘플 시간이 변합니다.
- 사용자는 태스크 실행 중 시간 기반 모드를 변경합니다.
- 태스크 실행 중에 필터 블록에서 Order 파라미터가 변경됩니다.
- Order 파라미터를 변경하면 명령어 내에서 다른 컨트롤 알고리즘을 선택합니다.
타이밍 모드의 공통 명령어 파라미터
시간 기반 모드를 지원하는 명령어에는 아래와 같은 입력 및 출력 파라미터가 있습니다.
입력 파라미터
입력 매개 변수 | 데이터 유형 | 설명 |
TimingMode | DINT | 타이밍 실행 모드 선택. 값: 설명: 0 정기 모드 1 오버 샘플링 모드 2 실시간 샘플링 모드 유효값 = 0~2 기본값 = 0 TimingMode = 0이고 태스크가 주기적이면 주기 타이밍이 활성화되고 DeltaT는 태스크 스캔 속도로 설정됩니다. TimingMode = 0이고 태스크가 이벤트 또는 연속이면 주기 타이밍이 활성화되고 DeltaT는 명령어가 마지막으로 실행된 후 경과 시간 범위와 동일하게 설정됩니다. TimingMode = 1이면 오버 샘플링 타이밍이 활성화되고 DeltaT는 OversampleDT 파라미터의 값으로 설정됩니다. TimingMode = 2이면 실시간 샘플링 타이밍이 활성화되고 DeltaT는 입력과 관련된 모듈에서 읽은 현재 및 이전 타임 스탬프 값 간의 차가 됩니다. TimingMode가 유효하지 않으면, 명령어는 Status에서 적당한 비트를 설정합니다. |
OversampleDT | REAL | 오버 샘플링 타이밍의 실행 시간 DeltaT에 사용되는 값은 초 단위입니다. TimingMode = 1이면, OversampleDT = 0.0은 컨트롤 알고리즘의 실행을 비활성화합니다. 유효하지 않으면 명령어는 DeltaT = 0.0를 설정하고 Status에 적절한 비트를 설정합니다. 값 = 0~4194.303초 기본값 = 0.0 |
RTSTime | DINT | 실시간 샘플링 타이밍의 모듈 업데이트 기간. 예상 DeltaT 업데이트 기간은 단위가 밀리초입니다. 업데이트 기간은 일반적으로 모듈의 업데이트 시간을 구성할 때 사용되는 값이 됩니다. 유효하지 않으면 명령어는 Status에 적절한 비트를 설정하고 RTSMissed 검사를 비활성화합니다. 유효값 = 1 ~ 32,767 ms 기본값 = 1 |
RTSTimeStamp | DINT | 실시간 샘플링 타이밍의 모듈 시간 스탬프 값. 입력 신호의 마지막 업데이트에 상응하는 타임 스탬프 값. 이 값은 DeltaT 계산에 사용됩니다. 유효하지 않으면 명령어는 Status에 적절한 비트를 설정하고 컨트롤 알고리즘의 실행을 비활성화하고 RTSMissed 검사를 비활성화합니다. 유효값 =0 ~ 32,767 ms (32767에서 0으로 건너뛰기) 1 카운트 = 1밀리초 기본값 = 0 |
출력 매개 변수
출력 매개 변수 | 데이터 유형 | 설명 |
DeltaT | REAL | 업데이트 간 경과 시간. 컨트롤 알고리즘에서 프로세스 출력 계산에 사용되는 경과 시간(초)입니다. 주기: DeltaT = 태스크가 정기이면 태스크 스캔 속도, 태스크가 이벤트 또는 연속이면 DeltaT = 이전 명령 실행 후 경과 시간 오버 샘플링: DeltaT = OversampleDT 실시간 샘플링: DeltaT = (RTSTimeStampn - RTSTimeStampn-1) |
상태 | DINT | 펑션 블록의 상태. |
TimingModeInv (Status.27) | BOOL | 유효하지 않은 TimingMode 값. |
RTSMissed (Status.28) | BOOL | 실시간 샘플링 모드에서만 사용. ABS | DeltaT - RTSTime | > 1 (.001 초)일 때 설정. |
RTSTimeInv (Status.29) | BOOL | 유효하지 않은 RTSTime 값. |
RTSTimeStampInv (Status.30) | BOOL | 유효하지 않은 RTSTimeStamp 값. |
DeltaTInv (Status.31) | BOOL | 유효하지 않은 DeltaT 값. |
타이밍 모듈의 개요
다음 다이어그램은 명령어가 적절한 타이밍 모드를 결정하는 원리를 보여줍니다.

의견을 작성 부탁드립니다.