Подскажите как организовать базу данных времени цикла, отображаемую на панели HMI?
С панелью всё понятно. Создал новый экран на нем поля ввода-вывода. Отдельно для минут поле и отдельно для секунд поле.
Подсчет времени в контроллере ведется вот по такому нехитрому алгоритму.
Время отображается на панели в окне вывода.
При каждом новом цикле сбрасывается, а хочется видеть базу на экране панели из 50 последних времён цикла.
Читал, скачанные с форума материалы, в разделе курсы Сименс, но там для классического Степа информация, а я в Портале делаю.
Если я правильно понимаю надо создать блок данных, в нем создать массив из 50 строк для минут и отдельно массив из 50 строк для секунд.
И писать время в этот блок данных, а для панели брать данные из этого блока данных. Но как писать данные в массивы я не знаю.
Помогите! Я вообще правильно мыслю или всё можно сделать проще, по другому, через меркерную память?
Помогите создать базу данных
-
- Site Admin
- Posts: 3992
- Joined: Thu Feb 16, 2006 3:25 pm
- Location: Russia
Re: Помогите создать базу данных
пример сохранения времени наработки двигателей за час, день, месяц в индексированные массивы
локальное время читается из ПЛК
время работы движка подсчитывается в одном счётчике в секундах... потом при необходимости можно поделить на 60 для получения минут или 3600 для поучения часов
по полному заполнению потом можно оператором переноса блока данных скопировать массив в архивный блок и обнулить текущий
локальное время читается из ПЛК
время работы движка подсчитывается в одном счётчике в секундах... потом при необходимости можно поделить на 60 для получения минут или 3600 для поучения часов
по полному заполнению потом можно оператором переноса блока данных скопировать массив в архивный блок и обнулить текущий
-
- Posts: 155
- Joined: Sun Jul 19, 2015 11:46 am
Re: Помогите создать базу данных
А как в моём случае сохранять %МW338 в массив? Чтобы из 50 ячеек массива всегда в следующую по порядку ячейку массива заполнялось. А по заполнению 50 ячеек, перезаписывалось заново, начиная с первой. Как-то это должно легко делаться. Не могу понять. Не работал с массивами раньше. Не получается. Обязательно ли создавать для этого функциональный блок и экземплярный блок данных, или можно создать глобальный блок данных и записывать туда данные из функции. Что-то запутался совсем.
-
- Posts: 44
- Joined: Mon Dec 15, 2014 10:48 am
Re: Помогите создать базу данных
Если предыдущая ячейка больше(не равна) "0", а текущая равна "0" то пишем в текущую и т.д.
-
- Posts: 155
- Joined: Sun Jul 19, 2015 11:46 am
Re: Помогите создать базу данных
Такой алгоритм не сработает, когда заполнятся все 50 ячеек. (равных 0 не останется) Как писать в массив данные из MW?
Допустим по какому-то ключу "Конец времени цикла" надо перекинуть данные из MW в массив блока данных.
Допустим по какому-то ключу "Конец времени цикла" надо перекинуть данные из MW в массив блока данных.
-
- Posts: 155
- Joined: Sun Jul 19, 2015 11:46 am
Re: Помогите создать базу данных
Сделал пока так
И таких 50 строчек для каждого значения счета количества срабатываний нижнего концевика и соответственно 50 ячеек ввода-вывода на панели оператора для отображение. (вернее 100 так как минуты и секунды отдельно считаются) До этой строчки подсчет срабатываний концевика, последней строчкой, когда значение равно 50 присвоить значению 0 и поехало по кругу писать.
Но это же не правильно. А если бы значений было 1000 или еще больше.
Надо как-то универсально делать и писать в массив.
К тому же жалко меркерную память.
Подскажите где почитать еще про массивы в ТИА портале. (Только не на английском)
И таких 50 строчек для каждого значения счета количества срабатываний нижнего концевика и соответственно 50 ячеек ввода-вывода на панели оператора для отображение. (вернее 100 так как минуты и секунды отдельно считаются) До этой строчки подсчет срабатываний концевика, последней строчкой, когда значение равно 50 присвоить значению 0 и поехало по кругу писать.
Но это же не правильно. А если бы значений было 1000 или еще больше.
Надо как-то универсально делать и писать в массив.
К тому же жалко меркерную память.
Подскажите где почитать еще про массивы в ТИА портале. (Только не на английском)
-
- Posts: 374
- Joined: Wed Oct 13, 2010 8:44 am
- Location: Russian Federation
Re: Помогите создать базу данных
Косвенная адресация - наше всё. Т.е. твоё всё.
-
- Faq & Info
- Posts: 428
- Joined: Wed Oct 05, 2005 9:00 am
Re: Помогите создать базу данных
How do you implement an array access with an S7-1200/S7-1500 with variable index?
https://support.industry.siemens.com/cs ... able-index
"Data_DB". Quantities ["i"] (one-dimensional ARRAY)
как на картинке выше
-
- Posts: 155
- Joined: Sun Jul 19, 2015 11:46 am
Re: Помогите создать базу данных
Спасибо, буду разбираться с этим. Сходу ничего не понял.
-
- Posts: 44
- Joined: Mon Dec 15, 2014 10:48 am
Re: Помогите создать базу данных
Сработает набегом, если предыдущая ячейка больше "0", а текущая равна "0", пишем значение в текущую ячейку, а в следующую пишем "0" и т.д., когда дойдешь до ячейки 50 в первую будет записан "0", так и гоняй по кругу. Единственное,- это "колесо" нужно будет "толкнуть".Aleks333777333 wrote: ↑Sat Mar 16, 2019 5:24 pm Такой алгоритм не сработает, когда заполнятся все 50 ячеек. (равных 0 не останется) Как писать в массив данные из MW?
Да согласен, вариант "топорный", но работать будет.
ЗЫ. Ну или по счетчику к-ва отрезаний обнули первую ячейку и пиши по-новой.