Коллеги, подскажите, как одним махом обнулить 5000 PFW регистров ?
В PFW сохраняется протокол работы, нужен механизм его очистки.
Ну и попутно, есть способ для таблицы данных организовать прокрутку ?
Спасибо.
Коллеги, подскажите, как одним махом обнулить 5000 PFW регистров ?
В PFW сохраняется протокол работы, нужен механизм его очистки.
Ну и попутно, есть способ для таблицы данных организовать прокрутку ?
Спасибо.
А что стандартные кнопки для прокрутки не подходят?
Захват-22.png
Зачем обнулять регистры не понятно. Обычно если в таблице используется циклический буфер,
то достаточно адреса головы и хвоста буфера установить в начальное положение и таблица "очищается"
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Спасибо за ответ,
стандартные кнопки возможно подходят, только я о них не знал![]()
Спасибо, попробую.
По регистрам.
Может я вообще не правильно организовал весь механизм, тогда поправьте.
По окончанию одного цикла работы, в область PFW, со смещением согласно текущему индексу,
копируется блок данных - название рецепта и фактические результаты работы. После чего индекс инкрементируется.
К этой же области PFW привязана таблица данных на 100 записей, видимых-20, для отображения результатов. Впоследствии планирую ее экспорт в CSV.
По отдельной кнопке предполагаю очистку этой области.
Не совсем понимаю, где достаточно установить адреса головы и хвоста, чтобы таблица на экране очистилась и в CSV не записались старые значения.
upd: может стандартная кнопка с действием "удалить содержимое" поможет ? Или она на одну запись работает ?
Проверить пока нет возможности.
Последний раз редактировалось Sherverpupa; Вчера в 10:43.
Механизм использования циклического буфера заложен в таких инструментах как Архивирование в панели, График реального времени, Исторический график, Историческая таблица, Тренды. Все они предполагают периодическое сохранение выборки данных в области внутренней памяти панели - называемом хранилищем. В хранилище записи образуют циклический буфер. Первые 4 регистра хранилища отводятся под указатели адреса (DWORD) начала(головы) и конца(хвоста) циклического буфера, остальная область отводится под данные архива. Запись очередной выборки происходит по адресу головы буфера. Адрес головы и хвоста автоматически увеличиваются после каждой записи на количество записанных регистров. По этому адрес головы указывает на самые новые данные, а адрес хвоста - на самые последние данные. После того как адрес головы достигнет конца хранилища, он сбрасывается в начало хранилища и новые записи будут затирать самые старые.
Таким образом ни какая память панели никогда не очищается, а просто новая информация перезаписывает старую.
Для правильного отображения данных циклического буфера (по порядку поступления) и предназначена соответствующая галка в настройках таблицы
- Использовать циклический буфер
Захват-33.png
ЗЫ.
Вы скорей всего не используете в своей таблице эту настройку, по этому для Вас только физическая очистка 5000 регистров.
Могу и очистку организовать
Последний раз редактировалось petera; Вчера в 11:07.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Держите пример с очисткой 5000 регистров PWF256..PFW5255
по фронту PSB1000
Скрытый текст:
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Петр, спасибо за развернутый ответ.
Да, я не использую стандартные средства архивирования, так как там нет возможности
сохранять текстовые данные ( название рецепта) и сохранять по событию (только по времени),
поэтому организовал функциональную область, которая по изменению флага копирует нужные данные в нужную область с учетом текущего индекса.
Поэтому похоже да, только фактическая очистка.
Но работа с PFW специфическая, даже в макросах только через копирование области через Read/Write.
Пока видится - в макросе сделать константу с обнуленной записью и в цикле делать Write по всем записям.
Эмулятор, к сожалению, макросы не поддерживает, а панели в руках нет, поэтому пока попробовать не могу.
Возможно есть какой-то другой способ ?
UPD. Пока писал - вы ответили. Спасибо!
Начало и конец области очистки можно изменить так
Захват-11.png
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Присмотрелись бы к элементу Архивирование на USB
1. Сохранять можно и по событию, а не только по времени
Захват-22.png
2. В выборке (блоке данных) могут присутствовать текстовые данные, если названия у Вас в регистрах находятся
Захват-33.png Захват-44.png Захват-55.png
Можно индекс завести для выбора нужной области
Захват-66.png
3. Сохранение на флешку можно сделать по команде
Захват-77.png
Ну и таблицу данных с ЦИКЛИЧЕСКИМ БУФЕРОМ можно привязать к адресу хранилища
Захват-88.png
ЗЫ
Автоматический экспорт нужно запретить (PSB1=0 перманентный 0)
Захват-99.png
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Зачем в макросе через Read/Write, разве так нельзя?
Захват-101.png
Сразу записать 0 в 5000 регистров PFW,начиная с PFW256
Код:Writes(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 5000, NULL);
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg