複雑な GDS ポートを定義し、それらを 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 出力ポート ポート TheData
で GDS に接続できるようになりました C++ プログラムの。
STRING への特記事項
STRING データ型に関する特別な注意事項。現在のところ、IEC コードは UTF-8 エンコーディングを認識していないことに注意してください。文字列リテラルは ISO-8859-1 エンコーディングを使用しています。そのため、C++ コードの文字列リテラルと比較する前に、UTF-8 に変換する必要がある場合があります。 ISO-8859-1 から UTF-8 への変換、およびその逆の変換には、boost-locale ライブラリを使用できます。
Arp::String toUtf8(const Arp::String& s)
{
return boost::locale::conv::to_utf<char>(s.CStr(), "ISO-8859-1");
}
産業技術
- 7つの一般的なピックアンドパックエラー—およびそれらを修正する方法
- 6つの一般的なロジスティクスの間違いとそれらを回避する方法
- 内陸港が米国のサプライチェーンをより良く接続する方法
- ラストマイルデリバリーの7つの課題とその解決方法
- 4種類のサイバー攻撃とその防止方法
- ラストマイルデリバリーの3つの落とし穴—そしてそれらを回避する方法
- 7つの一般的な輸送の失敗とそれらを回避する方法
- 開閉装置の故障の4つの主な原因とそれらを回避する方法
- 機械の故障の主な原因とその防止方法
- 相互運用性とは何ですか?私の会社はそれをどのように達成できますか?
- Haas CNC を PC およびラップトップに接続する方法