Telepace studio руководство на русском языке

45iBqO6VwrU.jpg

fKliMcmv-Mw.jpg

Итак, знакомьтесь. Это программируемый логический контроллер (ПЛК) под названием SCADAPack фирмы Schneider Electric (ранее Control Microsystems).

Программи́руемый логи́ческий контро́ллер (сокр. ПЛК; англ. programmable logic controller, сокр. PLC; более точный перевод на русский — контроллер с программируемой логикой), программируемый контроллер — промышленный контроллер, используемый для автоматизации технологических процессов. В качестве основного режима работы ПЛК выступает его длительное автономное использование, зачастую в неблагоприятных условиях окружающей среды, без серьёзного обслуживания и практически без вмешательства человека. [Википедия]

ПЛК эти заслужили славу своей надежностью и богатыми возможностями программирования. Внутри у контроллера в зависимости от серии стоит ARM-процессор на котором работает операционная система VxWorks.

В промышленной автоматизации общепризнанным стандартом являются языки МЭК, такие как LD/LAD, FDB и ST. Первый из них представляет собой ни что иное, как схемы, похожие на схемы релейной логики. Второй представляет собой ни что иное, как схемы, похожие на схемы с логическими элементами и электронными компонентами (таймеры, счетчики, и т.д.). Третий представляет собой текстовый язык, навевающий воспоминания о Паскале. Но сегодня мы поговорим не про них (желающие всегда могут погуглить), а про разработку под эти контроллеры на Си, что во-первых гораздо ближе «простым программистам», а во-вторых спасает при необходимости программирования сложных математических расчетов или реализации нестандартных коммуникационных протоколов.

Для компиляции нам понадобится, собствено, компилятор, заголовочные файлы и стандартная библиотека контроллера. Всё это можно найти на сайте производителя под названием C Tools, а описание API — там же.
Разработка начинается с написания Makefile’а (скрипта для сборки проекта из исходников в бинарный файл). Пример makefile’а можно найти в директории C Tools:
C:Program FilesControl MicrosystemsCToolsControllerFramework ApplicationsTelePACE
Там же есть пример main.cpp и файла appstart.cpp (он тоже необходим для сборки).
Ctools.h лежит в C:Program FilesControl MicrosystemsCToolsControllerTelePACE

Обратить внимание в нём стоит на 3 вещи:
objects = appstart.o main.o 
данная строка задает, какие файлы необходимо компилировать для сборки прошивки. Если у вас проект разделен (а так и должно быть) на .c- или .cpp-файлы с заголовками (.h- или .hpp-файлы), то они должны быть перечислены в этой секции. Если вы вдруг забудете что-нибудь, компилятор напомнит об этом ошибкой Undefined reference.

CTOOLS_PATH = C:Program FilesControl MicrosystemsCTools
Это путь к Ctools. Скореектируйте, если он у вас отличается.

TARGET = SCADAPack350
эта строка определяет, под какое семейство контроллеров мы компилируем прошивку. Возможные варианты: 
SCADAPack350 (сюда относятся 357, и т.д.), SCADAPack33x, 4203

Компиляция прошивки производится командой make из командной строки.
Если выводится сообщение, что не удалось найти эту команду, проверьте, что у вас в системной переменной PATH прописан путь к библиотекам C-Tools:
C:Program FilesControl MicrosystemsCToolsArm7hostx86-win32bin

Простое приложение
Для компиляции простой (и пустой) прошивки, нам будет необходим Makefile, файлы appstart.cpp и main.cpp.

Их примеры можно найти в той же директории C Tools, что была упомянута выше. Appstart.cpp отвечает за инициализацию оборудования и среды выполнения, а в main.cpp мы уже можем писать нужный нам код.

Общая структура программы на Си для SP выглядит вот так

caVUXNNBFAk.jpg

Вызов release_processor() необходим в каждом цикле, потому что кроме нашей программы ОС контроллера выполняет также другие служебные процессы (обработчики портов и протоколов, среда исполнения, и т.д.). Без вызова этой функции, к примеру, после запуска программы будет невозможно остановить ее или перепрошить контроллер.

Стиль кодирования в C Tools, увы, оставляет желать лучшего: встречаются разные стили именования функций (process_io() и release_processor(), но ioReadDin16() и addRegAssignment(), а еще getclock()/setclock()), в некоторых схожих функциях с одинаковыми аргументами поменяны местами эти самые аргументы, короче говоря, будьте внимательны.

Из общих советов разработки надежных встраиваемых систем: старайтесь писать максимально простой и понятный код, придерживаться выбранного стандарта кодирования, будьте аккуратны с преобразованиями типов, лучше избегайте динамического выделения памяти и арифметики указателей без большой надобности.

