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

Ошибка 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
Сообщения: 205
Зарегистрирован: 22 мар 2013, 10:52
Ф.И.О.: Денис Порфирьев
Откуда: Санкт-Петербург
Поблагодарили: 4 раза
Контактная информация:

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

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

В документации не указано, в какой последовательности должны устанавливаться бит и вызываться макрос. И наверняка эти действия выполняются "одновременно" в той степени, в какой это возможно в многозадачных операционных системах.
Установка одного и того же регистра в разные значения в данном случае - явное противоречие.
Перепроверьте вариант с запуском макроса по триггеру, возможно, вы что-то пропустили.
"ФАМ-Электрик" - официальный дистрибьютор Weintek в России http://www.rusavtomatika.com


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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

Кнопка устанавливает бит, срабатывает триггер и вызывает макрос. Действия оператора обработаны, что не так?
"ФАМ-Электрик" - официальный дистрибьютор Weintek в России http://www.rusavtomatika.com


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

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

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

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



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

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

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

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

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
осмотрелся
осмотрелся
Сообщения: 192
Зарегистрирован: 09 фев 2011, 11:32
Ф.И.О.: Дитрих Евгений
Откуда: Донецк
Благодарил (а): 22 раза
Поблагодарили: 6 раз

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
Сообщения: 205
Зарегистрирован: 22 мар 2013, 10:52
Ф.И.О.: Денис Порфирьев
Откуда: Санкт-Петербург
Поблагодарили: 4 раза
Контактная информация:

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

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

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



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

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

Попробуйте режим триггера "всегда активно если ON"
"ФАМ-Электрик" - официальный дистрибьютор Weintek в России http://www.rusavtomatika.com


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

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

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

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

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

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

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

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

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

Нет, не теряется. Бит-то устанавливается оператором, а сбрасывается макросом.
"ФАМ-Электрик" - официальный дистрибьютор Weintek в России http://www.rusavtomatika.com


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

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

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

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


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

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

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

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

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

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

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

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

Не могу представить, как триггер "всегда активно если ON" сработает повторно без повторной установки бита (при условии сброса бита в макросе)
"ФАМ-Электрик" - официальный дистрибьютор Weintek в России http://www.rusavtomatika.com


Автор темы
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
Сообщения: 205
Зарегистрирован: 22 мар 2013, 10:52
Ф.И.О.: Денис Порфирьев
Откуда: Санкт-Петербург
Поблагодарили: 4 раза
Контактная информация:

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

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

Мне так экстремально нагружать панель(симулятор) не приходилось, так что хочется больше примеров.
"ФАМ-Электрик" - официальный дистрибьютор Weintek в России http://www.rusavtomatika.com


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

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

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

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


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


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



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

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