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

Ошибка Weintek снхронность/асинхронность

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

Ответить

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

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

1. Установлен (сброшен, переключен ...) бит
2. Выполнен макрос

Однако исполнение макроса и установка бита идут одновременно "на-перегонки" как две параллельные задачи.
При использовании симулятора с "медленным CPU" проблема может не проявляться - у CPU не хватает скорости, чтобы выполнить макрос раньше присвоения бита.
То же самое относится к панели c "ненулевой" загрузкой CPU (чем выше производительность панели, тем больше проявляется проблема).

Для временного лечения проблемы можно использовать например 2 способа:

1) Нагружение CPU фоновыми задачами (гистограммами, графиками, сбором данных, триггерами, макросами , передачей данных и др.).
Этот путь плохой, тк
- глобальные объекты типа триггеров и сбора данных загружают все используемые окна и тормозять работу
- локальные объекты типа гистограмм относятся только к активному окну
2) Задержку начала выполнения макроса добавкой delay() в его начало. Тоже не всегда приемлемо и удобно.

Проект для оценки проблемы выкладываю, см файл

PS: Хотелось бы от Weintek установки асинхронного прорядка выполнения указанных выше процедур: сначала присвоение бита, и только по завершении исполнение макроса.
PPS: В примере описан случай с локальным битом, а с сетевым в случае ошибок или таймаутов будет сложнее.
Weintek ERROR.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

Если у кого есть соображения как корректно обойти ошибку *) без использования задержки delay() макроса , прошу посоветовать

*) макрос по битовой кнопке исполняется раньше установки бита и это еще зависит от загрузки CPU

Был совет с форума использовать условие выполнения макроса , а вернее запрета на выполнение, но оно увы проблеме не поможет (см рис)
Смысл в том, что макрос по идее должен исполняться только ПОСЛЕ того как будет установлен нужный бит в ON.
image001.png
PS: Так можно добавить вложения в сообщение, например отредактированный проект. ZIP
Добавить вложения в сообщение.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

Исследовал проблему дополнительно, бит может установиться даже в середине исполненния макроса,
когда часть веток с условием по нему уже отработана и это очень печально.

Прошу дистрибюьоров сообщить в Weintek и будем ждать исправления.

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

Вопрос к уважаемым дилерам и дистрибюторам продукции Weintek:

Cможете ли сообщить в Weintek об этой ошибке, достаточно ли информации предоставленной в демо-примере asutpforum.ru/download/file.php?id=2933 в первом сообщении темы ?
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: Ошибка Weintek снхронность/асинхронность

Сообщение skr »

В документации не указано, в какой последовательности должны устанавливаться бит и вызываться макрос. И наверняка эти действия выполняются "одновременно" в той степени, в какой это возможно в многозадачных операционных системах.
Установка одного и того же регистра в разные значения в данном случае - явное противоречие.
Перепроверьте вариант с запуском макроса по триггеру, возможно, вы что-то пропустили.

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

skr писал(а):В документации не указано, в какой последовательности должны устанавливаться бит и вызываться макрос. И наверняка эти действия выполняются "одновременно" в той степени, в какой это возможно в многозадачных операционных системах.
Установка одного и того же регистра в разные значения в данном случае - явное противоречие.
Перепроверьте вариант с запуском макроса по триггеру, возможно, вы что-то пропустили.
Не указано, но "ложка дорога к обеду". И как я писал в первом посте темы - логично ожидать, что вызывая битовой кнопкой макрос и устанавливая бит, макрос получит этот установленный бит.

У weintek с синхронностью-асинхронностью вызова макроса неопределенность, зависящая в том числе от загруженности процессора панели.
Запуск макроса по триггеру не требуется, тк это обработка действия оператора, а не программы панели.
Установка одного и того же регистра в разные значения в данном случае - явное противоречие.

это не имеет отношения к текущему случаю ?
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: Ошибка Weintek снхронность/асинхронность

Сообщение skr »

Chenchukov писал(а):
skr писал(а):В документации не указано, в какой последовательности должны устанавливаться бит и вызываться макрос. И наверняка эти действия выполняются "одновременно" в той степени, в какой это возможно в многозадачных операционных системах.
Установка одного и того же регистра в разные значения в данном случае - явное противоречие.
Перепроверьте вариант с запуском макроса по триггеру, возможно, вы что-то пропустили.
Не указано, но "ложка дорога к обеду". И как я писал в первом посте темы - логично ожидать, что вызывая битовой кнопкой макрос и устанавливая бит, макрос получит этот установленный бит.
Настолько же, насколько логично, что значение будет установлено после выполнения всех действий.
Chenchukov писал(а):У weintek с синхронностью-асинхронностью вызова макроса неопределенность, зависящая в том числе от загруженности процессора панели.
Запуск макроса по триггеру не требуется, тк это обработка действия оператора, а не программы панели.
Кнопка устанавливает бит, срабатывает триггер и вызывает макрос. Действия оператора обработаны, что не так?

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

skr писал(а): 1. Настолько же, насколько логично, что значение будет установлено после выполнения всех действий.
2. Кнопка устанавливает бит, срабатывает триггер и вызывает макрос. Действия оператора обработаны, что не так?

1. Неудобно это. Бит может быть установлен до исполнения макроса, во время исполнения макроса или после в зависимости от загруженности процессора и многозадачной операционной системы.

2. Хотел сдалать через кнопка-триггер и макрос по этому триггеру, но неоднократно сталкивался с тем, что при определенной загрузке процессора панель иногда пропускает триггерные макросы. Постараюсь выложить пример не позже вторника
Аватара пользователя

Looker
эксперт
эксперт
Сообщения: 1105
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 255 раз
Поблагодарили: 184 раза

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Looker »

Chenchukov писал(а):При вызове макроса внутри битовой кнопки вполне резонно ожидать, что порядок действий будет таким:
1. Установлен (сброшен, переключен ...) бит
2. Выполнен макрос
Поделись подробными желаниями, что нужно получить, например:
1. Оператор нажал кнопку.
2. В контроллер пошел бит...
3. Ждем: из контроллера - бит установлен.
4. Выполняем макрос.
5. Макрос выполнен.
6. Сбрасываем бит в контроллере.
7. Ждем: из контроллера - бит сброшен.
...
Может что нибудь подскажу.

Weintek не знаю, но могу сказать что у Rockwell (что панели, что SCADA) стоит ожидать:
1. Установили бит - бит установлен в памяти панели (SCADA) и ждет очереди на передачу в контроллер.
2. Проверяем этот же бит - состояние будет не то куда мы его установили, а то которое было прочитано из контроллера в последний раз.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

Looker писал(а): Поделись подробными желаниями, что нужно получить, например:
1. Оператор нажал кнопку.
2. В контроллер пошел бит...
3. Ждем: из контроллера - бит установлен.
4. Выполняем макрос.
5. Макрос выполнен.
6. Сбрасываем бит в контроллере.
7. Ждем: из контроллера - бит сброшен.
...
Может что нибудь подскажу.

Weintek не знаю, но могу сказать что у Rockwell (что панели, что SCADA) стоит ожидать:
1. Установили бит - бит установлен в памяти панели (SCADA) и ждет очереди на передачу в контроллер.
2. Проверяем этот же бит - состояние будет не то куда мы его установили, а то которое было прочитано из контроллера в последний раз.
операции осуществляются с локальными адресам в панели

1. Оператор нажал кнопку
2А. Установить бит (или слово)
2Б. Вызвать макрос, который анализирует установленные биты (слова)

проблема в том, что 2А и 2Б запускаются параллельно в многозадачном режиме, а не 2Б по завершении 2А.
как уже писал, при околнулевой загрузке процессора макрос иполняется до изменения бита ...
Аватара пользователя

Looker
эксперт
эксперт
Сообщения: 1105
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 255 раз
Поблагодарили: 184 раза

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Looker »

Chenchukov писал(а):операции осуществляются с локальными адресам в панели

1. Оператор нажал кнопку
2А. Установить бит (или слово)
2Б. Вызвать макрос, который анализирует установленные биты (слова)

проблема в том, что 2А и 2Б запускаются параллельно в многозадачном режиме, а не 2Б по завершении 2А.
как уже писал, при околнулевой загрузке процессора макрос иполняется до изменения бита ...
Неужели в макросе (2Б) первым действием нельзя установить бит (2А)?
Ценность установки этого бита? Он на что-то влияет?

"1. Оператор нажал кнопку." Есть ли действия по отпусканию?

Подумай - кнопка как конечный автомат с четырьмя состояниями:
1. Нажатие.
2. Удержание.
3. Отпускание.
4. Исходное состояние.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

Looker писал(а): Неужели в макросе (2Б) первым действием нельзя установить бит (2А)?
Ценность установки этого бита? Он на что-то влияет?
в макросе как обычно можно установить, но это не нужно
обсуждали битовую кнопку, которая
1. установливает нужный бит
2. вызывает макрос, который определяет какой из битов был установлен

PS: вы читаете личные сообщения?
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: Ошибка Weintek снхронность/асинхронность

Сообщение skr »

Chenchukov писал(а):
skr писал(а): 1. Настолько же, насколько логично, что значение будет установлено после выполнения всех действий.
2. Кнопка устанавливает бит, срабатывает триггер и вызывает макрос. Действия оператора обработаны, что не так?

1. Неудобно это. Бит может быть установлен до исполнения макроса, во время исполнения макроса или после в зависимости от загруженности процессора и многозадачной операционной системы.

2. Хотел сдалать через кнопка-триггер и макрос по этому триггеру, но неоднократно сталкивался с тем, что при определенной загрузке процессора панель иногда пропускает триггерные макросы. Постараюсь выложить пример не позже вторника
Попробуйте режим триггера "всегда активно если ON"

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

skr писал(а):
Chenchukov писал(а):Попробуйте режим триггера "всегда активно если ON"
В таком режиме теряется изначальный смысл - обработка нажатия клавиши оператором.
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: Ошибка Weintek снхронность/асинхронность

Сообщение skr »

Нет, не теряется. Бит-то устанавливается оператором, а сбрасывается макросом.

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

skr писал(а):Нет, не теряется. Бит-то устанавливается оператором, а сбрасывается макросом.
возможно я недопонял Вас

я обсуждал: (установить бит нажатием кнопки) - > (отработает триггер по переднему фронту)-> (триггер однократно вызовет макрос)-> (макрос однократно отработает процедуру и сбросит бит)

Ваше предложение: изменить режим вызова макроса на "выполнять всегда, пока бит включен".

Это гарантирует выполнение, но увы нельзя исключить повторный вход в макрос и это может выглядеть как дребезг кнопки (многократное отрабатывание одного нажатия)
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: Ошибка Weintek снхронность/асинхронность

Сообщение skr »

Не могу представить, как триггер "всегда активно если ON" сработает повторно без повторной установки бита (при условии сброса бита в макросе)

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

skr писал(а):Не могу представить, как триггер "всегда активно если ON" сработает повторно без повторной установки бита (при условии сброса бита в макросе)
Даже если сбрасывать в первой строчке макроса, пока дойдет время до сброса (ОС многопользовательская, приоритеты выполнения процессов возможно меняются динамически, панель может быть занята другими макросами, вводом-выводом экрана, сетевым обменом, записью на внешний носитель и др) может еще раз войти в макрос.
Я моделировал такую ситуацию на симуляторе и двух моделях панелей.

см л/c

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

исправление:
... пока дойдет время до сброса бита ...
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: Ошибка Weintek снхронность/асинхронность

Сообщение skr »

Мне так экстремально нагружать панель(симулятор) не приходилось, так что хочется больше примеров.

Автор темы
Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: Ошибка Weintek снхронность/асинхронность

Сообщение Chenchukov »

skr писал(а):Мне так экстремально нагружать панель(симулятор) не приходилось, так что хочется больше примеров.
Немного разгребу текущие дела и напишу примеры повторного входа.
Ответить

Вернуться в «WEINTEK (операторские панели)»