Как основу для правил можно взять отдельные пункты стандартов MISRA (стандарт разработки встраиваемого ПО для автомобилей) или JSF (для авиации).

Загрузка программы в контроллер
Для этого нам и понадобится TelePACE. К контроллеру можно подлючаться по RS232/485, по Ethernet и даже по USB (если он есть у используемой модели скадапака).

-K6SEF7hbNc.jpg

Принцип примерно один и тот же:

  1. Выбираем сверху в поле Protocol нужный нам протокол (Modbus RTU, Modbus TCP или Modbus USB)
  2. Нажимаем Configure Settings и задаем все нужные данные (RTU-адрес, скорость порта для RS232/485 или IP-адрес для TCP)
  3. Нажимаем Connect и убеждаемся, что соединились с контроллером.
  4. На вкладке Initialize можно сбросить контроллер к первозданному виду — удалить все программы, LAD-проекты, настройки портов и register assignments.
  5. На вкладке C/C++ можно посмотреть, какая программа загружена в контроллер, остановить/запустить ее, загрузить новую (исследуете кнопочки вверху вкладки!).

Работа с таймерами
Начнем с самой простенькой программы – Hello World, а именно, помигаем светодиодом на контроллере.

U50V73HaGh0.jpg

Работа с modbus-регистрами

Modbus — открытый коммуникационный протокол, основанный на архитектуре ведущий-ведомый (master-slave). Широко применяется в промышленности для организации связи между электронными устройствами. Может использоваться для передачи данных через последовательные линии связи RS-485, RS-422, RS-232, и сети TCP/IP (Modbus TCP). Также существуют нестандартные реализации, использующие UDP. Основные достоинства стандарта — открытость и массовость. Промышленностью сейчас выпускается очень много типов и моделей датчиков, исполнительных устройств, модулей обработки и нормализации сигналов и др. Практически все промышленные системы контроля и управления имеют программные драйверы для работы с MODBUS-сетями. [Википедия]

В SCADAPack работа с Modbus реализована красиво и удобно.

Память modbus-регистров у контроллера энергонезависимая, и не теряется даже после перезагрузки или пропадания питания. С одной стороны, это немного неудобно (не забывайте очищать или инициализировать регистры при старте, если есть такая необходимость), но с другой стороны, это позволяет хранить в адресном пространстве modbus настройки, уставки, и даже архивы небольшого объема.

Кроме того, в modbus-регистры помещаются результаты выполнения различных команд (чтение состояния дискретных и аналоговых входов, опроса внешних устройств, и т.д.).

Обработчик modbus в скадапаках реализован на уровне операционной системы, и поэтому после запуска программы, по всем COM-портам (и по Ethernet) мы сразу можем опрашивать контроллер по модбасу (о настройке портов будет чуть позже). Более того, на modbus-запросы контроллер будет отвечать, даже если программа остановлена.

Запись и чтения modbus-регистров осуществляется функциями dbase() и setdbase(), например, вот так:

gsdArdEdXNg.jpg

Данный пример читает два числа из регистров 0001 и 0002 зоны Inputs и сохраняет результат их умножения в регистр 0020 зоны Holding. Всё просто.

Работа с сигналами ввода-вывода
Работа модулями ввода и вывода может проходить тремя способами:

Первый способ
Первый вариант — создать «register assignment». Состояние (дискретные и аналоговые значения) входных каналов модулей DIN и AIN будет автоматически “отображаться” в modbus-регистры, и наоборот, для модулей DOUT и AOUT состояние выходов будет определяться значениями, записанными в регистрах. Для этого используются функции clearRegAssignmnet (очистка все старых назначений) и addRegAssignment (создание новых).

Первый аругмент функции addRegAssignment – тип модуля (список констант можно посмотреть в документации на TelePACE и в заголовочных файлах, могут быть DIN_5401, DIN_5404, AIN_5301 и другие), второй – адрес модуля (он обычно задается перемычкой на самом модуле, а если используются встроенные в SP входы, то равен 0), и далее идут адреса регистров, начиная с которых должна производиться запись (если модуль обеспечивается получение данных разных типов, то и групп регистров будет несколько – coils, status, inputs и т.д.)

mG6KfWNyOo0.jpg

Стоит иметь в виду, что если вы принудительно остановите среду выполнения (runTarget(FALSE)), то они работать не будут, но если вы не вносили изменений в стандартный файл appstart.c в целях оптимизации, то беспокоиться не о чем.

Не забывайте выполнять clearRegAssignment(); при запуске программы, даже если вы не пользуетесь ими – кто знает, кто и что делал на этом контроллере до вас.

Если вы не знаете точно, какая плата ввода-вывода будет стоять на контроллере, на котором будет запущена ваша прошивка, можно воспользовать решением, предложенным специалистами из ОЗНА.

Второй способ
Вызывать явно функции чтения, которые сохранят данные в заданные modbus-регистры.
Это могут быть функции ioRead8Din, ioRead8Ain, ioRead16Din, ioRead16Ain, ioRead5604Inputs, ioWrite16Dout, ioWrite5604Outputs, ioRead4Counter (для счетных входов), ioReadSP2 (для чтения встроенных входов, в зависимости от модели контроллера). Подробности и синтаксис этих команд можно прочитать в документации на C Tools, обычно первым аргументом следует адрес модуля (0 для встроенных входов), а вторыми и дальше – адреса modbus-регистров, начиная с которых нужно сохранить значения сигналов (или откуда их брать для записи в выходные каналы).

Пример:

ldtQWJt1ZJg.jpg

Вызов функций ioWrite* аналогично произведет установку нужных значений из modbus-регистров в выходные каналы контроллера и модулей.

Третий способ
То же самое, но с сохранением результатов не в modbus-регистры, а в переменные или массив. Функции называются так же, но имеют перегруженную реализацию с другими аргументами.

qOToR04VLF0.jpg

Нечто подобное можно сделать с данными, которые мы хотим записать в выходные каналы (например, замкнуть релейный выход):

DRxEqf4MnGk.jpg

Конкретные функции и константы для чтения и записи данных в используемые модули нужно смотреть в документации и в заголовочных файлах C Tools. К примеру, у функций для модуля 5607, как можно заметить выше, есть дополнительные опции для настройки типа входа, параметров фильтра, и т.д. Они также описаны в документации.

Есть еще функции получения текущей температуры контроллера и напряжения на батарее – readThermistor(T_CELSIUS), readBattery(). Мелочь, а полезно.

Масштабирование AI
Каналы аналогового ввода модулей контроллера могут работать в разных режимах (например, с входными диапазонами 0-20 или 4-20 мА, это определяется перемычками на модуле). Выдают данные они в единицах АЦП, и преобразовать их в нужную нам шкалу (например 4-20 мА будет соответствовать 0-100%) довольно просто:

C68Pfzv4ZU0.jpg

Естественно, вместо 100 можно умножить число на нужный вам верхний предел шкалы.

Настройка портов RS-232/RS-485
Здесь, опять же, никакой магии:

MiMTRNH0M3Q.jpg

Настройки портов сохраняются в EEPROM, однако в зависимости от конфигурации контроллера, версий библиотек, и т.д., можно по определенному событию (команда, замыкание перемычки, и др) читать, например, из тех же modbus-регистров, чтобы автоматически переконфигурировать и обновлять их.

Опрос устройств по modbus
Если вам хочется не просто работать как slave-устройство, но и самим опрашивать другие контроллеры или датчики, есть функции вида master_message(), позволяющая произвести опрос внешних устройств по модбасу, и сохранить результаты к себе в регистры, откуда потом их можно считать и использовать в алгоритме (или же просто предоставить верхнему уровню). Примеры есть в документации, только учтите два нюанса: необходимо обязательно проверять результат выполнения функции командой get_protocol_status(), перед тем как отправлять повторный запрос или работать с полученными данными, и второй нюанс: необходимо либо вообще отключать обработчик modbus на используемом порту, либо следить, чтобы его адрес не совпадал с адресом опрашиваемого устройства (иначе можно получить неопределенное поведение или странные ошибки).

WyJfVAkYDno.jpg

stream – порт, через который будет идти обмен данными (например, com1), function – номер функции modbus для запроса (например 3), slave_station – адрес RTU опрашиваемого устройства, slave_address – стартовый адрес регистров в удаленном устройстве, которые мы хотим прочитать, master_address – стартовый адрес регистров на нашем контроллере, куда будут записаны данные, length – количество регистров для чтения).

Пример:

I72SKeitB3I.jpg

Также можно установить свой обработчик Modbus-пакетов (installModbusHandler()) чтобы реализовывать какие-либо расширения протокола.
Система ведет статистику обмена (принято/отправлено, количество ошибок, и т.д.), которую тоже можно считать из соответствующих структур.

Коммуникации
Можно также установить свой обработчик данных, пришедших по COM-портам (install_handle()) для реализации каких-то нестадартных протоколов. 
С TCP/IP все тоже хорошо. Доступны стандартные функции работы с BSD Sockets: bind(), getsockopt(), и т.д. Настройки сети на контроллере можно программно считать и записать (ethernetGetIP(), ethernetSetIP()).

Ведение архивов
В документации SCADAPack для этих целей предлагается использовать DataLog из библиотеки C Tools, который, к сожалению, обладает большим количеством недостатков, главный из которых состоит в том, что он не обеспечивает прямой непоследовательный доступ к записям в архиве. Некоторые разработчики обходятся хранением архивов прямо в регистровой памяти, но, учитывая что количество Holding и даже Inputs (при желании их можно использовать тоже, да) в контроллере ограничено, это решение тоже не всегда подходит.

