Реализация ФБ со структурой в C++

<< Click to Display Table of Contents >>

Navigation:  API MasterSCADA 4D > Функции, ФБ, Протоколы на С++ > API для ФБ и протоколов > Разработка функциональных блоков > Разработка ФБ с параметром структура >

Реализация ФБ со структурой в C++

Пример реализации подключен к Examples.sln как mplc_fb:

real_FB_struct

Для разработки собственных ФБ нужно открыть пример и изменить те части проекта, которые отвечают за логику работы. Вспомогательные файлы, служащие для взаимодействия с исполнительной системой, редактировать не требуется.

Порядок разработки

fb_with_struct.h

Как и в случае с простым ФБ, нужно создать класс-наследник ScadaFB, объявить поля, реализовать метод Execute(), и зарегистрировать поля и ФБ макросами MPLC_OBJECT(FBWithStruct), MPLC_DECLARE_PROPERTIES и MPLC_FB_TYPE.

Так как в качестве одного поля используется структура, её необходимо определить отдельно как наследника ScadaStruct.

Как и в случае ФБ, для структур необходимо прописывать макрос MPLC_OBJECT(ExampleStruct).

Для этого в примере был создан заголовочный файл fb_with_struct.h:

real_FB_struct_1

Содержимое файла:

Скриншот

Текст

real_FB_struct_2

#pragma once

#include <mplc/api.h>

 

struct ExampleStruct : mplc::api::ScadaStruct {

    MPLC_OBJECT(ExampleStruct);

    STRING str_string;

    DINT dint_field{};

};

 

struct FBWithStruct : mplc::api::ScadaFB {

    MPLC_OBJECT(FBWithStruct);

    ExampleStruct struct_field;

    STRING str_field;

    FBWithStruct() {}

    const STRING& GetStrField() {

        return struct_field.str_string;

    }

    ~FBWithStruct() override {}

    void Execute() override {}

};

fb_with_struct.cpp

Структуру и её поля, как и в случае ФБ, необходимо регистрировать. Для этого используется макросы MPLC_DECLARE_PROPERTIES и MPLC_DECLARE_API.

Важно! Названия ExampleStruct и FBWithStruct должны совпадать с названиями структуры и ФБ в проекте MasterSCADA 4D.

Для этого был создан файл реализации для ФБ fb_with_struct.cpp:

real_FB_struct_3

Содержимое файла:

Скриншот

Текст

real_FB_struct_4

#include "fb_with_struct.h"

 

MPLC_DECLARE_PROPERTIES(ExampleStruct){

    MPLC_InOut(str_string),

    MPLC_InOut(dint_field),

};

MPLC_DECLARE_API(ExampleStructExampleStruct);

 

MPLC_DECLARE_PROPERTIES(FBWithStruct){

    MPLC_InOut(struct_field),

    MPLC_In(str_field),

    MPLC_Out(Result, GetStrField),

};

MPLC_FB_TYPE(FBWithStructFBWithStruct);

Далее можно компилировать проект.

Компиляция проекта

ОС Windows

Для компиляции проекта на ОС Windows нужно выполнить команду Build в контекстном меню проекта:

real_FB_struct_5

Скомпилированные файлы появятся в папке проекта: C:\mplc\api\platform\x64\bin\Release (адрес действителен, если название папок, которые делал разработчик, совпадают с названиями, которые давались в этой инструкции).

ОС Linux

Чтобы произвести сборку под Linux платформы, нужно сохранить проект и перенести все файлы из папки C:\mplc\api (адрес действителен, если название папок, которые делал разработчик, совпадают с названиями, которые давались в этой инструкции) в созданный каталог на компьютере с ОС Linux. Подробнее смотрите в разделе Сборка под Linux платформы.

После сборки можно приступать к тестированию созданного ФБ.