Как определить сложные порты GDS и подключить их к порту 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.
#pragma once
...
#include "MyData.hpp"
namespace MyComponent
{
//#program
//#component(MyComponent::MyComponent)
class MyProgramm ...
{
...
public:
//#port
//#name(TheData)
//#attributes(Input)
MyData GdsPortMyData;
};
} // namespace MyComponent
Чтобы иметь возможность подключить порт GDS к порту GDS в коде 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 типа UDT_PROJECT_MY_DATA
теперь можно подключиться к GDS через порт 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");
}
Промышленные технологии
- Семь распространенных ошибок при сборке и упаковке - и как их исправить
- Шесть распространенных логистических ошибок и как их избежать
- Как внутренний порт может лучше соединить цепочки поставок США
- Семь проблем доставки на последней миле и способы их решения
- Четыре типа кибератак и как их предотвратить
- Три ловушки доставки на последней миле - и как их избежать
- Семь распространенных ошибок при транспортировке и как их избежать
- 4 основные причины выхода из строя распределительного устройства и способы их предотвращения
- Основные причины сбоев машины и способы их предотвращения
- Что такое интероперабельность и как моя компания может ее достичь?