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

Codesys - 2 Words to DoubleWord

by EasyOneDrive 2023. 3. 20.
반응형

 

 

Codesys에서 2개의 Word를 하나의 DoubleWord로 변경하는 방법입니다. 

 

1. PackWordsToDword 펑션 이용

Codesys에서 제공하는 펑션 중에 데이터를 병합하는 펑션이 있습니다. 

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

 

 

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

 

 

 

"CAA Memory" Library 를 검색하여 선택한 다음, [OK] 를 클릭합니다. 

 

 

 

Library를 추가하였으면, 프로그램을 작성합니다. 

"mem.PackWordsToDword" 를 입력하면 해당 펑션이 생성됩니다. 

 

 

입력 변수는 두 개의 Word 입니다.

상위 Word (16~31 비트), 하위 Word (0~15 비트)를 연결하면 DoubleWord 형태의 출력 값이 나오는 펑션입니다. 

 

 

 

시뮬레이션을 통해, 작성한 프로그램에 값을 넣어보았습니다. 

 

 

 

이를 ST 언어로 구현하면 이와 같습니다.

 

 

2. SHL 연산자 이용

이번에는 펑션을 사용하지 않고 연산자를 이용하여 2개의 Word를 하나의 DoubleWord로 만들어 보겠습니다.

 

상위Word로 사용할 변수를 "SHL" 연산자를 사용하여 이동시키고, 하위Word와 더하면 DoubleWord가 됩니다. 

SHL은 비트를 왼쪽으로 이동시키는 연산자 입니다. 

 

예를 들어 SHL(1,16) 이라고 입력하면 다음과 같이 됩니다. 

"1" 값이 왼쪽으로 16비트만큼 이동하여 결과는" 65536" 이 됩니다. 

SHL 연산자를 사용하여 데이터를 이동하려면 데이터 타입이 32비트인 DoubleWord 로 변환해야 합니다.

이를 위해 "Word_To_DWord" 연산자를 사용합니다.

 

 

 

시뮬레이션을 통해 결과를 확인합니다.

 

 

ST 언어로 표시하면 이와 같습니다.

 

 

 

 

하나의 DoubleWord 데이터를 두 개의 Word로 분리하는 방법은 아래 포스팅을 참고하시기 바랍니다. 

 

Codesys DoubleWord를 두 개의 Word로 분리하는 방법

 

 

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

 

반응형

댓글