태그 값의 표현

PLC에서 읽어 오는 값은 대부분 정수로 표현되고 있습니다. 때에 따라 정수로 표현되는 PLC의 값들을 작화에서 실수로 표기 해야 하는 경우가 있습니다.

값의 스케일링을 위해서 weMX에서 제공하고 있는 연산과 관련된 속성을 사용하여 표시범위를 변경 하는 방법을 알아 보겠습니다.

태그표시기에서 표현하는 값의 타입과 PLC로부터 전달되는 값의 타입이 같다면 숫자 형식을 지정하지 않아도 태그 표시기에서 그대로 표현됩니다.

다음 그림과 같이 태그 표시기에서 태그를 지정하여 사용 할 수 있습니다.

하지만 사용자 태그가 Integer 타입이고 전달받은 값이 123.456이라면 아래와 같이 표시됩니다.

아래의 표는 전달받은 값이 123.456를 전달 받았을 경우 사용자 태그의 타입 별 태그 표시기에서 표현되는 값의 예입니다.

입력 값 타입 결과 값
123.456 Boolean 1
Integer 123
Real 123.456
String 123.456

항상 타입에 맞는 형태로 PLC에서 제공하지 않는 경우가 많습니다.

PLC에서 정수의 형태로만 제공하여 값의 형태를 변경해서 사용 해야 할 경우 아래와 같이 태그에 직접 연산을 하고 숫자 형식을 지정하여 사용 할 수 있습니다.

위의 그림에서 전달 받는 표시 값을 100으로 나누고 설정된 %.2f 라는 숫자 형식을 사용하여 소수점 이하 2자리까지 표현 합니다.

위의 태그 표시기 설정에서 12345라는 임의의 값을 입력 받은 뒤 결과는 아래와 같습니다.

C언어 포맷은 아래와 같은 형식을 가지고 있습니다.

  • 정수 값: %d
  • 실수 값: %f
  • 소수점 n 자리까지 값: %.nf
  • Hex 값(소문자): %x
  • Hex 값(대문자): %X
  • 문자열: %s

아래는 위의 숫자 형식을 사용하여 12345*0.01 (IntTag*0.01)의 결과에 대한 표입니다.

연산 숫자 형식 결과 값
12345*0.01
(IntTag*0.01)
%d 123
%f 123.450000
%.2f 123.45
%s 123.45
54321
(IntTag)
%x d431
%X D431

간편하게 태그에 직접 연산을 하여 값을 변화시켜 보여주기만 할 경우는 위에서 설명한 것으로 충분히 사용이 가능합니다.

하지만 값을 입력을 받아야 하는 경우는 입력 시 변화되는 값을 계산하여 입력해야 하므로 위의 사용 법은 맞지 않습니다.

IntTag*0.01의 태그 표시기에서 사용 하고 12.34를 표현할 경우 입력 시 1234로 해야 태그 디스플레이에서 정상적으로 표시 됩니다. 12.34를 입력하면 0.12가 표시될 것입니다. 입력과 표시가 달라지는 오 동작을 유발 시키는 원인이 될 수 있습니다.

따라서 태그가 가지고 있는 연산 속성을 이용하여 표시와 입력을 동기화 해줄 필요가 있습니다.

사용자 태그는 아래 표와 같이 연산과 관련된 속성을 가지고 있습니다. 연산과 관련된 속성은 아래와 같습니다.

Type Property Name Description R/W Data Type Default
Integer, Real DisplayValue 화면에 표시되는 값 (Value / UnitDiv) + UnitAdd RW Real
DisplayUnit DisplayVlaue를 위한 단위 String
UnitDiv 단위 곱 변환 Real 1
UnitAdd 단위 덧셈 변환 Real 0

UnitDiv는 단위 곱 연산을 하는 태그의 속성입니다. 이 속성에 저장된 값을 연산 하여 DisplayValue 속성을 통해 표시 되고 있는 것입니다.

변환된 값인 IntTag.DisplayValue는 다음과 같은 연산을 거쳐 표현 되고 있습니다.

DisplayValue = (Value / UnitDiv) + UnitAdd

Value는 태그 값 입니다.

위의 UnitDiv와 DisplayValue 속성을 통하여 사용자가 원하는 형태로 값을 표현 할 수 있습니다.

위의 속성과 숫자 형식을 사용 하여 소수점 이하 2자리 실수를 표시하고 입력을 동기화 시키는 예제입니다.

① 작화의 빈 화면에 태그 표시기를 작화 하고 더블 클릭합니다. 아래의 예시와 같이 표시를 IntTag.DisplayValue, 숫자 형식을 %.2f 로 입력합니다.

② 왼쪽의 입력을 선택하고 입력사용을 체크 합니다. 입력과 표시가 같은 태그를 사용 할 경우 입력 태그를 명시적으로 설정하지 않더라도 입력이 동작합니다.

③ UnitDiv의 초기값을 설정해 [프로젝트] – [태그 설정] - [사용자 태그]를 클릭 합니다.

예제에서 생성 한 IntTag를 우 클릭하고 편집을 클릭 합니다.

사용자 태그 편집 팝업 창에서 고급설정 탭으로 이동합니다.

아래 그림과 같이 값 유지를 체크 하고 UnitDiv를 체크하여 100으로 설정 합니다. (다른 속성은 본 예제에서 사용하지 않으므로 체크 해제 합니다.)

④ 시뮬레이션을 실행하여 입력과 표시가 동기화 되는지 확인 합니다.

위의 그림과 같이 입력을 12.34로 입력 시 태그에는 1234로 저장되고 반대로 1234로 전달 받을 경우 12.34로 표시되고 있습니다.

지금까지 타깃으로부터 읽은 원래의 값을 특정 단위 값으로 변환하는 것에 대해 알아 보았습니다.

더 많은 사용 방법과 속성에 대해서는 매뉴얼의 ‘태그 속성’과 ‘태그 표시기’ 챕터를 참고해 주시기 바랍니다.



[링크]

SCADA Tag와 PLC 통신: 사용자 태그의 이해

SCADA Tag와 PLC 통신: 태그 값의 표현

SCADA Tag와 PLC 통신: MODBUS Slave 시뮬레이션 실행하기

SCADA Tag와 PLC 통신: MODBUS PLC 연결하기

  • wemx/scada_plc/wemx_hmi_scada_expression_of_tag_values.txt
  • 마지막으로 수정됨: 2019/06/20 02:16
  • 저자 wemx