Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Многозадачность и языки МЭК

 Ответить Ответить Страница  <1 345
Автор
Сообщение
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Многозадачность и языки МЭК
    Опубликовано: 15 Май 2007 07:14

ИМХО Гораздо проще запомнить пару десятков слов на английском, чем париться потом с переводом ошибок компилятора, это в любом языке так, просматривая сообщения ориентируешься по номерам и зачастую просто по общему виду знакомых сообщений. Перевод только в данном случае как костыль здоровой ноге. Будет в конечном итоге кому то от этого хорошо или нет, не знаю, но сильно сомневаюсь. ИМХО во всем нужен разумный баланс. Я не призываю никого читать Шекспира в оригинале, но и мозг напрягать не вредно.

Наверх
lolik Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 22 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - lolik Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Май 2007 09:54

Первоначально опубликовано _IP_

Может быть, кроме интерактивного хелпа стоит еще  перевести сообщения об ошибках и предупреждения компилятора?

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

Не волшебник, я только учусь...
Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Май 2007 14:37
Первоначально опубликовано lolik

...надо оставить сообщения на англ., а приложения перевести...

Это уже сделано. Если стать на сообщение и нажать F1, то открывается соответствующее окно справки на русском.

Igor Petrov
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Май 2007 07:57
Первоначально опубликовано _IP_

'Классические' программы для ПЛК пишутся в виде одной циклической задачи. Чтение входов, обработка (прикладная программа), запись выходов.
Но во многих современных средах МЭК 61131-3 программирования можно делать несколько циклических задач. Некоторые называют это вредным и опасным, другие напротив считают очень удобным.
Имеет ли кто-либо позитивный опыт написания таких программ? Поделитесь опытом. До каких пор это хорошо и где лежит порог за которым нужно использовать более радикальные средства (например QNX)?


На практике использовали более 800 "параллельных задач". В языке Рефлекс (также известен как Си с процессами) подход к программированию управляющего алгоритма основан на параллелизме. Управляющая программа описывается в виде множества процессов, а каждый процесс параллелен, вернее, независим, т.к. процессор-то все-таки один.

Порога не обнаружено. Низкие накладные, надежность, обозримость программы сохраняются.

Уверен, можно и десятками тысяч параллельные процессы плодить, но есть ли такие задачи - вопрос.
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Май 2007 19:13

Если бы отдельные процессы работали изолированно друг от друга, не общаясь между собой, то выполнение нескольких задач практически не отличалось бы от выполнения одной.
Узкое место многозадачности заключается именно в обмене данными между задачами. Значит решение вопроса многозадачности сводится к решению вопроса о межзадачном обмене данными.
Яркий пример многозадачности - Windows. Но в нем доступ разных потоков к общим данным считается ненормальным явлением, противоречащим основной идеологии Изоляция (инкапсуляция) задач в  Windows  как-раз считается достижением, и поэтому общие данные передаются обходными путями - через файлы и их проекции в памяти, буфер обмена, внутренние сокеты, каналы и пр. Еще больше дело осложняется асинхронным режимом обмена - то-есть в произвольный непредсказуемый момент. В связи с этим были созданы средства синхронизации, предотвращающие конфликты при одновременном доступе - критические секции, семафоры, мютексы.

В контроллерах ситуация противоположная. Здесь основной режим работы - это интенсивный обмен между задачами. Но дело значительно упрощается за счет специфики работы программ.
1: Сосредоточенный ввод/вывод, то-есть чтение и запись входов и выходов в отдельно выделенных шагах позволяет точно определить момент обмена данными. Сосредоточенный в/в сам-собой уже решает часть проблемы.
2: Синхронный режим жесткого реального времени. В отличии от Windows момент обмена ожидаем, и все задачи обращаются к данным поочередно.
Так-как задачи имеют разный период цикла, то запрос данных все-же может происходить в произвольное время, но разрешить этот момент можно гораздо более простыми средствами нежели в Windows. Например использовать флаги, или подумать еще что-нибудь.
Главное, что предпосылки для многозадачности в контроллерах благоприятные.

С уважением, SAN

Наверх
 Ответить Ответить Страница  <1 345

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz