CODESYS 어플리케이션 - catman-PMX 커뮤니케이션 CODESYS 어플리케이션 - catman-PMX 커뮤니케이션 | HBM

CODESYS Application – catman–PMX communication

여기에서는 PMX에 CODESYS 애플리케이션을 생성하는 방법을 설명합니다. 사용자는 CODESYS의 기본적인 사용 경험이 있는 것으로 가정합니다. 숙련된 사용자는 다른 방식을 이용해도 무방합니다. 추가 정보는 PMX 패키지를 설치할 때 바탕화면에 설치된 기본 예제 및 PMX 패키지 온라인 도움말에서 얻을 수 있습니다.

필요한 파일은 CODESYS가 탑재된 PMX를 구입할 때 함께 제공되는 "PMX CODESYS" CD에서 찾을 수 있으며 또한 hbm.com의 support (기술지원 및 교육) 페이지에서 해당 자료를 다운로드할 수 있습니다.

이 예제에서는 PMX가 TCP/IP 서버로서 이용되어 HBM의 catman AP와의 통신이 구축됩니다.

catman AP는, 예를 들어 PID 설정값(setpoint values) 또는 유사한 값을 변경하기 위해, 사용자 정의 명령(customized commands)을 이용하여 CPU 채널이 설정되는 것을 가능하게 합니다. 따라서 HBM의 PMX를 이용하여 간단한 자동 제어 시스템을 구현할 수 있습니다.

PMX의 TCP/IP 서버 기본 기능은 HBM 홈페이지 Tips (사용 팁) 부분에 설명되어 있습니다. 이 예제에서 제공된 OSCAT 라이브러리(www.oscat.de)를 이용한 문자열 조작(string manipulations)이 있었습니다. PMX 측면에서 보면, 이 예제는 주로 TCP/IP 서버와 CPU 인터페이스로 구성되어 있습니다. PC 통신 기능은 catman Easy script에 의해 제공됩니다.

Extract CODESYS 패키지

development environment 열기
관리자(admin) 권한으로 CODESYS 소프트웨어를 실행하십시오.

패키지 압축해제

Connect PMX

게이트웨이(gateway) 추가

"Device (CODESYS Control HBM PMX V3)"를 더블클릭하고, 오른쪽에 있는 "Add gateway... (게이트웨이 추가)"를 누르십시오. 기본 설정을 유지하고, "OK"를 눌러 확인하십시오.

PMX 통합

"Scan network (네트워크 스캔)" 기능이 자동으로 PMX를 감지합니다. 더블클릭하여 장치를 활성화하십시오.

CODESYS를 이용한 PMX의 명령 해석

TCP/IP 서버는 블랙박스 기능을 합니다. catman AP가 성공적으로 연결을 구축한 후, 서버는 수신된 문자열을 CPU 인터페이스로 전송하고, CPU는 명령을 해석하여 그에 따라 작동합니다.

이번 예제에서 서버 인터페이스를 먼저 설명합니다. 그다음, 명령 해석에 관해 자세히 살펴볼 것이고, 추가 처리에 이용할 수 있는 CPU 채널 연결에 관해 설명할 것입니다. 이번 예제에서는 이 방법으로 2개의 채널이 설정됩니다.

서버 인터페이스

  • Inputs:
    • sSend (String: 전송할 문자열)
    • port (PMX를 어드레스(addressed)할 수 있는 포트)
    • sIpAddress (String: 웹 브라우저에 표시된 IP-주소로 조정해야 하는 IP-주소)
    • bStart (Boolean: 서버 시작)
    • bShutDownServer (Boolean: 서버 중지)
  • Outputs:
    • sReceived (String: 수신한 문자열)
    • bClientOnline (Boolean: 클라이언트의 신호 식별)

CPU 인터페이스의 기능성

제공된 CPU 인터페이스는 각 채널에 3가지 명령(set, get, reset)을 지원합니다. 명령들은 "instructionSet" 구조체(struct)에 컴바인(combined)되어 사용자를 위한 간단한 기능 설명을 제공합니다. "set..." 명령은 끝에 공백이 있다는 것에 주의해야 합니다. 이렇게 함으로써 실제 명령과 뒤따르는 설정 파라미터를 구별하기가 쉬워집니다.

TCP 서버가 클라이언트, 즉 catman AP와의 연결을 감지하면, CPU 인터페이스는 sReceived의 수신 메시지를 체크하여 명령을 확인하기 시작합니다. 명령이 감지되면 그 명령이 적용됩니다.

명령에 의해 트리거되는 동작은 CPU 인터페이스에서 결정되어야 합니다.

catman AP로 반환되는 값은 문자열 "$R$N"으로 끝나야 합니다. 이를 위해, 문자열 명령 "Concat()"를 이용하여 반환 값이 하나의 문자열에 "$R$N"와 함께 연결됩니다.

CPU 채널의 변수 할당

CPU 채널에 변수를 할당하는 것은 다음과 같이 CODESYS 개발 환경에서 수행됩니다.:

  • 개발 환경의 왼쪽 디렉토리 목록에서 "Device (장치)"를 더블클릭하여, 해당 구성 창을 여십시오.
  • Internal I/O Mapping" 탭을 클릭하십시오. (표시(2))
  • "Codesys Output x"를 찾고, "Variable (변수)" 컬럼에서 비어 있는 필드를 더블클릭하십시오. (표시 (3))
  • 창이 열리면, 원하는 변수를 선택하십시오(변수의 유형은 "REAL" 이어야 합니다).
  • 마지막으로, 하단 오른쪽에 있는 "Always update variables (변수를 항상 업데이트하기)" 박스에 체크표시하십시오. (표시 (4))

catman AP

catman Easy script는 catman AP에서 생성되어야 하는데, 이는 오브젝트 라이브러리 "EA_Comm"에 의해 그리고 CODESYS의 정의된 명령을 처리함으로써 TCP/IP 클라이언트를 만들 수 있습니다. 물론, 임의의 다른 TCP/IP 클라이언트도 PMX와 연결하여 명령을 통해 통신할 수 있습니다.

이번 예에서는 시각화 기능이 설명되는데, 단계별로 연결을 설정할 수 있는 몇 가지 버튼이 있습니다. 이들 버튼은 (1) PMX에 연결 (2) 필요한 값을 설정 또는 획득 (3) PMX에서 분리 순서대로 작동해야 합니다. 문제가 발생하는 경우, PMX 연결을 해제하고 다시 연결하면 문제를 해결할 수 있습니다.

필드 (5)의 값이 "0"이 아니면 문제가 있는 것으로, 이를 사용자에게 신호로 알려줍니다.
"Connect to PMX (PMX 연결)" 버튼 (1)을 이용하여 연결을 시작하십시오. PMX가 성공적으로 연결되면, "Ready (준비)"가 필드 (3)에 표시됩니다. 이제, 연결된 CPU 채널 1 및 2를 필드 (3)에서 설정 (2) 및 획득 (4) 할 수 있습니다. 사용자는 설정된 값이 PMX 값의 특정 범위 내에 있는지 확인해야 합니다. 그 범위에 없는 경우, CPU 채널을 설정할 수는 있지만, 연결된 하드웨어는 유효하지 않은 그 값을 처리할 수 없습니다. 그리고 필드 (3)에 값이 있어야 하는데, 없는 경우, "0"이 자동으로 채널에 설정됩니다.

반환 값 역시 필드 (3)에 표시됩니다. 필드 (5)는 스크립트 내의 오류 검출 기능만 있습니다. 표시된 값이 "0"이 아니면 바로 연결을 해제한 후, 다시 연결하십시오. 채널의 파라미터 작업 후에는 항상 연결을 해제해야 합니다(6).

스크립트 코드를 보면, "EA_Comm" 라이브러리가 TCP/IP 클라이언트 설치에 어떻게 이용되는지 이해할 수 있습니다. 해당 루틴(routines) 또는 서브(subs)는 시각화 기능에 있는 버튼으로 트리거됩니다. 이후의 추출항목(extract)에서는 CPU 채널 1의 설정만 다루어 집니다. 하지만 서브메소드(sub-methods)를 CPU 채널 2로 전송할 수도 있습니다.

"Timeout" 변수는 서버로부터 응답을 기다리는 대기시간을 정의합니다. 이 시간은 항상 PLC의 주기보다 길어야 합니다. "Id"는 직하 소켓(subjacent sockets)을 관리하기 위한 핸들(handle) 또는 디스크립터(descriptor)를 말합니다. "Terminator"는 버퍼의 메시지를 읽을 수 있는 최대 ASCII 문자를 정의합니다. 10은 "Linefeed(줄바꿈)"을 의미하고, 이는 CODESYS의 "$R$N"에 해당합니다. 버퍼 크기는 "MaxBytes"에 의해 정의되며, PMX의 버퍼 크기와 일치해야 합니다. 물론, 포트 번호와 IP 주소에도 동일한 내용이 적용됩니다.

수신 버퍼(receive buffer)는 라이브러리에 의해 자동으로 비워지지 않는다는 점에 유의하십시오. 다시 말해서, 성공적으로 메시지를 읽은 후 다시 읽을 때, 이전 메시지의 모든 나머지 바이트(관련 정보를 포함하지 않음)를 읽는다는 뜻입니다. 버퍼가 비워지게 될 때까지 버퍼를 바이트별로 읽음으로써 문제는 해결됩니다. 해당 부분은 sub "getCPU1"에 표시됩니다.

TIP

Codesys 프로그램 생성에 관한 추가 정보는 Codesys 온라인 도움말 ( https://www.codesys.com/ ) 또는 Codesys 채팅방 ( https://forum.codesys.com/ )에서 확인할 수 있습니다.

Codesys 스토어에서 제공하는 지식과 정보를 활용해 보세요. 다양한 분야의 작업에 적용할 수 있는 프로그램과 솔루션이 많이 준비되어 있습니다. 웹 사이트 https://store.codesys.com/ 을 참조하십시오.
 

경고문

이 예제들은 보여주기 위한 목적으로만 사용됩니다. 이 예제들을 그 어떠한 보증이나 신뢰에 대해 주장의 근거로 사용할 수 없습니다.