Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Общие вопросы / Common questions » Конфликт

   
Автор / Author Тема / Topic: Конфликт
Petrix
Junior Member / Новичок
Участник № / Member № 3662


Icon 1 отправлено / posted      Профиль для / Profile for Petrix           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
2 программы запивывают в INPUT одного канала. Одна программа-счетчик работает с циклом пересчета CALC, а вторая (устанавливает начальное значение) запускается нажатием кнопки.
При нажатии кнопки реальное значение не всегда правильно устанавливается, обычно надо нажать кнопку 2-3 раза.
Подумал про переписывание значения другой программой. На время установки отключаю программу-счетчик, но этот финт не помогает. При включении канала его значение опять переписывается программой счетчиком.
Подскажите как правильно реализовать установку значения.

Сообщения / Posts 26 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Нельзя от двух независимых источников передавать значение в один канал. Конфликты неминуемы.
Это не особенности Trace Mode 6, это алгоритмический нонсенс для любой прикладной программы.
Должен быть программный арбитр, который отдает приоритет, например, экранной посылке перед программным счетчиком.
Алгоритм функционирования арбитра определяется постановкой прикладной задачи.

Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Petrix
Junior Member / Новичок
Участник № / Member № 3662


Icon 1 отправлено / posted      Профиль для / Profile for Petrix           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. Источники не независимы. Программа-счетчик берет реальное значение канала, увеличивает его допустим на 1 и записывает во входное значение. Другая программа должна установить начальное значение.

2. Мной полагалось, что отключение пересчета канала избавит от конфликта. Но этого не произошло.
Канал программы-счетчика отключается, потом устанавливаем новое значение. То, что значение установилось видно на ГЭ привязанном к реальному значению канала. Но после пуска счетчик не получает нового значения, а продолжает увеличивать значение до установки. Я понимаю, что вы можете кэшировать значения, но при отключении канала кэш должен сбрасываться.

Сообщения / Posts 26 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Пришлите, пожалуйста, тестовый пример проекта, реализующий этот конфликт.
Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Согласно стандарта IEC 61131-3 в языке FBD есть следующие соглашения:
- выход любого функционального блока является статической переменной и сохраняет свое значение между вызовами программы,
- вход RUN функционального блока управляет только собственной функцией блока. Если RUN<>0, то блок не пересчитывается и значение его выхода остается тем же, которое было по завершении предыдущего вызова программы,
- значение выхода функционального блока, привязанного к аргументу программы, всегда передается в аргумент по завершении программы.

Этим объясняется полученный Вами эффект.

Посылаю Вам пример с двумя программами - на языках FBD и ST, каждая из которых позволяет решить Вашу задачу.

Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Petrix
Junior Member / Новичок
Участник № / Member № 3662


Icon 1 отправлено / posted      Профиль для / Profile for Petrix           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за корректировку. Буду осторожнее с FBD
Сообщения / Posts 26 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2