사용자 도구

사이트 도구

English

cublocapp:an61003:index

AN61003 - HMI와 큐블록간의 실수형 데이터 교환

HMI 에서 CUBLOC으로 전송한 실수형 데이터를 BASIC에서 불러올 수 있도록 하였습니다. CUBLOC STUDIO 4.2이후 버전에서 이 기능을 사용하실 수 있습니다.

우선 ComfileHMI 쪽에 대해서 설명하겠습니다. ComfileHMI 는 실수(float)형 데이터를 저장하고 표시하는 기능이 있습니다.

위와 같이 편집하였습니다. 숫자 입력 오브젝트에서 <캡션> 필드의 <소수 자릿수>를 꼭 체크해야 소수점아래 숫자가 표시됩니다.

숫자표시 오브젝트에서도 마찬가지로 소수 자리수 체크해야 합니다.

외부장치 주소는 float형으로 하세요.

이젠 CUBLOC 쪽에 대해서 설명하겠습니다.

HMI에서 실수형데이터로 보내온 데이터는 D영역에 저장됩니다. 그런데 D영역은 16비트 정수만 취급하는 곳입니다.

LADDER LOGIC 쪽에선 실수연산이 불가능하기 때문에, BASIC쪽으로 가져와야 합니다.

기존에는 D영역에 있는 데이터를 BASIC 으로 가져오기 위해선 _D(번지)라는 표기법만 쓸 수 있었습니다.

그래서, CUBLOC STUDIO V4.2에서 D영역을 실수형으로도 취급할 수 있도록 업그레이드했습니다. [www.comfile.co.kr 에서 CUBLOC STUDIO를 다운로드 받으세요.]

_A(번지)를 쓰면 D영역에 있는 값을 실수형데이터로 취급하도록 해줍니다.

CUBLOC BASIC언어에서는 실수형을 SINGLE형으로 선언할 수 있습니다. _A(0)은 SINGLE형 데이터와 동일합니다.

Dim Fn1 As Single ' 실수형 변수 Fn1 = _A(0) ' 실수형 변수에 D영역 0번지에 있는 내용을 실수로 저장가능

이제 Fn1변수를 가지고 실수 연산을 하시면 되는 것입니다.

반대로, 실수값을 HMI쪽으로 전달 할수 있습니다.

_A(2) = 3.14

이런식으로 _A(번지)로 그냥 실수 데이터를 저장하기만 하면됩니다. 그러면 HMI 쪽에서 읽어가서 float 형으로 표시합니다.

**

여시서 잠깐!!!

D영역은 16비트 단위이고, 실수형은 32비트 단위이기 때문에 실수영역 하나에 D 영역 2개가 필요합니다. 따라서 번지는 아래와 같이 _A(D번지 X 2)가 됩니다.

_A(0) = D0, D1번지 사용 _A(1) = D2, D3번지 사용 _A(2) = D4, D5번지 사용

이 부분에서 많이 혼동하실 수 있는데 _A(번지) 표현은 별도의 기억공간이 아니라, D영역입니다. D영역을 다른 형(Type)으로 접근할 수 있는 것입니다.


다음은 CUBLOC STUDIO에서 프로그래밍한 예입니다.

HMI에서 입력한 값을 DEBUG창에 표시해 보았습니다.

위에서 설명은 안했지만 _B(번지)를 쓰면 D영역을 32비트 정수형으로 취급할 수 있습니다. 위 화면에서 65535를 넘는 숫자가 표시되는 것을 보실 수 있습니다. _B(번지)표현으로 D영역에 값을 넣은 것을 표시한것입니다.

한단계 뒤로

cublocapp/an61003/index.txt · 마지막으로 수정됨: 2017/10/19 23:13 저자 Comfile Technology