Мастерство сложных 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");
}
Промышленные технологии
- Избегайте дорогих ошибок: 7 ключевых ошибок при комплектации и их исправления
- Избегайте этих шести распространенных логистических ошибок для бесшовного успеха цепочки поставок
- Укрепление цепочек поставок США: стратегическая роль внутренних портов
- Преодоление 7 главных проблем последней мили: проверенные решения для более быстрой и экономичной доставки
- ИИ-улучшенные рабочие места движут устойчивость американского производства
- Три ключевых вызова последней мили и проверенные стратегии их преодоления
- Как избежать ошибок в логистике: 7 распространенных проблем и проверенные решения
- Топ-4 причины отказа коммутационной аппаратуры и проверенные стратегии предотвращения
- Выявление ключевых причин отказа станков и стратегий предотвращения простоев
- Интероперабельность: как вашей компании достичь бесшовной интеграции