Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Мастерство сложных GDS порт-определений и соединений в IEC-программировании

Аннотация

В этой статье я объясню, как определять сложные GDS-порты, как структуры данных в C++, и соединять их с GDS-портами в IEC-коде.

Структуры данных

Как объявлять структуры данных. Посмотрим на 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 Port.

#pragma once
...
#include "MyData.hpp"

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

Чтобы иметь возможность соединить GDS Port с GDS Port в IEC-коде, переменная в 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

GDS Out Port типа UDT_PROJECT_MY_DATA теперь может быть соединен с GDS In Port TheData C++ программы.

Особое замечание к STRING

Особое замечание к типу данных STRING. Имейте в виду, что IEC-код пока не осведомлен об UTF-8 кодировке. Строковые литералы используют ISO-8859-1 кодировку. Поэтому может потребоваться конвертировать их в UTF-8 перед сравнением со строковыми литералами в C++ коде. Можно использовать библиотеку 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. Избегайте этих шести распространенных логистических ошибок для бесшовного успеха цепочки поставок
  3. Укрепление цепочек поставок США: стратегическая роль внутренних портов
  4. Преодоление 7 главных проблем последней мили: проверенные решения для более быстрой и экономичной доставки
  5. ИИ-улучшенные рабочие места движут устойчивость американского производства
  6. Три ключевых вызова последней мили и проверенные стратегии их преодоления
  7. Как избежать ошибок в логистике: 7 распространенных проблем и проверенные решения
  8. Топ-4 причины отказа коммутационной аппаратуры и проверенные стратегии предотвращения
  9. Выявление ключевых причин отказа станков и стратегий предотвращения простоев
  10. Интероперабельность: как вашей компании достичь бесшовной интеграции