C++. Simple displaying a Message Box

Простой способ создания диалоговоко окошка.

Для более подробного ознакомления - MessageBox function (Windows), Message Box Example (C++) (Windows) и Using Dialog Boxes (Window).

Немного кода (скачать):

#include <windows.h>

int DisplayResourceNAMessageBox() {
    int msgboxID = MessageBox(
        NULL,
        (LPCWSTR)L"Are you sitting down for an hour. Quickly raise your ass and go a walk",
        (LPCWSTR)L"Health timer",
        MB_OK
    );
    return msgboxID;
}

int main() {
 DisplayResourceNAMessageBox();
 return 0;
}

Ну и как всегда - удачи!

RSLogix5000. Создание массива. Объяснение на пальцах.

Как создать массив в RSLogix 5000? Очень просто. Есть два пути. По-крайней мере известных мне: - 1) Создать соответствующий тег в общем списке всех тегов контроллера (Control Tags); - 2) завести непосредственно в программе и далее правым кликом выбрать - `создать`. Ниже на пальцах на скриншотах показаны ориентиры в этом нелегком деле (выбран первый способ). Use it!
Step 1

Step 2

Step 3

Step 4

Step 5

Промышленное программирование. Введение. PLC/RSLogix5000/Archestra

Промышленное программирование.


Что же это такое? С чем приходиться больше сталкиваться: больше с промышленностью или с программированием? Лично у меня на это свой ответ: все зависит от технологии конкретного производства и, конечно, от степени внедренности на предприятии it-технологий. Также для меня стало очевидно, что круг вопросов программирования становится иным, весь фокус ложится именно на разработку промышленной логики (алгоритм) и визуализацию данной логики (по-сути - разработка интерфейса, позволяющего пользователю взаимодествовать с данной логикой в рамках технологических процессов). С этой точки зрения, промышленное программирование эквивалентно классическому: также - разработка алгоритма и также - разработка интерфейсной части. Но инструменты (язык) при этом свои, а ведь именно инструмент накладывает свои отпечатки на образ мышления. Думать по "С++" - ному - не то что думать по "PHP" - шному. Уверен, что Вы со мной согласитесь. Это же относится и к промышленному программированию.

Разработка помышленной логики (алгоритм).

Для кодинга в этом направлении используются свои языки. Все зависит от того, какой контроллер используется на предприятии. В моем случае - RSLogix, скорее это даже не язык, а среда разработки - RSLogix 5000 (разработка компании Rockwell Automation) для контроллеров производителя Allen Bredly (Allen Bredly Programmable Controller).




В  RSLogix реализованы три подхода в программировании:
1 - Ladder Diagram (по-сути - RAD (от англ. rapid application development — быстрая разработка приложений));
2 - Function Block (графичский подход, ориентировано больше на инженеров по микроэлектронике);
3 - Structered Text (можно сказать - Паскаль в действии);
В большей степени на практике использую именно первый подход - Ladder Diagram. Ниже представлен небольшой пример программы: каждые 0,1 секунду контроллер считывает внешний сигнал - Signal - и записывает полученные значения в одномерный массив test[i]. И так - 10 раз. Программа конечно несложная, скорее - наглядная.
Сам по себе, синтаксис паскалеподобный.
Типы данных представлены не только такими как - bool, int, dint (double int), string, real (аналог float), timer, но и специфичными - alarm, hmi_button, etc.
Максимальная допустимая к созданию размерность массива - `3`мерная (Array Dimensions). Если в Паскале мы имеем дело с процедурой, то здесь представлены `Add-on`ы (Control module), в которых есть как внешние (Parameters), так и внутренние (Local Tags) члены, есть возможность назначить модификаторы доступа как в классах ООП (required, visibility).
Раасматривать другие возможности здесь не буду, просто скажу, что все, что есть в обычном программировании - есть и здесь, плюс свои "штучки".

Вообще, когда начинаешь программировать, то приходиться работать с 1) со множеством сигналов от различных датчиков, устройств, моторов, клапанов, ну и прочего оборудования и 2) центром всего - контроллером. Когда мы сидим за ноутом или компом и программируем, то часто не берем в счет то, что мы также обращаемся к микрокотроллеру - центральному процессору. Для высокоуровневых языков с ООП подходом - нормально, но если взять ассемблер - без этого никак. Ниже представлен промышленный контроллер. Протокол общения - сетевой стандарт - tcp/ip.



 










Для контоллеров Siemens используется Simatic Step7. Подходы теже самые, но со своими нюансами.

Визуализация промышленной логики (графический интерфейс пользователя).

 "Общение" программы с конечным пользователем происходит на уровне интерефейса, в большей степени - графическом интерфейсе. В промышленном программировании - конечным пользователем является так называемый - оператор, причем так звучит должность человека на фабрике. Все серьезно :) Отсюда понятно, что интерефейс должен быть интуитивно понятным, а значит - графическим (70 % информации "бежит" по глазам). Поэтому приходиться решать и чисто дизайнерские задачи. Для наглядности приведен скриншотик рабочей зоны вот такого вот интефейса.

Вообще, система визуализации в промышленности именуется SCADA (аббр. от англ. supervisory control and data acquisition, диспетчерское управление и сбор данных). На самом деле, визуализация - это не просто создание интерфеса, это система сбора, управления и вывода данных. У нас на фабрике используется системная платформа - Archestra SCADA компании Invensys Systems. Также есть альтернативные системы, например - Elipse.

Стоит отметить и еще одну вещь. Теги (англ. tag — ярлык, этикетка, бирка; метить). После знакомства с промышленным программированием, понятие тега встречается практически на всех этапах. Для меня тег - не просто какая-то высокоуровневая метка, это носитель информационных единиц (true/false), также и носитель физических данных между контроллером и человеком. Своего рода теговый мостик (Tags bridge). Ниже представлены модели взаимодействия контроллера со SCADA с одной стороны, и с другой - датчиками, моторами, клапанами и другими устройствами.


Вот такое небольшое введение в промышленное программирование. Всем удачи :)