Помогите создать базу данных

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Post Reply
Aleks333777333
Posts: 145
Joined: Sun Jul 19, 2015 11:46 am

Помогите создать базу данных

Post by Aleks333777333 » Fri Mar 15, 2019 2:56 pm

Подскажите как организовать базу данных времени цикла, отображаемую на панели HMI?

С панелью всё понятно. Создал новый экран на нем поля ввода-вывода. Отдельно для минут поле и отдельно для секунд поле.
Image
Подсчет времени в контроллере ведется вот по такому нехитрому алгоритму.
Image

Время отображается на панели в окне вывода.
При каждом новом цикле сбрасывается, а хочется видеть базу на экране панели из 50 последних времён цикла.

Читал, скачанные с форума материалы, в разделе курсы Сименс, но там для классического Степа информация, а я в Портале делаю.
Если я правильно понимаю надо создать блок данных, в нем создать массив из 50 строк для минут и отдельно массив из 50 строк для секунд.
И писать время в этот блок данных, а для панели брать данные из этого блока данных. Но как писать данные в массивы я не знаю.
Помогите! Я вообще правильно мыслю или всё можно сделать проще, по другому, через меркерную память?

CoMod
Site Admin
Posts: 3579
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia
Contact:

Re: Помогите создать базу данных

Post by CoMod » Fri Mar 15, 2019 5:03 pm

пример сохранения времени наработки двигателей за час, день, месяц в индексированные массивы
локальное время читается из ПЛК
время работы движка подсчитывается в одном счётчике в секундах... потом при необходимости можно поделить на 60 для получения минут или 3600 для поучения часов
Image

по полному заполнению потом можно оператором переноса блока данных скопировать массив в архивный блок и обнулить текущий
Image

Aleks333777333
Posts: 145
Joined: Sun Jul 19, 2015 11:46 am

Re: Помогите создать базу данных

Post by Aleks333777333 » Fri Mar 15, 2019 5:41 pm

А как в моём случае сохранять %МW338 в массив? Чтобы из 50 ячеек массива всегда в следующую по порядку ячейку массива заполнялось. А по заполнению 50 ячеек, перезаписывалось заново, начиная с первой. Как-то это должно легко делаться. Не могу понять. Не работал с массивами раньше. Не получается. Обязательно ли создавать для этого функциональный блок и экземплярный блок данных, или можно создать глобальный блок данных и записывать туда данные из функции. Что-то запутался совсем.

Yaroslav-70
Posts: 35
Joined: Mon Dec 15, 2014 10:48 am

Re: Помогите создать базу данных

Post by Yaroslav-70 » Fri Mar 15, 2019 8:00 pm

Если предыдущая ячейка больше(не равна) "0", а текущая равна "0" то пишем в текущую и т.д.

Aleks333777333
Posts: 145
Joined: Sun Jul 19, 2015 11:46 am

Re: Помогите создать базу данных

Post by Aleks333777333 » Sat Mar 16, 2019 5:24 pm

Такой алгоритм не сработает, когда заполнятся все 50 ячеек. (равных 0 не останется) Как писать в массив данные из MW?
Допустим по какому-то ключу "Конец времени цикла" надо перекинуть данные из MW в массив блока данных.

Aleks333777333
Posts: 145
Joined: Sun Jul 19, 2015 11:46 am

Re: Помогите создать базу данных

Post by Aleks333777333 » Sun Mar 17, 2019 6:50 pm

Сделал пока так
Image
И таких 50 строчек для каждого значения счета количества срабатываний нижнего концевика и соответственно 50 ячеек ввода-вывода на панели оператора для отображение. (вернее 100 так как минуты и секунды отдельно считаются) До этой строчки подсчет срабатываний концевика, последней строчкой, когда значение равно 50 присвоить значению 0 и поехало по кругу писать.

Но это же не правильно. А если бы значений было 1000 или еще больше.
Надо как-то универсально делать и писать в массив.
К тому же жалко меркерную память.

Подскажите где почитать еще про массивы в ТИА портале. (Только не на английском)

Rex2701
Posts: 267
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Помогите создать базу данных

Post by Rex2701 » Sun Mar 17, 2019 8:42 pm

Косвенная адресация - наше всё. Т.е. твоё всё.

Info
Faq & Info
Faq & Info
Posts: 408
Joined: Wed Oct 05, 2005 9:00 am

Re: Помогите создать базу данных

Post by Info » Sun Mar 17, 2019 9:21 pm

Rex2701 wrote:
Sun Mar 17, 2019 8:42 pm
Косвенная адресация - наше всё. Т.е. твоё всё.
(sfaq) 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)
Image

как на картинке выше
Image

Aleks333777333
Posts: 145
Joined: Sun Jul 19, 2015 11:46 am

Re: Помогите создать базу данных

Post by Aleks333777333 » Mon Mar 18, 2019 2:23 pm

Спасибо, буду разбираться с этим. Сходу ничего не понял.

Yaroslav-70
Posts: 35
Joined: Mon Dec 15, 2014 10:48 am

Re: Помогите создать базу данных

Post by Yaroslav-70 » Mon Mar 18, 2019 6:24 pm

Aleks333777333 wrote:
Sat Mar 16, 2019 5:24 pm
Такой алгоритм не сработает, когда заполнятся все 50 ячеек. (равных 0 не останется) Как писать в массив данные из MW?
Сработает набегом, если предыдущая ячейка больше "0", а текущая равна "0", пишем значение в текущую ячейку, а в следующую пишем "0" и т.д., когда дойдешь до ячейки 50 в первую будет записан "0", так и гоняй по кругу. Единственное,- это "колесо" нужно будет "толкнуть".
Да согласен, вариант "топорный", но работать будет.
ЗЫ. Ну или по счетчику к-ва отрезаний обнули первую ячейку и пиши по-новой.

Post Reply