Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Использование простых и сложных типов данных в C++

Всем привет,

В этом сообщении блога мы рассмотрим простые и сложные типы данных в C++ и PLCnext Engineer. Он будет состоять из двух отдельных частей:простого и сложного упражнения.

В этом руководстве предполагается, что у вас есть некоторый опыт работы с C++ и PLCnext Engineer.

начать

Во-первых, вам потребуются правильные инструменты для работы, редактор C++, программное обеспечение PLCnext Engineer и ПЛК Phoenix Contact. Вот материалы, которые я использовал:

Лично я выбрал Visual Studio в качестве редактора C++, но eclipse также можно использовать. Ссылки на учебники можно найти здесь:

Что касается PLCnext Engineer, его можно найти на нашем сайте.

Простое упражнение

В этом первом примере мы создадим небольшое приложение, которое проверяет, отправлено ли правильное число из ПЛК. Сначала создайте новый проект C++. Затем переходим к заголовочному файлу, имя должно выглядеть примерно так [NameOfTheProject].hpp, есть также файлы с именем [nameOfTheProject]component.hpp, которые мы не будем использовать. Как только вы окажетесь в заголовочном файле, перед вами будет стена кода, но не волнуйтесь, он будет простым. Прежде всего, мы определим порты, один IN и один OUT. Их можно определить так, имейте в виду, что это только для простых типов данных:

//#порт
//#атрибуты(ввод)
//#имя(InputTest)
int64 InputTest =0;


//#порт
//#атрибуты(Вывод)
//#имя(выходной тест)
int64 OutputTest =0;

Затем мы переходим к следующему файлу, где мы будем выполнять фактическое кодирование. Он должен называться [NameOfTheProject].cpp и не должен содержать много. Мы изменим это достаточно скоро. Давайте добавим некоторый код для проверки чисел либо с помощью If, либо с помощью регистра switch, это на ваше усмотрение. Я использовал структуры if в этом примере:

void PLMProjectReadInputProgram::Execute()void PLMProjectReadInputProgram::Execute(){
если (InputTest ==1) {
Выходной тест =15;


если (InputTest ==2) {
Выходной тест =150;


если (InputTest ==3) {
Выходной тест =1500;


если (InputTest ==4) {
Выходной тест =15000;

<самп>

Прежде чем мы перейдем к инженеру PLCnext, нам нужно превратить этот проект C++ в библиотеку для понимания ПЛК. Это делается простым нажатием на сборку в верхней части экрана. Это должно немного поработать и сообщит вам, когда библиотека будет завершена. Если этот шаг неясен, я настоятельно рекомендую вам проверить учебники, перечисленные выше.

Перейдите к основной программе на вкладке компонентов в разделе «Программирование» в папке «Локальные», затем выберите переменные на главном экране, чтобы увидеть переменные в ПЛК. Здесь мы можем выбрать имя, тип данных и использование. Типы данных в PLCnext Engineer должны быть такими же, как и в программе C++. Ссылку на различные типы и их эквиваленты можно найти здесь. Использование определяет, являются ли переменные локальными или могут использоваться для отправки и получения данных из внешних программ или переменных.

После этого мы начнем подключать переменные после того, как добавим новую библиотеку. Это можно сделать так:

Созданную вами библиотеку можно найти в папке bin вашего проекта, скопируйте ее в папку библиотек для инженера PLCnext. Расположение выглядит примерно так:

C:\Users\Public\Documents\PLCnext Engineer\Libraries

После этого мы возвращаемся к инженеру PLCnext, чтобы добавить библиотеку в нашу программу. Мы перейдем на вкладку компонентов, откроем окно библиотек и щелкнем правой кнопкой мыши библиотеки. Затем нажмите «добавить пользовательскую библиотеку», и вы попадете в папку библиотек, к которой мы обращались ранее. Выберите библиотеку, которую хотите использовать, и продолжайте.

Как только это будет сделано, нам нужно будет добавить программу к задачам, что делается следующим образом. В левой части экрана внутри области установки дважды щелкните PLCnext. Он должен открываться посередине. Затем перейдите на вкладку «задачи и события» и добавьте новую программу после MainInstance. Это можно сделать двумя способами:либо выбрав тип программы, либо перетащив его из области компонентов в разделе «PLCnext Components &Programs».

Затем переменные должны появиться на вкладке «Список портов», расположенной рядом с вкладкой «Задачи и события». Откройте его, чтобы вас приветствовали все ваши переменные из C++ и PLCnext. Это должно выглядеть примерно так:

Если вы все сделали правильно, вы сможете соединить порты OUT вашего ПЛК с портом IN программы на C++, возможно и наоборот, и это должно выглядеть примерно так. Если это не сработает, попробуйте проверить свои типы данных.

Чтобы добавить фиктивное значение к нашей переменной, давайте перейдем к основной программе на вкладке компонентов, затем выберем код на главном экране, чтобы увидеть код и добавить свой собственный. Мы просто установим для переменной числовое значение, в данном случае 1.

Теперь давайте развернем проект на ПЛК, и мы должны получить 15 в ответ от кода C++. Вы можете увидеть переменные в «Списке портов» раньше.

Комплекс упражнений

В этом примере мы создадим небольшое приложение, которое будет отправлять массив структур в ПЛК и из него. Сначала создайте новый проект C++. Затем переходим к заголовочному файлу, имя должно выглядеть примерно так [NameOfTheProject].hpp, есть также файлы с именем [nameOfTheProject]component.hpp, которые мы не будем использовать. Как только вы окажетесь в заголовочном файле, перед вами будет стена кода, но не волнуйтесь, он будет простым. Во-первых, нам нужно создать структуру для этого примера, мы будем создавать структуру для автомобиля. Делается это следующим образом:

public:// typedefs
структура StrCar{
StaticString<80> sbrand;
int16 iHorsepower;
int16 iYear;
логический xInsured;
<самп> };

!ВАЖНЫЙ! Имена и типы в C++ и PLCnext Engineer должны быть одинаковыми! Типы данных можно найти здесь.

Затем мы будем определять порты, один IN и один OUT, потому что они будут списками данных, делающими их такими. Также важно составить список «автомобилей». Делается это так:

//#порт
//#атрибуты(ввод)
//#name(CarIn)
StrCar CarToC[2];

//#порт
//#атрибуты(Вывод)
//#name(CarOut)
StrCar CarFromC[2];

Затем мы переходим к следующему файлу, где мы будем выполнять фактическое кодирование. Он должен называться [NameOfTheProject].cpp и не должен содержать много. Мы изменим это достаточно скоро. Здесь мы будем менять значения для первой и второй машины.

//Устанавливаем первый член списка автомобилей равным авто из ПЛК
CarFromC[0].sbrand =CarToC[1].sbrand;
CarFromC[0].iHorsepower =CarToC[1].iHorsepower;
CarFromC[0].iYear =CarToC[1].iYear;
CarFromC[0].xInsured =CarToC[1].xInsured;

//Добавляем фиктивные значения ко второму члену
CarFromC[1].sbrand =CarToC[0].sbrand;
CarFromC[1].iHorsepower =CarToC[0].iHorsepower;
CarFromC[1].iYear =CarToC[0].iYear;
CarFromC[1].xInsured =CarToC[0].xInsured;

Прежде чем мы перейдем к инженеру PLCnext, нам нужно превратить этот проект C++ в библиотеку для понимания ПЛК. Это делается простым нажатием на сборку в верхней части экрана. Это должно немного поработать и сообщит вам, когда библиотека будет завершена. Если этот шаг неясен, я настоятельно рекомендую вам проверить учебники, перечисленные выше.

Теперь, прежде чем мы сможем перейти к созданию переменных в PLCnext Engineer, нам нужно создать собственный тип данных, в данном случае struct car и список автомобилей. Для этого нам понадобится файл типов данных, который можно найти и создать здесь:

Откройте этот файл, если он еще не открыт, тогда мы можем начать создавать нашу собственную структуру следующим образом:

ТИП

StrCar:

СТРУКТУРА

sBrand:STRING;
iHorsepower:INT;
iYear:int;
xInsured:BOOL;

END_STRUCT <самп>

END_TYPE

!ВАЖНЫЙ! Имена и типы в C++ и PLCnext Engineer должны быть одинаковыми! Типы данных можно найти здесь.

После создания структуры нам нужно создать массив этого типа, и это делается так и в том же файле, в котором мы сейчас находимся:

ТИП

carList:ARRAY[0..1] OF StrCar;

END_TYPE

Чтобы создать переменную с типом «carList», перейдите к основной программе на вкладке компонентов в разделе «Программирование», затем в папке «Программы», затем выберите переменные на главном экране, чтобы увидеть переменные в ПЛК. Здесь мы можем выбрать имя, тип данных и использование. В качестве типа данных выберите наш пользовательский:

После этого мы начнем подключать переменные после того, как добавим новую библиотеку. Это можно сделать так:

Созданную вами библиотеку можно найти в папке bin вашего проекта, скопируйте ее в папку библиотек для инженера PLCnext. Расположение выглядит примерно так:

C:\Users\Public\Documents\PLCnext Engineer\Libraries

После этого мы возвращаемся к инженеру PLCnext, чтобы добавить библиотеку в нашу программу. Мы перейдем на вкладку компонентов, откроем окно библиотек и щелкнем правой кнопкой мыши библиотеки. Затем нажмите «добавить пользовательскую библиотеку», и вы попадете в папку библиотек, к которой мы обращались ранее. Выберите библиотеку, которую хотите использовать, и продолжайте.

Как только это будет сделано, нам нужно будет добавить программу к задачам, что делается следующим образом. В левой части экрана внутри области установки дважды щелкните PLCnext. Он должен открываться посередине. Затем перейдите на вкладку «задачи и события» и добавьте новую программу после MainInstance. Это можно сделать двумя способами:либо выбрав тип программы, либо перетащив его из области компонентов в разделе «PLCnext Components &Programs».

Затем переменные должны появиться на вкладке «Список портов», расположенной рядом с вкладкой «Задачи и события». Откройте его, чтобы вас приветствовали все ваши переменные из C++ и PLCnext. Это должно выглядеть примерно так.

Если вы все сделали правильно, вы сможете соединить порты OUT вашего ПЛК с портом IN программы на C++, возможно и наоборот, и это должно выглядеть примерно так. Если это не работает, проверьте типы данных и имена ваших переменных.

Чтобы добавить фиктивное значение к нашей переменной, давайте перейдем к основной программе на вкладке компонентов, затем выберем код на главном экране, чтобы увидеть код и добавить свой собственный. Мы просто установим переменную, связанную с некоторыми особенностями автомобиля. Их можно выбирать случайным образом, но они должны соответствовать типам данных. (в зависимости от того, что вы выбрали, используйте строки там, где вы использовали строки и т. д.)

CarToC[0].sBrand :=‘Audi’;
CarToC[0].iHorsepower :=200;
CarToC[0].iYear :=2020;
CarToC[0].xInsured :=TRUE;

CarToC[1].sBrand :=‘Mazda’;
CarToC[1].iHorsepower :=120;
CarToC[1].iYear :=2001;
CarToC[1].xInsured :=FALSE;

После развертывания этого примера исходящий список должен быть заменен входящим списком. Вы можете увидеть переменные в «Списке портов» раньше.


Промышленные технологии

  1. В облако бесконечности и дальше
  2. Комплексные вычисления напряжения и тока
  3. Базовый ввод и вывод C#
  4. Классы и объекты С++
  5. Структуры и классы в C ++
  6. Дата и время С++
  7. Процедуры написания:простые и эффективные благодаря переходу на цифровые технологии
  8. Удаленный gRPC с помощью grpcurl
  9. Как создать простое консольное приложение PLCnext на C#
  10. Установка менеджера пакетов apt(-get) на PLCnext