Показано с 1 по 10 из 10

Тема: Запись переменных в таблицу отображения данных, архивирование данных в файл

  1. #1

    По умолчанию Запись переменных в таблицу отображения данных, архивирование данных в файл

    Здравствуйте, изучил документ Первый старт и Архивация, но все равно не пойму, как записать переменные в ячейки таблицы и потом их сохранить в файл. Среда программирования CodeSys 3.5, среда визуализации Конфигуратор ОВЕН СП300.

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

    20 сборочных станций, 8-ми часовой рабочий день. На каждой станции кнопка с фиксацией, для начала/окончания простоя. В Конфигураторе нарисовал таблицу со сборочными станциями и интервалами времени. В CodeSys объявил переменные и написал код:
    Сначала селектору количества часов в смену присваиваю значения (1..8, 8 рабочих часов в смену ), предварительно проверив, в какой промежуток времени (указаны в таблице отображения данных) попадает простой.
    Далее отслеживаю задний фронт кнопки начала/окончания простоя. При нажатии кнопки запускаю счетчик простоя, при отжатии кнопки и срабатывании заднего фронта, записываю в переменную текущее значение счетчика таймера и выключаю его. Открываю Case, time преобразую в real и делю на 60 (секунды перевожу в минуты). В зависимости от промежутка времени, в который произошел простой, записываю значение в соответствующую переменную.

    Данный FB хочу сделать универсальным, то есть в Main буду вызывать его 20 раз (20 сборочных станций), чтобы по каждой станции получить почасовые простои.

    Вопрос: Как эти значения простоев присвоить определенным ячейкам в таблице, далее эти значения ежедневно сохранять в файл CVS?

    П.С. Новичок в ОВЕН и CodeSys, сильно не ругайте
    Изображения Изображения

  2. #2

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение

    Данный FB хочу сделать универсальным, то есть в Main буду вызывать его 20 раз (20 сборочных станций), чтобы по каждой станции получить почасовые простои.

    Вопрос: Как эти значения простоев присвоить определенным ячейкам в таблице, далее эти значения ежедневно сохранять в файл CVS?

    П.С. Новичок в ОВЕН и CodeSys, сильно не ругайте
    Почему переводите Time в Real ? Вообще то надо конвертировать в DWORD и делить на 1000, убрав мс, останется время в секундах, которое и надо делить на 60 и конвертировать в WORD ( 1 регистр), их и отправлять в таблицу. Хотя думаю лучше считать в секундах.
    REAL (2 регистра) тут не нужен вообще,

    В слейве (или мастере) ПЛК надо создать нужное кол-во переменных WORD , можно массив, или структуру массивов, по кол-ву переменных в таблице, например у вас 10 столбцов и 10 строк. В панели раскладываете переменные по местам в таблице.
    Пример таблиц в СП3хх, есть на сайте Овен и много тем в разделе по панелям СП3хх.
    Там же есть примеры архивирования таблиц на флешку в файл CVS
    Последний раз редактировалось kondor3000; 23.08.2024 в 17:08.

  3. #3

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Почему переводите Time в Real ? Вообще то надо конвертировать в DWORD и делить на 1000, убрав мс, останется время в секундах, которое и надо делить на 60 и конвертировать в WORD ( 1 регистр), их и отправлять в таблицу. Хотя думаю лучше считать в секундах.
    REAL (2 регистра) тут не нужен вообще,

    В слейве (или мастере) ПЛК надо создать нужное кол-во переменных WORD , можно массив, или структуру массивов, по кол-ву переменных в таблице, например у вас 10 столбцов и 10 строк. В панели раскладываете переменные по местам в таблице.
    Пример таблиц в СП3хх, есть на сайте Овен и много тем в разделе по панелям СП3хх.
    Там же есть примеры архивирования таблиц на флешку в файл CVS
    kondor3000,

    Спасибо за информацию! Изучил соответствующие инструкции по Овну, исправил код программы, но остались вопросы:
    1 Не могу найти однозначную информацию, по связке HMI и PLC, кого сделать мастером и почему? (Моя топология: СП310-Р 1шт-----ПЛК210-11-CS 1шт-----БП240К-24 2шт-----МУ210-403 5шт-----МВ210-202 5шт-----КСН210-5 1шт)
    2 Создал две структуры массивов (I и II смены по 8 часов) для записи данных в таблицу, вывода их на панель и последующего сохранения в CSV файл. В Конфигураторе в настройках таблицы не нашел поле для привязки переменной к определенной ячейке. Также создавал поля для ввода данных, не нашел где привязать переменные. Можете на примере показать конструкцию привязки переменной к ячейке таблицы?
    3 После изучения инструкции Архивация, выяснил что OwenArchiver мне не подойдет (у меня 180 переменных-заполняются 20 строк и 9 столбцов). Библиотека CAA File и архивирование с помощью макросов вызвали больше вопросов. Подскажите, в каком направлении действовать, что и какие конструкции использовать?

    CodeSys 3.5 FB Downtime 1.pngCodeSys 3.5 FB Downtime 2.pngCodeSys 3.5 FB Downtime 3.pngCodeSys 3.5 FB Downtime 4.pngCodeSys 3.5 PRG PLC_PRG 1.pngCodeSys 3.5 PRG PLC_PRG 2.pngCodeSys 3.5 STRUCT Downtime_Shift1.pngКонфигуратор ОВЕН СП300 1.pngКонфигуратор ОВЕН СП300 2.png

  4. #4

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение
    kondor3000,

    Спасибо за информацию! Изучил соответствующие инструкции по Овну, исправил код программы, но остались вопросы:
    1 Не могу найти однозначную информацию, по связке HMI и PLC, кого сделать мастером и почему? (Моя топология: СП310-Р 1шт-----ПЛК210-11-CS 1шт-----БП240К-24 2шт-----МУ210-403 5шт-----МВ210-202 5шт-----КСН210-5 1шт)
    2 Создал две структуры массивов (I и II смены по 8 часов) для записи данных в таблицу, вывода их на панель и последующего сохранения в CSV файл. В Конфигураторе в настройках таблицы не нашел поле для привязки переменной к определенной ячейке. Также создавал поля для ввода данных, не нашел где привязать переменные. Можете на примере показать конструкцию привязки переменной к ячейке таблицы?
    3 После изучения инструкции Архивация, выяснил что OwenArchiver мне не подойдет (у меня 180 переменных-заполняются 20 строк и 9 столбцов). Библиотека CAA File и архивирование с помощью макросов вызвали больше вопросов. Подскажите, в каком направлении действовать, что и какие конструкции использовать?
    В модбас ТСР мастере у вас добавлены шаблоны модулей, там же вы можете добавить Модбас слейв (это не шаблон, а произвольный прибор, у вас СП310)
    Настроить в нём IP панели и добавить нужные переменные, можно сразу Массив WORD, например запись 100 регистров с адреса 256 (функция 0х10).
    Панель будет слейвом, кстати вы так и не убрали Float из панели. Если панель слейв, адреса у неё начинаются с PSW256, в ПЛК с 256 адреса.
    Таблица тоже начинается с PSW256, туда вы и положите свой Массив, например 100 регистров, с адреса 256.
    Архивацию таблицы можно сделать в панели, на флешку.

    Можно наоборот, панель мастер, ПЛК слейв. Тогда в панели адреса будут с 4х 0, а в ПЛК с 0. Тогда лучше использовать другой порт ПЛК.

    Посмотрите видео 10 и 11, ПЛК в режиме ТСР мастер и ТСР слейв https://www.youtube.com/watch?v=mkpY3u7K8Kg
    Видео 8 и 9, ПЛК в режиме мастер и Слейв, обмен с Панелью по Модбас RTU https://www.youtube.com/watch?v=77fdfnfdJME

    Советую вам на время, создать новый проект и работать только с обменом ПЛК и панели, достаточно несколько регистров, чтобы понять как работает обмен.
    Последний раз редактировалось kondor3000; 27.08.2024 в 19:14.

  5. #5

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    В модбас ТСР мастере у вас добавлены шаблоны модулей, там же вы можете добавить Модбас слейв (это не шаблон, а произвольный прибор, у вас СП310)
    Настроить в нём IP панели и добавить нужные переменные, можно сразу Массив WORD, например запись 100 регистров с адреса 256 (функция 0х10).
    Панель будет слейвом, кстати вы так и не убрали Float из панели. Если панель слейв, адреса у неё начинаются с PSW256, в ПЛК с 256 адреса.
    Таблица тоже начинается с PSW256, туда вы и положите свой Массив, например 100 регистров, с адреса 256.
    Архивацию таблицы можно сделать в панели, на флешку.

    Можно наоборот, панель мастер, ПЛК слейв. Тогда в панели адреса будут с 4х 0, а в ПЛК с 0. Тогда лучше использовать другой порт ПЛК.

    Посмотрите видео 10 и 11, ПЛК в режиме ТСР мастер и ТСР слейв https://www.youtube.com/watch?v=mkpY3u7K8Kg
    Видео 8 и 9, ПЛК в режиме мастер и Слейв, обмен с Панелью по Модбас RTU https://www.youtube.com/watch?v=77fdfnfdJME

    Советую вам на время, создать новый проект и работать только с обменом ПЛК и панели, достаточно несколько регистров, чтобы понять как работает обмен.
    У меня две таблицы состоящие из 9 столбцов и 21 строки, соответственно 189 ячеек записи. Максимально в один канал можно записать 123 регистра (есть ли ограничения по записи на Slave?). Как я понял мне нужно разбить таблицы каждую на две, и заполнять двумя каналами записи каждую? При соотнесении переменных (использую структуру массивов Word) в Slave присваивать элемент структуры, отступать 8 регистров, так как в них будет записан элемент структуры=массив Word 1..9 и так далее?CODESYS 3.5 FB Downtime.pngCODESYS 3.5 Modbus TCP Slave 1.pngCODESYS 3.5 Modbus TCP Slave 2.pngCODESYS 3.5 PRG PLC_PRG.pngCODESYS 3.5 STRUCT Downtime_Shift1.pngКонфигуратор ОВЕН СП300.png

  6. #6

    По умолчанию

    Не понятно зачем вы используете PFW регистры напрямую? Да ещё и записывать будете по 10 раз в секунду. За 2-4 недели так память и убьёте.

    Таблица отображения работает с оперативными регистрами, начиная с PSW256 и далее, а записывать данные вы можете уже на PFW или флешку.
    И снова вы не убрали Float из таблицы. Читайте что я вам уже раньше писал. Используйте WORD, записывайте в секундах, и регистров в 2 раза уменьшится.
    Последний раз редактировалось kondor3000; 02.09.2024 в 13:33.

  7. #7

    По умолчанию

    Сохранение данных таблицы будет происходить в конце смен, т.е. в сутки будет создаваться 2 файла с таблицами простоев за I и II смены. Если в течении смены пропадает питание (у нас такое бывает), то данные в PSW не сохранятся, поэтому PFW. Не смог найти галочку размещение в авто области, как рассказывают в роликах.
    Не могу разобраться как правильно соотнести структуру массивов с ячейками в таблице. Unit/Word занимают 2 байта, при записи элемента структуры (массива 1..9 элементов) получается нужно 189 регистров. Если мне нужно в минутах простои сохранять, то выход только делить на две таблицы?
    В таблице параметры поменял: Тип word, Формат unsigned. Нужна визуализация простоев в минутах (согласно ТЗ), никто не будет стоять и высчитывать постоянно)

  8. #8

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение
    Сохранение данных таблицы будет происходить в конце смен, т.е. в сутки будет создаваться 2 файла с таблицами простоев за I и II смены. Если в течении смены пропадает питание (у нас такое бывает), то данные в PSW не сохранятся, поэтому PFW. Не смог найти галочку размещение в авто области, как рассказывают в роликах.
    Не могу разобраться как правильно соотнести структуру массивов с ячейками в таблице. Unit/Word занимают 2 байта, при записи элемента структуры (массива 1..9 элементов) получается нужно 189 регистров. Если мне нужно в минутах простои сохранять, то выход только делить на две таблицы?
    В таблице параметры поменял: Тип word, Формат unsigned. Нужна визуализация простоев в минутах (согласно ТЗ), никто не будет стоять и высчитывать постоянно)
    Секунды переведите в минуты, разделив на 60 и пишите в минутах тогда, правда без секунд. Потому что 0,5 мин это 30 секунд, перевод не корректный.
    Всё равно WORD только в минутах.

    По поводу записи в PFW, у вас запись через 100 мс. Это 10 раз в секунду, адреса у вас 10410 (+10000 обращение напрямую в PFW ) запись убьёт память за 2-4 недели.
    Последний раз редактировалось kondor3000; 02.09.2024 в 14:52.

  9. #9

    По умолчанию

    Вопрос у меня в другом, берем один элемент структуры (массив word 1...9), записываем: PFW 4100...4108 (область для таблиц), далее второй и так далее. Элементов в структуре (массивов) 21. Получается нужно 189 регистров для записи, а позволяет в один канал записать 123. Не могу понять, что я упускаю или где ошибаюсь? Получается в Конфигураторе нужно делить таблицу на две, и писать в несколько каналов?

  10. #10

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение
    Вопрос у меня в другом, берем один элемент структуры (массив word 1...9), записываем: PFW 4100...4108 (область для таблиц), далее второй и так далее. Элементов в структуре (массивов) 21. Получается нужно 189 регистров для записи, а позволяет в один канал записать 123. Не могу понять, что я упускаю или где ошибаюсь? Получается в Конфигураторе нужно делить таблицу на две, и писать в несколько каналов?
    Разговор слепого с глухим.
    Откройте пример с сайта, таблица отображения записывается в PSW регистры.
    В примере адреса таблицы начинаются с PSW400, и имеют длину 36 регистров.

    У вас например будет, с PSW401 по PSW589 и длина 189 регистров. Таблица на всю длину.
    В ПЛК отправляете 100 регистров с адреса 401 и 89 регистров с адреса 501. В таблице уже имеете 189 регистров. Всё.
    Далее либо записываете на флешку либо по кнопке в память панели, теперь уже в регистры PFW, только лучше раз в сутки ( но не чаще чем раз в час).

    Если нет галки авто область, то ставите начальный адрес PFW4096, и количество записей N * 189 регистров+ 6 регистров метка времени и даты+ буфер.
    В памяти почти 4 000 000 регистров. Например выберите от 100 - до 1000 раз. Для 1000 раз будет 195 000 +195 регистров. Панель сама будет раскладывать всю таблицу автоматом, так же и считывать на флешку.
    Сразу скажу, что таких таблиц по 195 регистров не записывал, так что всё надо проверить.
    Возможно лучше будет записывать в память, например по 1 строке из таблицы, каждый час.
    Последний раз редактировалось kondor3000; 02.09.2024 в 18:12.

Похожие темы

  1. Ответов: 5
    Последнее сообщение: 21.09.2022, 07:00
  2. Ответов: 2
    Последнее сообщение: 27.10.2021, 08:51
  3. Запись данных в файл с помощью CAA.File
    от d-view в разделе ПЛК3xx (архив)
    Ответов: 9
    Последнее сообщение: 06.02.2017, 17:49
  4. Архивирование данных
    от Vitamin в разделе Master SCADA 3
    Ответов: 108
    Последнее сообщение: 23.08.2015, 16:52
  5. Ввод данных в таблицу
    от Ganiball в разделе СПК2xx (архив)
    Ответов: 1
    Последнее сообщение: 06.08.2014, 12:14

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •