CODESYS форум

Добро пожаловать на официальный форум CODESYS
Deutsche Version English version russian version 
Текущее время: Сб июн 24, 2017 1:21 pm

Часовой пояс: UTC+01:00




Начать новую тему  Ответить на тему  [ 5 сообщений ] 
Автор Сообщение
 Заголовок сообщения: C++ и МЭК
СообщениеДобавлено: Вт апр 27, 2010 7:42 am 
Не в сети

Зарегистрирован: Пн сен 03, 2007 10:44 am
Сообщения: 0
Я вот уже два года продуктивно работаю в сфере автоматизации промышленности (в частности химической) используя
аппаратные платформы, поддерживающие CoDeSys. В основном работаю с приборами ОВЕН.
Недавно, не имея пока конкретной цели, начал изучать C++. Понял, что решение сложных задач без ООП - дело неблагодарное.
Раннее изучал только Паскаль, поэтому опыта с С++ не имею. Можно ли, и если "Да", то как, привлечь С++ к программированию каких нибудь аппаратных платформ? Для каких целей вообще служит этот язык?

Буду очень благодарен ответу.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 27, 2010 8:01 am 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
С++ прекрасный сильнейший язык программирования. На нем можно запрограммировать любые задачи. Но, это компьютерный язык, а не язык спроектированный специально для ПЛК. Тут есть определенные особенности.

1) Для ПЛК важно иметь интегрированные отладочные средства,
заточенные под специфику автоматизации. Они должны позволять производить технологические операции с оборудованием. Например, при ремонте/наладке некой машины, техник/электрик/механик может машину остановить, вручную поуправлять выходами, проверить входы, зафиксировать выходы и т.п.
В CoDeSys это делается элементарно. Никаких программ писать не нужно вообще. Ни в одной среде С++ этого нет и близко. Там для элементарного задания нескольких последовательных наборов значений выходов, технику надо звать программиста и тратить время на программу.

2) Для ПЛК практически наплевать на эффективность кода, размер программы, экономию памяти, без которых не обойтись, например в базах данных, играх, при запуске непредсказуемо разных приложений пользователя и др. и пр.
Для ПЛК генератор кода должен давать простой дубово-надежный машинный код. Огромные массивы данных тут гонять не нужно. Рядом с ПЛК нет человека-контролера, который бы его перезагрузил при зависании. Да и сам подобный факт может быть фатальным. Поэтому из языков ПЛК намеренно выброшены все потенциально опасные штуки, типа new. В мире широко известны
несколько громких аварий по причине примитивных программных ошибок в Си. В МЭК подобные ошибки сделать просто нельзя.

3) ПЛК всегда работает в реальном времени. В МЭК системы встроены свои переносимые средства многозадачности, обеспечения времени цикла, вызова задач по фронтам и т.п. Программисту МЭК нет дела какая ОС сидит внутри ПЛК. Изучать ее функции не надою. В С++ без этого никуда. Своих подобных средств в нем нет, он опирается на ОС. Ее надо изучать.
Ее качество влияет на программу непосредственно. Перенос программы из одной ОС в другую (если сразу не приняты специальные меры) представляет сложность.

4) Языки МЭК значительно проще в освоении. Это не декларация, а факт. Мы не раз сталкивались с обучением техников/наладчиков на заводах. Максимум полдня и электрик уже может выполнить минимально необходимые ему действия сам. Шансов его обучить С++ за полдня ноль. С++ язык для программистов профи. Он позволяет залезать на низкий
уровень и эффективно программировать на уровне железа. Ест-но такие программы требуют знаний, тестирования, по специальным методикам и пр.

5) Часто для некоего электронного устройства 1 программист пишет все от формирования времянок микросхем, до прикладных вещей на С++. Программа выглядит одним большим винегретом. Никто, кроме автора в этом разобраться не может. Он незаменим и обязан сопровождать свою программу, даже если это ему совсем уже не хочется. Руководитель не может отдать это сопровождение молодому специалисту, а этого квалифицированного человека перевести на более выгодную работу. Ни в от отпуск, никуда... У нас это классическая судьба С++ программиста.

Теперь делим софт на системный уровень и прикладной. Между ними простой, четко описанный интерфейс. Это переменные ввода/вывода и системные биб-ки. Системный софт четко разграничен и понятен. Его может писать любой программист, даже наемный. Его легко заменить. Аналогично с прикладным.
Это широко известная старая концепция разделяй и властвуй, но верная и ныне. Подробнее тут.

Для системного уровня С++ прекрасно подходит. Для прикладных задач МЭК языки прекрасно подходят.

Короче говоря, я не в восторге от предложений внести С++ в состав языков МЭК. Такие попытки существуют. Но, это простейшее, что приходит в голову и продиктовано маркетинговым популизмом.
Идеально объединить эти 2 мира. Взять лучшее из языков ООП и ввести в языки МЭК. Собственно это и сделано CoDeSys V3.
См. тут.

Приезжайте к нам на конференцию по CoDeSys в мае. Обсудим этот вопрос и еще многие другие. Подробнее тут.
До встречи!


Вернуться к началу
 Заголовок сообщения: Re: C++ и МЭК
СообщениеДобавлено: Ср янв 26, 2011 9:18 am 
Не в сети

Зарегистрирован: Ср янв 26, 2011 8:16 am
Сообщения: 0
В данном контексте интересует, позволяет ли CoDeSys встраивать в программу блоки написанные на Си?
Например имеем объёмный сложный код, уже реализованный на Си, который необходимо выполнять на контроллере с CoDeSys.
Си-код является черным ящиком с входами и выходами.
Код можно скомпилировать под целевую платформу.
Быстродействие критично.


Вернуться к началу
 Заголовок сообщения: Re: C++ и МЭК
СообщениеДобавлено: Пт янв 28, 2011 9:36 am 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
Позволяет. См. Внешние библиотеки.

Однако: Штука аппаратно зависимая. Единого документа тут быть не может. Способы линковки ОЧЕНЬ разные для разных процессоров и ОС. На некоторых (PC) достаточно положить DLL в рабочую папку, на других нужно вписывать интерфейс в рантайм и линковать все статически. Кроме того, надо знать распределение памяти и др. и пр. Нужно быть либо изготовителем ПЛК, либо плотно с ним взаимодействовать.

Если переписать на ST, то проблем быть не должно. В том числе с быстродействием. CoDeSys – это компилятор.


Вернуться к началу
 Заголовок сообщения: Re: C++ и МЭК
СообщениеДобавлено: Пн ноя 07, 2016 11:21 am 
Не в сети

Зарегистрирован: Пт окт 28, 2016 12:42 pm
Сообщения: 2
Igor Petrov писал(а):
На некоторых (PC) достаточно положить DLL в рабочую папку


Расскажите этот момент попопдробнее, пожалуйста.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 5 сообщений ] 

Часовой пояс: UTC+01:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB