산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

IEC 프로그래밍에서 복잡한 GDS 포트 정의 및 연결 마스터하기

요약

이 문서에서는 C++에서 데이터 구조 같은 복잡한 GDS 포트를 정의하고 이를 IEC 코드의 GDS 포트에 연결하는 방법을 설명합니다.

데이터 구조

데이터 구조를 선언하는 방법. C++을 살펴보겠습니다.


#pragma once
#include "Arp/System/Core/Arp.h"
#include "Arp/Plc/Commons/PlcTypes.h"
namespace MyComponent {
class MyData {
public:
  MyData() = default;
  ~MyData() = default;
public:
  Arp::boolean Valid = false;
  Arp::int16 IntegerValue = 0;
  Arp::Plc::Commons::Gds::StaticString<80> StringValue = "";
  Arp::uint8 Data[8] = {0x00};
};
} // namespace MyComponent

그리고 프로그램 클래스 헤더에서 이 타입을 GDS 포트로 정의할 수 있습니다.


#pragma once
...
#include "MyData.hpp"
namespace MyComponent {
//#program
//#component(MyComponent::MyComponent)
class MyProgramm ...
{
  ...
public:
  //#port
  //#name(TheData)
  //#attributes(Input)
  MyData GdsPortMyData;
};
} // namespace MyComponent

GDS 포트를 IEC 코드의 GDS 포트에 연결하려면 IEC 코드의 변수가 동일한 타입이어야 합니다. 이는 IEC 구조체가 C++ 데이터 타입과 동일한 데이터 레이아웃을 가져야 함을 의미합니다. 또한 모든 요소 이름이 C++ 타입의 요소와 일치해야 합니다.


TYPE UDT_PROJECT_MY_DATA : STRUCT
  Valid BOOL;
  IntegerValue : INT;
  StringValue : STRING;
  Data : ARRAY [0..7] OF BYTE;
END_STRUCT;
END_TYPE

UDT_PROJECT_MY_DATA 타입의 GDS 아웃 포트를 C++ 프로그램의 GDS 인 포트 TheData에 연결할 수 있습니다.

STRING에 대한 특별 참고 사항

STRING 데이터 타입에 대한 특별 참고 사항. 현재 IEC 코드는 UTF-8 인코딩을 인식하지 못합니다. 문자열 리터럴은 ISO-8859-1 인코딩을 사용합니다. 따라서 C++ 코드의 문자열 리터럴과 비교하기 전에 UTF-8로 변환해야 할 수 있습니다. boost-locale 라이브러리를 사용하여 ISO-8859-1과 UTF-8 간 변환할 수 있습니다.


Arp::String toUtf8(const Arp::String& s) {
  return boost::locale::conv::to_utf<char>(s.CStr(), "ISO-8859-1");
}

산업기술

  1. 비용이 큰 실수 피하기: 7가지 주요 피킹·패킹 오류와 검증된 해결책
  2. 원활한 공급망 성공을 위해 피해야 할 6가지 흔한 물류 실수
  3. 미국 공급망 강화: 내륙 항만의 전략적 역할
  4. 라스트마일 배송 7대 과제와 검증된 해결책: 더 빠르고 비용 효율적인 배송을 위하여
  5. 4대 사이버 공격 유형과 검증된 예방 전략
  6. 라스트마일 배송의 3대 과제와 검증된 해결 전략
  7. 배송 함정 피하기: 7가지 흔한 실수와 검증된 해결책
  8. 스위치기어 고장 4대 원인과 검증된 예방 대책
  9. 핵심 기계 고장 원인 파악과 다운타임 방지 전략
  10. 상호운용성 완벽 가이드: 기업이 원활한 통합을 달성하는 방법