-----
18.11.2017 форум перенесён на другой хостинг. О замеченых глюках просьба сообщать администраторам.
-----
На форуме обязательно:
  1. Заполнить свой профиль на Русском языке. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.
Рекламу на своём форуме мы не размещаем ни на каких условиях.

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

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


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

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

Сообщение Chenchukov » 21 май 2014, 08:20

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

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

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

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

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

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

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

Weintek ERROR.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.


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

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

Сообщение Chenchukov » 21 май 2014, 10:59

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

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

Был совет с форума использовать условие выполнения макроса , а вернее запрета на выполнение, но оно увы проблеме не поможет (см рис)

Смысл в том, что макрос по идее должен исполняться только ПОСЛЕ того как будет установлен нужный бит в ON.


image001.png


PS: Так можно добавить вложения в сообщение, например отредактированный проект. ZIP

Добавить вложения в сообщение.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.


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

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

Сообщение Chenchukov » 21 май 2014, 11:38

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

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


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

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

Сообщение Chenchukov » 22 май 2014, 06:38

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

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

Аватара пользователя

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

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

Сообщение skr » 22 май 2014, 10:45

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


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

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

Сообщение Chenchukov » 22 май 2014, 10:53

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


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

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

Установка одного и того же регистра в разные значения в данном случае - явное противоречие.

это не имеет отношения к текущему случаю ?

Аватара пользователя

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

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

Сообщение skr » 22 май 2014, 10:57

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


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

Настолько же, насколько логично, что значение будет установлено после выполнения всех действий.

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

Кнопка устанавливает бит, срабатывает триггер и вызывает макрос. Действия оператора обработаны, что не так?


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

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

Сообщение Chenchukov » 22 май 2014, 11:34

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



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

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

Аватара пользователя

Looker
освоился
освоился
Сообщения: 292
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений
Откуда: Донецк
Благодарил (а): 45 раз
Поблагодарили: 18 раз

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

Сообщение Looker » 23 май 2014, 16:03

Chenchukov писал(а):При вызове макроса внутри битовой кнопки вполне резонно ожидать, что порядок действий будет таким:
1. Установлен (сброшен, переключен ...) бит
2. Выполнен макрос

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

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


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

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

Сообщение Chenchukov » 23 май 2014, 16:24

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

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


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

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

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

Аватара пользователя

Looker
освоился
освоился
Сообщения: 292
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений
Откуда: Донецк
Благодарил (а): 45 раз
Поблагодарили: 18 раз

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

Сообщение Looker » 23 май 2014, 17:12

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

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

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

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

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

Подумай - кнопка как конечный автомат с четырьмя состояниями:
1. Нажатие.
2. Удержание.
3. Отпускание.
4. Исходное состояние.


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

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

Сообщение Chenchukov » 23 май 2014, 17:40

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


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

PS: вы читаете личные сообщения?

Аватара пользователя

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

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

Сообщение skr » 26 май 2014, 10:23

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



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

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

Попробуйте режим триггера "всегда активно если ON"


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

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

Сообщение Chenchukov » 26 май 2014, 11:01

skr писал(а):
Chenchukov писал(а):Попробуйте режим триггера "всегда активно если ON"

В таком режиме теряется изначальный смысл - обработка нажатия клавиши оператором.

Аватара пользователя

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

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

Сообщение skr » 26 май 2014, 11:03

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


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

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

Сообщение Chenchukov » 26 май 2014, 11:30

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


возможно я недопонял Вас

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

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

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

Аватара пользователя

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

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

Сообщение skr » 26 май 2014, 12:01

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


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

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

Сообщение Chenchukov » 26 май 2014, 12:31

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


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

см л/c


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

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

Сообщение Chenchukov » 26 май 2014, 12:32

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

Аватара пользователя

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

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

Сообщение skr » 26 май 2014, 13:09

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


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

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

Сообщение Chenchukov » 26 май 2014, 13:40

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


Немного разгребу текущие дела и напишу примеры повторного входа.