На самом же деле, учитывая что операционная система в контроллере вполне себе POSIX-совместимая, а сам контроллер несет у себя на борту вполне нормальную файловую систему (плюс есть возможность вставлять USB Flash-накопители), есть возможность хранить архивы в файлах на флешке на борту контроллера, о чем совершенно вскользь упомянули в документации.

Работать с файлами можно как и в любой Си-программе:

yS6h4KJOpiQ.jpg

То есть нет никаких препятствий чтобы записывать (как вариант — вести циклический архив) в файл сериализованные структуры, а потом свободно по ним перемещаться и отдавать их пользователю либо маппируя определенную часть архива в пространство modbus-регистров, либо отдавая их пользовательской (кастомной) modbus-функцией большими блоками.

yqzQc_XE6d4.jpg

В точку /d0/ монтируется файловая система, в /bd0/ — внешний USB-флеш накопитель. Опять же, нет никакой проблемы реализовать копирование архива из встроенной памяти на флешку при нажатии на кноку на контроллере, и много других вариантов.

В TelePACE файловая система просматривается совершенно спокойно, что может помочь для отладки или сбора данных.

Энергонезависимая память
Как я уже отмечал, в энергонезависимой памяти, прежде всего, хранятся данные Modbus-регистров, то есть значения, сохраненные в них, будуь доступны и после перезагрузки контроллера.
Кроме того, существует отдельная структура s_nvMemory, объявленная в файле nvMemory.h, с максимальным размером 8 килобайт, которую вы можете отредактировать как вам удобно (создав нужные поля) и хранить там данные, которые должны остаться целостными в том числе после пропадания питания и перезагрузки контроллера. Если этого недостаточно, то дополнительно методом allocateMemory() можно выделять блоки энергонезависимой памяти общим размером до 1 мегабайта и хранить в них архивы, логи, и т.д. Самое главное в этом случае — после выделения блока памяти не забыть сохранить указатель на нее в вышеупомянутую структуру s_nvMemory, иначе выделенная память будет потеряна, и вы не сможете ни использовать ее, ни освободить (freeMemory()). А еще при доступе к энергонезависимой памяти нужно не забывать захватывать ресурс DYNAMIC_MEMORY.

Многозадачность и многопроцессность
Можно как одновременно запускать несколько разных программ, так и внутри одной программы запускать одновременно несколько разных методов (функции createTask(), getTaskInfo() и т.д.), задавать им приоритеты и даже слать сигналы между задачами и сообщения между процессами (так называемые ‘envelopes’).
Многозадачночность кооперативная, то есть переключение между задачами и программами выполняется не принудительно операционной системой, а поочередно, когда они сами готовы передать исполнение дальше или при возникновении определенных событий. С одной стороны, это решает проблему с атомарностью операций при совместном доступе к данным, а с другой стороны, нужно не забывать вызывать release_processor() и не захватывать ресурсы на слишком долгое время. Пример многозадачной программы и граф изменения состояния при возникновении событий описаны в документации в главах «RTOS Example Application Program» и «Explanation of Task Execution».

Динамическая память
malloc() и free() вполне работают, как и new и delete. Единственный довольно важный нюанс — при остановке программы (например, нажатием кнопки Stop), выделенная память системе не возврращается: необходимо осознанно установить обработчик завершения работы программы (installExitHandler) и освободить там все запрошенные блоки из кучи.

Работа с часами реального времени
У контроллера есть также на борту часы реального времени.
Получать текущее время и устанавливать его можно функциями getclock и setclock, в документации есть подробные примеры.

Пример простого алгоритма
Допустим, у нас есть контроллер с платой ввода-вывода 5604, к каналу AI 2 которой подключен аналоговый датчик уровня в емкости, к каналу DO1 подключено реле пускателя насоса.

Необходимо поддерживать в емкости заданный уровень жидкости (требуемый уровень задается из SCADA или с панели HMI), то есть при слишком высоком уровне должен включаться насос, откачивающий излишек, и выключаться при достижении нужного уровня.

В регистр 0020 зоны Holding (40020) будем записывать приведенное значение уровня для отображения на SCADA или HMI-панели.

Также нужно предусмотреть небольшой гистерезис для защиты от «щелканья» реле насоса в случае, когда уровень колеблется около нужной отметки.

Опрос контроллера будет идти через порт COM2.

8q-HOyS4_R8.jpg

f9X0FQabmh0.jpg

fI_K7sEp3KU.jpg

Ka9vltrBwHc.jpg

