CODESYS форум

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

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




Начать новую тему  Ответить на тему  [ 4 сообщения ] 
Автор Сообщение
 Заголовок сообщения: Связь между Wago 750-880 и 750-352 по Ethernet
СообщениеДобавлено: Пн окт 26, 2015 8:10 am 
Не в сети

Зарегистрирован: Ср окт 14, 2015 6:39 am
Сообщения: 2
Здравствуйте коллеги.

Возникла необходимость связать Wago 750-880 и 750-352 по Ethernet.

Конфигурация узлов сети: [750-880]+[750-459]+[750-451]+[750-450]+[750-1505]+[750-600]--------Ethernet-------[750-352]+[750-602]+[750-638]+[750-600]

С помощью Модбас-конфигуратора в проекте CoDeSys я прописал каплер, назначил ему IP-адрес, протокол UDP, сконфигурировал модуль 750-638. После сохранения конфигурации сети в конфигурации задач возникла задача с именем MB_ETH_MASTER_TASK. В этой задаче отсутствует вызов программ. Кроме того, в дереве POU возникла программа с именем MBCFG_ModbusSlave. В описании Модбас-конфигуратора сказано, что эту программу можно использовать в PLC_PRG как функциональный блок, что я и сделал. Далее я (видимо от большого ума) вставил в задачу MB_ETH_MASTER_TASK вызов программы MBCFG_ModbusSlave. После всех этих манипуляций оказалось, что контроллер 750-880 некоторое время работает, а потом зависает. Изменения таймаутов и watchdog'ов результата не дали.

После этого я удалил из задачи MB_ETH_MASTER_TASK вызов программы MBCFG_ModbusSlave, а потом и саму задачу MB_ETH_MASTER_TASK. Зависания прекратились, но вопросы остались.
  • Зачем генерируется задача MB_ETH_MASTER_TASK, если, как показывает практика, без нее система работает устойчивее?
  • Правильно ли использовать программу MBCFG_ModbusSlave только как функциональный блок в PLC_PRG, или же программу MBCFG_ModbusSlave нужно вызывать из какой-либо задачи?


Вернуться к началу
СообщениеДобавлено: Пт окт 30, 2015 9:23 am 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
mik62 писал(а):
Зачем генерируется задача MB_ETH_MASTER_TASK, если, как показывает практика, без нее система работает устойчивее?
Чтобы программист не забыл в этом месте подумать: не стоит ли переделать мне свое приложение в многозадачное?

mik62 писал(а):
Правильно ли использовать программу MBCFG_ModbusSlave только как функциональный блок в PLC_PRG, или же программу MBCFG_ModbusSlave нужно вызывать из какой-либо задачи?

Вызов экземпляра ФБ ничем не отличается от вызова программы. Можете писать свое приложение создавая POU типа ФБ или типа ПРОГРАММА. Отличие только в том, что программа не имеет экземпляров.

У Вас в этом вопросе получаются варианты:
1 Вызов программы MBCFG_ModbusSlave из программы PLC_PRG, которая в свою очередь, вызывается из главной задачи.

2 Вызов MBCFG_ModbusSlave из собственной задачи.

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

Вариант 2 несколько сложнее, но более универсален. Если решили делать
свое приложение многозадачным, то эту тему нужно внимательно изучить
(и не забыть создать явно главную задачу для PLC_PRG).

Если поставить вызов одной коммуникационной программы в 2 задачи сразу
(вариант 1 + 2) , то будет Хэллоуин каждый день :roll:


Вернуться к началу
СообщениеДобавлено: Пн ноя 02, 2015 10:19 am 
Не в сети

Зарегистрирован: Ср окт 14, 2015 6:39 am
Сообщения: 2
Igor Petrov писал(а):
Если поставить вызов одной коммуникационной программы в 2 задачи сразу
(вариант 1 + 2) , то будет Хэллоуин каждый день :roll:

Вот! Именно так я и сделал (вариант 1 +2) вначале из-за недопонимания сути процесса. Потом интуитивно пришел к варианту 1. А по сути - в программе пока оставлю вариант 1, хотя подумаю и над вариантом 2.
Кстати, где-то в явном виде указано, что нельзя вставлять вызов одной коммуникационной программы в две задачи сразу? Или же неявно подразумевается, что никто в здравом уме не будет вызывать одну и ту же программу в двух разных задачах?


Вернуться к началу
СообщениеДобавлено: Вт ноя 03, 2015 12:06 pm 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
mik62 писал(а):
Кстати, где-то в явном виде указано, что нельзя вставлять вызов одной коммуникационной программы в две задачи сразу?
Один туфель на две ноги? Можно. См. 'мьютекс'.


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

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


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

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


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

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