Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Teknologi Industri

Bagaimana mendefinisikan Port GDS yang kompleks dan menghubungkannya ke Port GDS dalam kode IEC

Abstrak

Dalam artikel ini saya akan menjelaskan cara mendefinisikan port GDS yang kompleks seperti struktur data di C++ dan menghubungkannya ke port GDS dalam kode IEC.

Struktur Data

Bagaimana mendeklarasikan struktur data. Mari kita lihat 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

Dan di Header kelas programm jenis ini sekarang dapat didefinisikan sebagai Port GDS.

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

namespace MyComponent
{

//#program
//#component(MyComponent::MyComponent)
class MyProgramm ...
{

...

public:
    //#port
    //#name(TheData)
    //#attributes(Input)
    MyData GdsPortMyData;

};

} // namespace MyComponent

Untuk dapat menghubungkan Port GDS ke Port GDS dalam kode IEC, variabel dalam kode IEC harus bertipe sama. Ini berarti struktur IEC harus memiliki tata letak data yang sama dengan tipe data C++. Selain itu, semua nama elemen harus cocok dengan elemen dalam tipe C++.

TYPE

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

END_TYPE

Port Keluar GDS dengan tipe UDT_PROJECT_MY_DATA sekarang dapat terhubung ke GDS In Port TheData dari program C++.

Catatan khusus untuk STRING

Catatan khusus untuk tipe data STRING. Ketahuilah bahwa kode IEC untuk saat ini tidak mengetahui penyandian UTF-8. Literal string menggunakan pengkodean ISO-8859-1. Jadi mungkin perlu untuk mengonversinya ke UTF-8 sebelum membandingkannya dengan literal string dalam kode C++. Anda dapat menggunakan pustaka boost-locale untuk mengonversi antara ISO-8859-1 ke UTF-8 dan sebaliknya.

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

Teknologi Industri

  1. Tujuh Kesalahan Umum Pick-and-Pack — dan Cara Memperbaikinya
  2. Enam Kesalahan Umum Logistik dan Cara Menghindarinya
  3. Bagaimana Pelabuhan Pedalaman Dapat Menghubungkan Rantai Pasokan A.S. dengan Lebih Baik
  4. Tujuh Tantangan Pengiriman Mil Terakhir, dan Cara Mengatasinya
  5. Empat Jenis Serangan Siber, dan Cara Mencegahnya
  6. Tiga Jebakan Pengiriman Mil Terakhir — dan Cara Menghindarinya
  7. Tujuh Kesalahan Umum Pengiriman, dan Cara Menghindarinya
  8. 4 Penyebab Utama Kegagalan Switchgear Dan Cara Menghindarinya
  9. Penyebab Utama Kegagalan Mesin dan Cara Mencegahnya
  10. Apa itu interoperabilitas dan bagaimana perusahaan saya dapat mencapainya?