Вот, собственно, и всё
Описание всех функций и примеры их использования есть в документации на C Tools.

Очень хорошо обладать целостными знаниями Си (например, при реализации алгоритмов это касается приведения типов), чтобы писать код красиво и без ошибок.

Изучайте, экспериментируйте, и всё получится!

Источник:

https://habr.com/post/350282/

Our Brands

Register today

  • Get custom product tools and services
  • Access training
  • Manage support cases
  • Create and manage your orders (authorized partners only)

Create account

Log in

Read more benefits

0

item count of documents is


Item count in cart is
0

My Products

My Documents

Login/Register opens in new window

Impact-Company-Logo-English Black-01-177x54

Impact-Company-Logo-English Black-01-177x54

Schneider Electric USA Website

Welcome to our website.

Telepace Studio User Manual

Date : 11/13/2012
Type : User guide

Languages : English
Version : 1

Document Number : Telepace_Studio_User_Manual

Date : 11/13/2012
Type : User guide
Languages : English
Version : 1
Document Number : Telepace_Studio_User_Manual

Download

Files

File Name

TelePACE Studio Help

action_download_stroke

ZIP

(10.1 mb)


Document title


Date


Version


Languages


Document title


Product Ranges:


SCADAPack 300, 32

loader-lg
loader-sm

Need help?

Start here!

Find answers now. Search for a solution on your own, or connect with one of our experts.

Contact Support

Reach out to our customer care team to receive more information, technical support, assistance with complaints and more.

Where to buy?

Easily find the nearest Schneider Electric distributor in your location.

Search FAQs

Search topic-related frequently asked questions to find answers you need.

Contact Sales

Start your sales inquiry online and an expert will connect with you.

Новый выпуск TelepaceStudio 5.0 значительно усилен, по сравнению с TelepaceStudio 4. В нем предлагается оптимизированная и более наглядная операционная среда, новые улучшенные инструменты редактирования, усовершенствованная программная аттестация. TelepaceStudio 5.0 позволяет снизить количество операций мыши на 65%, новые свойства TreeViewпомещают все команды в поле зрения постоянно, удалены все табуляторные элементы управления, значительно упрощая лицензионный редактор регистра.

Telepace Studio 5.0 бесплатно доступен для всех пользователей лицензий TelePACE Studio 4.x.

Демо-версия пакета программирования TelepaceStudio 5.0 доступна на сайте www.plcsystems.ru.

Данный материал является частной записью члена сообщества Club.CNews.
Редакция CNews не несет ответственности за его содержание.

  1. Обязательно представиться на русском языке кириллицей (заполнить поле «Имя»).
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему — вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома — бан без предупреждения.
  5. Рекламу и частные объявления «куплю/продам/есть халтура» мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать — читать здесь и здесь.

Модератор: Специалисты SE

Ermakov

Контроллеры SCADAPack

Сообщение

Ermakov » 20 ноя 2008, 07:19

Уважаемые коллеги,

поделитесь пожалуйста опытом у кого есть использования данных контроллеров. Какие отличительные плюсы…и очень бы хотелось заранее узнать минусы контроллеров и в каких местах с какими проблемами можно столкнуться?

Владимир Кузнецов

не первый раз у нас
не первый раз у нас
Сообщения: 321
Зарегистрирован: 31 авг 2011, 22:14
Имя: Кузнецов Владимир Сергеевич
Страна: Россия
город/регион: Казань

ru_rs

осмотрелся
осмотрелся
Сообщения: 142
Зарегистрирован: 22 янв 2010, 17:32
Имя: Sergey Yakushenko
Страна: RU
город/регион: Moscow

Re: Контроллеры SCADAPack

Сообщение

ru_rs » 03 окт 2011, 16:49

опана. как это я проспал такой ивент. уже 1.5г как…
хорошее дополнение будет у них к линейкам quantum/premium — им как раз не хватало в хорошем смысле кондового RTU, да еще на -40.
как правда clearscada и citect теперь подружаться — непонятно :)

Аватара пользователя

san

преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: Контроллеры SCADAPack

Сообщение

san » 03 окт 2011, 18:46

ru_rs писал(а):
хорошее дополнение будет у них к линейкам quantum/premium — им как раз не хватало в хорошем смысле кондового RTU, да еще на -40.
как правда clearscada и citect теперь подружаться — непонятно :)

Думаю пойдет в параллель. Как например ТАС или Preventa. А брендовая политика, на сколько я понимаю у Шнейдер такая: сначала все остается как есть, потом прибавляется by SchneiderElectric, а потом лет через надцать может и полностью ребрендизируют.

ru_rs

осмотрелся
осмотрелся
Сообщения: 142
Зарегистрирован: 22 янв 2010, 17:32
Имя: Sergey Yakushenko
Страна: RU
город/регион: Moscow

