본문 바로가기
  • Servo & Drive Technology
Codesys

Codesys - DoubleWord to 2 Words

by EasyOneDrive 2023. 3. 20.
반응형

 

Codesys에서 하나의 DoubleWord를 두 개의 Word로 분리하는 방법입니다.

 

1. UnpackDword 펑션블록 사용하는 방법

Codesys에서 제공하는 펑션블록 중에 데이터를 분리하는 "Unpack" 펑션블록이 있습니다.

이 펑션블록을 이용하려면 Library를 추가해야 합니다.

 

 

 

[Library Manager] 에서 [Add Library] 를 클릭합니다. [Add Library] 창에서 [Advanced] 를 클릭합니다. 

 

 

 

 

'CAA Memory" Library를 검색하고, 이를 선택한 후에 [OK] 를 클릭합니다.

 

 

 

 

Library를 추가한 다음, 프로그램을 만들어 봅니다.

 

DoubleWord를 다양한 형태의 데이터로 나눠주는 "UnpackDWord" 펑션블록 입니다. 

하나의 DoubleWord 입력변수를 두 개의 Word, 4개의 Byte, 32개의 Bit로 분리되어 출력 값이 나옵니다. 

"UnpackDWord" 펑션블록을 이용하기 위해서는 변수 선언을 해주어야 합니다. 

 

 

 

시뮬레이션 모드로 실행하여 값을 넣어보았습니다. Word 뿐만 아니라 Byte, Bit 형태로도 출력이 나타납니다. 

 

 

 

ST 언어로 구현하면 한 줄로 간단하게 표현이 됩니다.

 

 

 

 

2.SHR 연산자 이용

이번에는 SHR , DWORD_TO_WORD 연산자를 이용하는 방법입니다. 

SHR은 비트를 오른쪽으로 이동시켜 주는 연산자 입니다. 

 

예를 들어 SHR(100000,16) 이라고 입력하면 16~31번 비트가 오른쪽으로 이동하게 되고, 원래 자리는 0으로 채워집니다.

SHR 연산자를 이용하면 DoubleWord의 상위Word만 하위Word 위치로 이동하게 됩니다. (Word_2a)

DWORD_TO_WORD 연산자를 사용하면 상위Word가 지워지고 하위Word만 남게 됩니다. (Word_2b)

 

 

 

 

시뮬레이션 모드로 결과를 확인해 보았습니다. 

 

 

 

 

ST 언어로는 이렇게 구현이 가능합니다.

 

 

 

 

 

DWORD_TO_WORD와 같이 데이터 타입 변환에 대한 설명은 아래 포스팅을 참고하시기 바랍니다. 

2개의 Word를 하나의 DoubleWord로 합치는 방법도 아래 포스팅을 참고하시기 바랍니다. 

 

 

Codesys에서 데이터 타입 변환하는 방법

 

 

Codesys에서 2개의 Word 하나의 DoubleWord로 결합하는 방법

반응형

댓글