Re: Контроллеры SCADAPack

Сообщение

ru_rs » 03 окт 2011, 18:48

да чего там ребрендировать.
будет (и уже почти есть) Schneider Electric ScadaPack32 да и все :)
мне больше интересно будут ли шаги в плане интеграции с Юнити и Ситектом. И что будет с Клирскадой.

Аватара пользователя

san

преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: Контроллеры SCADAPack

Сообщение

san » 03 окт 2011, 21:46

Не заню, что собой представляет СкадаПак, и насколько он близок к Юнитевскими контролерами. Процес слития модиконовской и телемеханиковской ветвей длился лет 10.
Тем не менее существуют всякие ТАСи, сомашин М…(не помню какие, под кодесисом), превенты, не говоря уже о Твидо, живут себе независимой жизнью, и не путаются друг с другом, разделяя разные сферы.
Со СКАДАМИ немного другая история, но Сайтект пока единая своя купленая с потрохами, хотя до этого вместе с ТАС была и есть Виста. Согласен ТАС и Модиконы с Сайтектами немного разные миры, но все-таки.

Аватара пользователя

Serex

эксперт
эксперт
Сообщения: 1969
Зарегистрирован: 15 авг 2011, 21:36
Имя: Пупков Сергей Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 84 раза
Поблагодарили: 121 раз

Re: Контроллеры SCADAPack

Сообщение

Serex » 03 окт 2011, 22:02

А кто-нить эксплуатировал эти скадапаки при -40 ? ))
Это еще надо ведь оборудование подобрать под него, чтобы в таком же температурном диапазоне жило.
Проще подогревать немного шкаф, я так думаю. Да и кто станет обслуживать шкаф при -40? ))

Когда я их увидел, как-то с первого вида оттолкнули они меня. Детали, проводки наружу торчат. Весь дырявый. И как-то шина телевизорная I2C между модулями тоже насторожила. Среда программирования была весьма скромная, чуть ли не 16-цветная графика и еще там для разных скадапаков разные среды (версии ПО).

ru_rs

осмотрелся
осмотрелся
Сообщения: 142
Зарегистрирован: 22 янв 2010, 17:32
Имя: Sergey Yakushenko
Страна: RU
город/регион: Moscow

Re: Контроллеры SCADAPack

Сообщение

ru_rs » 05 окт 2011, 10:58

ситект — тоже хороший, хоть и много там остатков 90-х внутрях :)

Andrey 2014

осмотрелся
осмотрелся
Сообщения: 153
Зарегистрирован: 04 фев 2014, 14:52
Имя: Исаков Андрей Вячеславович
Благодарил (а): 2 раза

Re: Контроллеры SCADAPack

Сообщение

Andrey 2014 » 10 дек 2014, 12:25

У кого есть документация на русском по программированию этих контроллеров, а также, по написанию Си++блоков, поделитесь пожалуйста.

Владимир Кузнецов

не первый раз у нас
не первый раз у нас
Сообщения: 321
Зарегистрирован: 31 авг 2011, 22:14
Имя: Кузнецов Владимир Сергеевич
Страна: Россия
город/регион: Казань

Re: Контроллеры SCADAPack

Сообщение

Владимир Кузнецов » 10 дек 2014, 15:11

Andrey 2014 писал(а):У кого есть документация на русском по программированию этих контроллеров, а также, по написанию Си++блоков, поделитесь пожалуйста.

Сильно зависит от модели.

Владимир Кузнецов

не первый раз у нас
не первый раз у нас
Сообщения: 321
Зарегистрирован: 31 авг 2011, 22:14
Имя: Кузнецов Владимир Сергеевич
Страна: Россия
город/регион: Казань

Re: Контроллеры SCADAPack

Сообщение

Владимир Кузнецов » 11 дек 2014, 14:30

Andrey 2014 писал(а):А зачем эти Си++ блоки вообще нужны скадапаку? Это местная альтернатива IL и ST что ли?

Застали врасплох прям.
Я то грешным делом думал, что вы знаете зачем они вам, но постеснялся спросить.
Си-блоки нужны для реализации сложного и/или ресурсоемкого функционала (собственные протоколы обмена, тяжелые расчеты, …).
Суть в том, что Си-блок компилируется в родной для процессора машинный код, который потом вызывается через специальный интерфейс (который позволяет встраивать Си-блоки в обычную среду, как любой другой блок).
Поэтому код в Си-блоке может выполняться с максимально доступной эффективностью.
Так же данный подход позволяет с минимальными трудозатратами перенести старый (имеющийся) код (написанный на Си) в новый ПЛК.

Астафьев Илья

осмотрелся
осмотрелся
Сообщения: 114
Зарегистрирован: 24 июл 2008, 09:30
Имя: Астафьев Илья
Страна: Россия
город/регион: Москва

Re: Контроллеры SCADAPack

Сообщение

Астафьев Илья » 11 дек 2014, 16:55

Добрый день!
За документацией — туда же. Вот только мануал по программированию на С не переводили. А на «железяки» многое есть.

Про «дырявость» мне понравилось:) Но…всего лишь IP20, как и много у кого. Так что пугаться не стоит.
Цветность утилиты для программирования, думаю, не самый важный критерий. Гораздо более лично мне симпатично то, что ей все равно на какой Windows работать. Но на самом деле три способа программирования доступно: С, релейка или Изаграф.

Andrey 2014

осмотрелся
осмотрелся
Сообщения: 153
Зарегистрирован: 04 фев 2014, 14:52
Имя: Исаков Андрей Вячеславович
Благодарил (а): 2 раза

Re: Контроллеры SCADAPack

Сообщение

Andrey 2014 » 24 дек 2014, 11:31

Читаю мануал по С++ блокам:

The gnu C++ compiler is a command line compiler. To build the application:
Open a command prompt from a shortcut or use this procedure:
o Click Start > Run.
o In Open type cmd and click OK.
Switch to the folder containing the project.
o For example type cd c:projectssp350hello
Type make and press Enter
Make will compile the two cpp files, then link them into a single output file named
myApp.out. If errors occur, they will be displayed on the command line.

Что значит «Make will compile the two cpp files, then link them into a single output file named
myApp.out. If errors occur, they will be displayed on the command line.» ? Как скомпилировать то программу, чтобы получить на выходе .out файл, что в консоль забивать?

Andrey 2014

осмотрелся
осмотрелся
Сообщения: 153
Зарегистрирован: 04 фев 2014, 14:52
Имя: Исаков Андрей Вячеславович
Благодарил (а): 2 раза

Re: Контроллеры SCADAPack

Сообщение

Andrey 2014 » 24 дек 2014, 15:29

Так я вроде смотрел, прописал в консоли путь до g++ и через пробел путь к файлу main.cpp, консоль ругается, что нет файла ctools.h, хотя он в папке с main.cpp лежит. Куда этот файл нужно переложить?
Вот такой еще вопрос, в первом блоке из 1000 при вычитании 0 результат 999 это почему так?
ИзображениеИзображение

Andrey 2014

осмотрелся
осмотрелся
Сообщения: 153
Зарегистрирован: 04 фев 2014, 14:52
Имя: Исаков Андрей Вячеславович
Благодарил (а): 2 раза

Re: Контроллеры SCADAPack

Сообщение

Andrey 2014 » 27 дек 2014, 19:10

Если можно, скиньте кто-нибудь не скомпилированный сишный файл поглядеть, что-нибудь простое, типа, взять значение регистра 30001, пересчитать по формуле и записать в регистр 40001, мне посмотреть как это устроено.

Andrey 2014

осмотрелся
осмотрелся
Сообщения: 153
Зарегистрирован: 04 фев 2014, 14:52
Имя: Исаков Андрей Вячеславович
Благодарил (а): 2 раза

Re: Контроллеры SCADAPack

Сообщение

Andrey 2014 » 02 фев 2015, 14:57

Здравствуйте! Подскажите, как в Telepace studio назначить значение по умолчанию для какого-нибудь регистра (например уставки аналоговых сигналов)?

Вернуться в «ПЛК»


Перейти

  • Работа форума
  • База знаний (Knowledge Exchange)
  • ↳   Eplan Electric P8
  • ↳   Общий F.A.Q.
  • ↳   Общие вопросы
  • ↳   Новости
  • ↳   Ошибки
  • ↳   Проект
  • ↳   Изделия
  • ↳   Устройства
  • ↳   Соединения
  • ↳   Кабели
  • ↳   Клеммы
  • ↳   ПЛК
  • ↳   Компоновка 2D
  • ↳   Макросы
  • ↳   Eplan API
  • ↳   Сценарии (Только готовые решения)
  • ↳   Внешняя обработка
  • ↳   ProPanel
  • ↳   Инструкции ProPanel (Только готовые решения)
  • ↳   Прочие направления Eplan
  • ↳   FieldSys (Топология)
  • ↳   Preplanning
  • ↳   Harness proD
  • ↳   EEC One
  • ↳   Advantech
  • ↳   F.A.Q., Инструкции
  • ↳   Allen Bradley
  • ↳   Общие вопросы
  • ↳   ПЛК
  • ↳   Операторские панели
  • ↳   B&R Automation
  • ↳   F.A.Q.
  • ↳   Danfoss
  • ↳   DEIF A/S
  • ↳   Общие вопросы
  • ↳   UNI-LINE
  • ↳   MULTI-LINE
  • ↳   MULTI-LINE 300
  • ↳   Emerson
  • ↳   Общие вопросы
  • ↳   КИП и регуляторы
  • ↳   DeltaV
  • ↳   ОВЕН
  • ↳   Прософт-Системы
  • ↳   Общие вопросы
  • ↳   ПЛК REGUL
  • ↳   Schneider Electric
  • ↳   Общие вопросы
  • ↳   ПЛК
  • ↳   Панели оператора
  • ↳   SCADA
  • ↳   Электротехника
  • ↳   Приводная техника
  • ↳   SIEMENS
  • ↳   Общие вопросы
  • ↳   LOGO!
  • ↳   ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
  • ↳   Simatic Step7
  • ↳   Simatic TIA Portal
  • ↳   Simatic PCS 7
  • ↳   Операторские панели
  • ↳   WinCC
  • ↳   Приводная техника (Sinamics, Micromaster, Masterdrive, Simoreg, Simotics)
  • ↳   SmartGen
  • ↳   Общие вопросы
  • ↳   Промышленные (береговые) контроллеры
  • ↳   Морские контроллеры и устройства
  • ↳   WEINTEK (операторские панели)
  • ↳   F.A.Q., Инструкции
  • ↳   Архив
  • ↳   Микроконтроллеры и электроника
  • ↳   Arduino
  • ↳   Raspberry
  • ↳   Другие микроконтроллеры
  • ↳   Электроника
  • Общие вопросы АСУТП
  • ↳   Общие вопросы
  • ↳   Вопросы от студентов
  • ↳   Литература
  • ↳   Новости и отчётность
  • ↳   Нормативы, ГОСТы, стандарты
  • ↳   Информационная безопасность
  • ↳   Проектирование и САПР
  • ↳   Системная интеграция
  • ↳   Разбор полетов
  • ↳   Работа
  • ↳   Заготовки для базы знаний
  • ↳   Производство и технология
  • ↳   MES — Системы автоматизации управления производством
  • ↳   Метрология, КИП и датчики
  • ↳   Исполнительные устройства, регуляторы
  • ↳   Средний уровень автоматизации (управляющий)
  • ↳   Алгоритмы
  • ↳   Операторские панели
  • ↳   Верхний уровень автоматизации (отображение)
  • ↳   GE iFix
  • ↳   Wonderware Intouch
  • ↳   MasterScada
  • ↳   SCADA+
  • ↳   Альфа платформа
  • ↳   Интерфейсы, протоколы, связь
  • ↳   Радиосвязь
  • ↳   Полезное ПО
  • ↳   Электротехника, энергетика и электропривод
  • ↳   Генераторы, электростанции и силовые агрегаты
  • ↳   Теплотехника
  • ↳   Подбор аналогов
  • F.A.Q. (краткая выжимка из некоторых сообщений форума)
  • ↳   Документация (вариант 1)
  • ↳   Документация (вариант 2)
  • ↳   Электротехника и электроэнергетика
  • ↳   F.A.Q. по программируемым логическим контроллерам (PLC)
  • ↳   Обсуждение F.A.Q. по PLC
  • ↳   F.A.Q. по выбору PLC
  • ↳   F.A.Q. по аппаратной части PLC
  • ↳   F.A.Q. по языкам программирования
  • ↳   F.A.Q. по структуре программ
  • ↳   F.A.Q. по взаимодействию PLC с HMI
  • О жизни
  • ↳   Для дома, для семьи
  • ↳   Комната смеха
  • ↳   Электродвижение

Тут не сколько идет вопрос «нужна реализация» или «нельзя реализовать на других языках», тут скорее идет вопрос «на чем будет удобно».
Для тех же SCADAPack с прошивкой TelePACE выбор есть только из двух вариантов: LAD и С, а на LAD’е писать парсер пакетов от какой-нибудь диковинной железки или алгоритм расчета обводненности нефтегазовой смеси радости мало. При том что в нефтянке эти контроллеры используются очень широко и много где.
Из реальных примеров — исходный код «ОЗНА-Массомер» написан практически целиком на Си :)
Плюс у меня как-то давно была вполне конкретная задача переноса определенного функционала с мелкосерийного локально производимого устройства (на базе AVR-микроконтроллера) на ПЛК, т.к. заказчик не хотел использовать железки от мелких производителей — и вполне логично оказалось, что проще перенести уже существующий код на Си.

Понравилась статья? Поделить с друзьями:
  • Тромбоасс инструкция по применению для беременных
  • Аннотация леркамен 10 мг инструкция к применению
  • Смена военного руководства в россии
  • Синтомициновая эмульсия инструкция по применению цена отзывы аналоги
  • Сбербанк региональное руководство