Страница 1 из 8 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 71

Тема: СП307-Б. Проблема с выводом журнала событий

  1. #1

    Exclamation СП307-Б. Проблема с выводом журнала событий

    Приветствую, мастера! Есть панель СП307-Б и ПЛК110 М02. Тружусь над проектом по дозации жидкостей в автоматическом режиме. Основная часть проекта сделана, осталось сделать журнал вывода событий и аварий на панель СП307-Б. Выглядеть он должен следующим образом(см. изображение):
    tabl.jpg
    То есть появилось какое-то событие, после этого в таблицу закидывается время его появления и текст события. Новое событие пишется ниже по списку. События должны храниться в энергонезависимой памяти. Под эту задачу идеально подходил бы элемент историческая таблица, но есть одно "НО". В тексте сообщений у меня будут не только конечный список аварий(авария1, авария2 и т.д.), но еще и строки, содержимое которых заведомо неизвестно, строка будет состоять из "Сообщение"+регистр плк, если посмотреть на изображение, в моем случае это переменный объем дозации. В элементе таблица тревог есть похожая функция - добавить в поле сообщение адрес регистра, но к сожалению в таблице тревог нельзя вставлять время появления аварии, также она не хранит данные, т.к. если значение бита сообщения обнуляется, то это сообщение просто стирается из списка.
    На носу уже срок сдачи проекта, а я до сих пор ничего не могу придумать. Кто подскажет, как мне решить данную проблему?

  2. #2
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от g0r0d0k Посмотреть сообщение
    Приветствую, мастера! Есть панель СП307-Б и ПЛК110 М02. Тружусь над проектом по дозации жидкостей в автоматическом режиме. Основная часть проекта сделана, осталось сделать журнал вывода событий и аварий на панель СП307-Б. Выглядеть он должен следующим образом(см. изображение):
    tabl.jpg
    То есть появилось какое-то событие, после этого в таблицу закидывается время его появления и текст события. Новое событие пишется ниже по списку. События должны храниться в энергонезависимой памяти. Под эту задачу идеально подходил бы элемент историческая таблица, но есть одно "НО". В тексте сообщений у меня будут не только конечный список аварий(авария1, авария2 и т.д.), но еще и строки, содержимое которых заведомо неизвестно, строка будет состоять из "Сообщение"+регистр плк, если посмотреть на изображение, в моем случае это переменный объем дозации. В элементе таблица тревог есть похожая функция - добавить в поле сообщение адрес регистра, но к сожалению в таблице тревог нельзя вставлять время появления аварии, также она не хранит данные, т.к. если значение бита сообщения обнуляется, то это сообщение просто стирается из списка.
    На носу уже срок сдачи проекта, а я до сих пор ничего не могу придумать. Кто подскажет, как мне решить данную проблему?
    В любом случае нужно разделить аварии и события на два журнала, т.к. они разные по структуре
    Под авариями я понимаю только строковые сообщения
    "Авария насоса"
    "Утечка хлора"
    и т.д.
    Под событиями я понимаю - "Сообщение"+регистр плк.
    В этом случае журнал аварий - это стандартная историческая таблица, без третьего столбца, как здесь http://www.owen.ru/forum/showthread....l=1#post223150

    Журнал событий можно будет сделать из Таблицы отображения данных, в ней можно отображать и Сообщения и значения регистров ПЛК в одной строке.
    Как засунуть в эту таблицу события можно подумать, вполне реализуемая задача.
    Только, что значит
    строки, содержимое которых заведомо неизвестно, строка будет состоять из "Сообщение"+регистр плк
    Это, что неизвестно даже какой текст нужно выводить?
    Или Вы уже знаете перечень возможных сообщений и соответствующих им номеров регистров ПЛК с цифровыми значениями?
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3

    По умолчанию

    Благодарю за скорый ответ, petera!
    Цитата Сообщение от petera Посмотреть сообщение
    В любом случае нужно разделить аварии и события на два журнала, т.к. они разные по структуре
    Под авариями я понимаю только строковые сообщения
    "Авария насоса"
    "Утечка хлора"
    и т.д.
    Под событиями я понимаю - "Сообщение"+регистр плк.
    В этом случае журнал аварий - это стандартная историческая таблица, без третьего столбца, как здесь http://www.owen.ru/forum/showthread....l=1#post223150
    За идею разделить аварии и события - спасибо.

    Цитата Сообщение от petera Посмотреть сообщение
    Журнал событий можно будет сделать из Таблицы отображения данных, в ней можно отображать и Сообщения и значения регистров ПЛК в одной строке.
    Как засунуть в эту таблицу события можно подумать, вполне реализуемая задача.
    Только, что значит
    "строки, содержимое которых заведомо неизвестно, строка будет состоять из "Сообщение"+регистр плк"
    Это, что неизвестно даже какой текст нужно выводить?
    Или Вы уже знаете перечень возможных сообщений и соответствующих им номеров регистров ПЛК с цифровыми значениями?
    Давайте разберемся с Таблицей отображения данных. В нее мне нужно будет вносить строчку, состоящую из 3-ех полей: "Сообщение", значение регистра1, значение регистра 2. Примеры сообщений: "Начало дозации", "Конец дозации", "Ручной пуск насоса", "Ручной останов насоса". В регистре1 и регистре2 будут храниться значение типа Word - объема дозации и производительности насосов соответственно. Каким образом работает элемент таблица отображения данных я так и не разобрался, в инструкции очень скудно написано. В настройках на вкладке регистр элемента указывается только номер одного регистра. У меня же будет 2 поля с данными типа Word, как мне писать в них? Еще вопрос: на вкладке "таблица" внизу есть окошко "тексты столбца названий", мне сюда нужно будет записать мои всевозможные события типа: "Начало дозации", "Конец дозации", "Ручной пуск насоса", "Ручной останов насоса"? На вкладке "столбцы данных" ставим галочку цикл. буфер, затем вносим столбцы данных типа Word. Как к ним обращаться тоже не понятно. И еще вопрос, если я добавляю столбец типа Время, то нужно ли сюда писать время из ПЛК или же это время будет автоматически считываться с часов реального времени панели СП107?

  4. #4
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от g0r0d0k Посмотреть сообщение
    Благодарю за скорый ответ, petera!


    За идею разделить аварии и события - спасибо.


    Давайте разберемся с Таблицей отображения данных. В нее мне нужно будет вносить строчку, состоящую из 3-ех полей: "Сообщение", значение регистра1, значение регистра 2. Примеры сообщений: "Начало дозации", "Конец дозации", "Ручной пуск насоса", "Ручной останов насоса". В регистре1 и регистре2 будут храниться значение типа Word - объема дозации и производительности насосов соответственно. Каким образом работает элемент таблица отображения данных я так и не разобрался, в инструкции очень скудно написано. В настройках на вкладке регистр элемента указывается только номер одного регистра. У меня же будет 2 поля с данными типа Word, как мне писать в них? Еще вопрос: на вкладке "таблица" внизу есть окошко "тексты столбца названий", мне сюда нужно будет записать мои всевозможные события типа: "Начало дозации", "Конец дозации", "Ручной пуск насоса", "Ручной останов насоса"? На вкладке "столбцы данных" ставим галочку цикл. буфер, затем вносим столбцы данных типа Word. Как к ним обращаться тоже не понятно. И еще вопрос, если я добавляю столбец типа Время, то нужно ли сюда писать время из ПЛК или же это время будет автоматически считываться с часов реального времени панели СП107?
    Как работает такая таблица можно прочитать здесь http://www.owen.ru/forum/showthread....l=1#post105039
    Второй тип таблиц, с возможностью ввода табличных данных - http://www.owen.ru/forum/showthread....l=1#post104386
    Эти таблицы работают в СП3хх так же, как и в СП270, за исключением того, что в СП300 для данных дополнительно можно использовать String.
    В нее мне нужно будет вносить строчку, состоящую из 3-ех полей: "Сообщение", значение регистра1, значение регистра 2.
    Наверно Вы забыли еще одно поле - Штамп времени?
    Каким образом работает элемент таблица
    В таблице отображается массив структур.
    В Вашем случае структура - это одна строка таблицы
    "Штамп времени", "Сообщение", "значение регистра 1", "значение регистра 2"
    Выглядеть это будет например так
    Захват-1.png
    При этом, длину сообщения я задал 22 символа исходя из длинны "Ручной останов насоса".
    Настройки таблицы
    Захват-2.png

    Захват-3.png

    Захват-4.png

    Захват-5.png

    Захват-6.png

    Захват-7.png

    Про остальное позже.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #5
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Можете пока поиграться с журналом.
    Заполняем его вручную.
    Если внешний вид журнала Вас устраивает, то будем двигаться дальше, т.е. заполнять его автоматически по событиям.
    Вложения Вложения
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6

    По умолчанию

    Большое спасибо вам, petera, что помогаете решить мою задачу, причем так подробно.
    По поводу таблицы отображения данных - я посмотрел ваш видеоролик и пример проекта. Я правильно понимаю, что таблица отображения данных представляет из себя скажем набор из цифровых дисплеев, каждый из которых ссылается на свой регистр? Только в случае этой таблицы мы указываем начальный регистр n, а ячейка n+1 будет ссылаться на адрес n+1, ячейка n+2 на регистр n+2 и т.д. Просто в этом случае мне придется формировать массив в ПЛК, строки которого аналогичны строкам данной таблицы и передавать их по одной строке в панель, что очень не удобно. Мне бы хотелось формировать 3 переменных в ПЛК: Событие типа String, Объем дозации и Произв. насосов типов WORD и передавать по команде с ПЛК (управляющий бит) их в эту таблицу отображения данных, не заботясь о том на какой позиции сейчас находится курсор в таблице и что там в нее было записано до этого, т.е. чтобы при передачи этих переменных добавлялась новая строка с событием и 2-мя перемен. типа Word. Также эти данные должны циклически перезаписываться, если в таблице уже не осталось выделенного места. Это возможно?

  7. #7
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от g0r0d0k Посмотреть сообщение
    Большое спасибо вам, petera, что помогаете решить мою задачу, причем так подробно.
    По поводу таблицы отображения данных - я посмотрел ваш видеоролик и пример проекта. Я правильно понимаю, что таблица отображения данных представляет из себя скажем набор из цифровых дисплеев, каждый из которых ссылается на свой регистр? Только в случае этой таблицы мы указываем начальный регистр n, а ячейка n+1 будет ссылаться на адрес n+1, ячейка n+2 на регистр n+2 и т.д. Просто в этом случае мне придется формировать массив в ПЛК, строки которого аналогичны строкам данной таблицы и передавать их по одной строке в панель, что очень не удобно. Мне бы хотелось формировать 3 переменных в ПЛК: Событие типа String, Объем дозации и Произв. насосов типов WORD и передавать по команде с ПЛК (управляющий бит) их в эту таблицу отображения данных, не заботясь о том на какой позиции сейчас находится курсор в таблице и что там в нее было записано до этого, т.е. чтобы при передачи этих переменных добавлялась новая строка с событием и 2-мя перемен. типа Word. Также эти данные должны циклически перезаписываться, если в таблице уже не осталось выделенного места. Это возможно?
    Я правильно понимаю, что таблица отображения данных представляет из себя скажем набор из цифровых дисплеев, каждый из которых ссылается на свой регистр? Только в случае этой таблицы мы указываем начальный регистр n, а ячейка n+1 будет ссылаться на адрес n+1, ячейка n+2 на регистр n+2 и т.д
    Правильно, только если вкл. Использовать циклический буфер, то данные начинаются с (Начальный адрес+4). А первые четыре регистра используются под адреса циклического буфера.
    Также эти данные должны циклически перезаписываться, если в таблице уже не осталось выделенного места. Это возможно?
    Циклический буфер и позволяет это делать
    Просто в этом случае мне придется формировать массив в ПЛК, строки которого аналогичны строкам данной таблицы и передавать их по одной строке в панель, что очень не удобно
    Мы так делать не будем.
    От ПЛК нужно всего
    - два регистра Объем и Производительность
    - и биты событий.
    Никаких массивов в ПЛК делать не нужно.
    Все будет делать сама панель, например так


    ЗЫ.
    Если у меня получилось то, что Вы хотели, спрашивайте, не стесняйтесь, как я это сделал. Потому, что не все в проекте очевидно.
    Например где я беру тексты сообщений или при чем здесь "Архивирование на USB"
    Вложения Вложения
    Последний раз редактировалось petera; 19.10.2016 в 16:00.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #8

    По умолчанию

    petera, то что вы сделали мне определенно нравится, но я не пойму каким образом это все работает . Ковыряюсь в вашем проекте, пытаюсь разобраться. Сама таблица отображения данных у вас ссылается на регистр PFW1000. Окно ввода "Объем дозации" и "произв-ть" - это регистры ПЛК. Где происходит перенос значений этих регистров в область памяти PFW таблицы я так и не нашел. Еще у вас есть 4 функционал. области, которые запускаются по включению битов ПЛК. Они присваивают значение регистру PSW40(от 0 до 3) и включают бит PSB1000. Если я не ошибаюсь PSW40 связан как-то с рецептами(в них я не разбирался). Бит PSB1000 включает архивирование и вызывает еще одну функциональную область, которая на 1 сек выключает этот же бит PSB1000. Не пойму зачем нужна архивация на USB - если у меня ее нет в панели СП307-Б и она не требуется. И откуда в таблице берутся названия "Начало дозации", "Конец дозации", "Ручной пуск насоса", "Ручной останов насоса". Еще пометка - если я не ошибаюсь адрес регистра "Объем дозации" не должен быть тем же, что и у битов управления события. Разъясните пожалуйста как это все работает?

  9. #9
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от g0r0d0k Посмотреть сообщение
    petera, то что вы сделали мне определенно нравится, но я не пойму каким образом это все работает . Ковыряюсь в вашем проекте, пытаюсь разобраться. Сама таблица отображения данных у вас ссылается на регистр PFW1000. Окно ввода "Объем дозации" и "произв-ть" - это регистры ПЛК. Где происходит перенос значений этих регистров в область памяти PFW таблицы я так и не нашел. Еще у вас есть 4 функционал. области, которые запускаются по включению битов ПЛК. Они присваивают значение регистру PSW40(от 0 до 3) и включают бит PSB1000. Если я не ошибаюсь PSW40 связан как-то с рецептами(в них я не разбирался). Бит PSB1000 включает архивирование и вызывает еще одну функциональную область, которая на 1 сек выключает этот же бит PSB1000. Не пойму зачем нужна архивация на USB - если у меня ее нет в панели СП307-Б и она не требуется. И откуда в таблице берутся названия "Начало дозации", "Конец дозации", "Ручной пуск насоса", "Ручной останов насоса". Еще пометка - если я не ошибаюсь адрес регистра "Объем дозации" не должен быть тем же, что и у битов управления события. Разъясните пожалуйста как это все работает?
    Разъяснять буду,
    А сейчас кратко
    1."Еще пометка - если я не ошибаюсь адрес регистра "Объем дозации" не должен быть тем же, что и у битов управления события."
    Совершенно верно подмечено! В реальном проекте биты управления событиями нужно присвоить другие адреса.

    2."Если я не ошибаюсь PSW40 связан как-то с рецептами(в них я не разбирался)"
    Рецепты здесь не причем, можно использовать любой другой регистр, главное, чтобы он однозначно нигде больше не использовался.

    3."И откуда в таблице берутся названия "Начало дозации", "Конец дозации", "Ручной пуск насоса", "Ручной останов насоса"
    Загляните Файл --> Создание рецептов.
    Захват-1.png
    Опять же к рецептам этот пункт меню относится лишь отчасти. Более точное название у него - в конфигураторе СП200
    "PFW установки"
    Т.е. здесь можно прямо в проекте заполнить области регистров PFW начальными значениями. При загрузке проекта в панель эти данные будут записаны в заданные регистры PFW.

    Таким образом я просто "забил" с адреса PFW500 Hex коды(ASCII) символов сообщений
    Захват-2.png
    При этом
    1-е сообщение начинается с PFW500
    2-е сообщение начинается с PFW511
    3-е сообщение начинается с PFW522
    4-е сообщение начинается с PFW533

    4. "Не пойму зачем нужна архивация на USB - если у меня ее нет в панели СП307-Б и она не требуется."
    Опять неправильное название элемента может ввести в заблуждение неопытного пользователя.
    Архивирование ВСЕГДА!!! выполняется в регистрах панели. После заполнения архива заданным количеством выборок данных(например у меня 15 записей) все записи однократно скидываются в файл на USB. И далее все это повторяется.
    По этому правильное название этого элемента не "Архивирование на USB", а "Экспорт архива на USB"
    А мы и не будем использовать этот элемент для физической записи данных на USB
    Даже отключим эту возможность
    Захват-6.png
    Системный бит PSB1 всегда в "0", это битовая константа (для справки PSB0 всегда в "1")

    5. "Где происходит перенос значений этих регистров в область памяти PFW таблицы я так и не нашел"
    п.5 связан с п.4.
    Именно в Архивировании на USB и происходит этот перенос.
    По подробней. Как работает архивирование
    По команде или по времени, у нас по команде(PSB1000), происходит выборка данных из разных источников(регистров) в самой панели и ПЛК, т.е. формируется одна строка нашей таблицы
    Захват-7.png
    - первые 6 регистров с PSW30 по PSW35 это время в панели, формируем "Штамп времени"

    - следом идет выборка 11 регистров PFW с адреса PFW(500 + PSW(40)*11). Здесь используется динамическая адресация http://www.owen.ru/forum/showthread....l=1#post102292 Индексный регистр PSW40 и множитель 11 определяют символы какого сообщения нужно брать для формирования строки.
    По существу в PSW40 находится номер сообщения.
    Если PSW40=0, то символы сообщения начинаются с адреса PFW(500 + 0*11)=PSW500
    PSW40=1, то символы сообщения начинаются с адреса PFW(500 + 1*11)=PSW511
    PSW40=2, то символы сообщения начинаются с адреса PFW(500 + 2*11)=PSW522
    PSW40=3, то символы сообщения начинаются с адреса PFW(500 + 3*11)=PSW533
    См. п.3 и будет понятно почему там эти адреса.
    Тут же получился ответ на
    "Еще у вас есть 4 функционал. области, которые запускаются по включению битов ПЛК. Они присваивают значение регистру PSW40(от 0 до 3) и включают бит PSB1000"

    - следом идет выборка значения из регистра ПЛК 4x0 - Объем
    - в конце идет выборка значения из регистра ПЛК 4x1 - Производительность

    И так строку сформировали. Её длина 6+11+1+1=19 регистров Теперь она будет размещена в области хранилища(регистрах PFW панели) по адресу, указатель которого находится в кольцевом буфере. Первая строка будет с PSW1004 (1000+4)
    Захват-8.png
    Указатель адреса увеличивается на 19, т.е. вторая строка будет начинаться с PFW1023.
    И т.д.

    Ну вот в общих чертах как-то так.

    ЗЫ.
    "Бит PSB1000 включает архивирование и вызывает еще одну функциональную область, которая на 1 сек выключает этот же бит PSB1000."
    Только не на одну секунду, а однократно, через одну секунду
    Без этой ф.области архивирование остановится после перовой строки, нужно же сбросить PSB1000 и ждать следующего события.

    ЗЫ.2
    Если будете сами делать сообщения или изменять мои, то следует учесть
    1. Для строки длинной 22 символа нужно 11 регистров (В одном регистре два байта, т.е. два символа)
    2. Байты в тексте расположены по порядку, а в массиве регистров PFW нужно их расположить "хитрым" способом,переставляя символы местами
    Как-то так
    :
    Последний раз редактировалось petera; 19.10.2016 в 21:09.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #10

    По умолчанию

    petera , Вы очень понятно все объяснили, очень благодарен Вам! Осталось еще несколько мелких вопросов:
    1. Так как изначально мы аварии и события разнесли по разным таблицам(Историческая таблица и таблица отображения данных соответственно), то динамика вывода аварий и сообщений немного отличается: В Исторической таблице при появлении нового сообщения оно пишется в конец таблицы, а в таблице отображения данных в начало. Можно ли это как нибудь изменить?
    2. Элемент Архивирование на USB. Правильно ли я понимаю, что этот элемент в нашем случае работает следующим образом: При появлении фронта сигнала записи(PSB1000) происходит перенос всех регистров, указанных во вкладке "Данные", в область памяти, начинающуюся с адреса регистра, указанного во вкладке "Хранилище" (PFW1000)? Просто мне не понятен вот какой момент: Элемент Архивирование на USB пишет в область с адреса PFW1000, но т.к. включен режим цикл. таблицы, то он получается пишет в адрес PFW1004, хотя он не знает, что область PFW1000 - это область данных таблицы, у которой как оказывается включен режим цикл. записи и из-за этого фактически нужно писать в регистр PFW1004. Как он это определяет?
    3. Тот же элемент Архивирование на USB. Вопрос вытекает из пункта 2. При записи второй строчки данных в таблицу, элемент Архивирование на USB пишет все в тот же регистр, который указан во вкладке "Хранилище", т.е. PFW1000 ? Как он понимает, что вторую строчку нужно писать уже в регистр PFW1023?
    4. Элемент Архивирование на USB. Вкладка "Архив". На что в нашем случае будет влиять параметр "Количество записей в файле"=15? элемент Архивирование на USB пишет же построчно, не важно сколько будет записей. Или я ошибаюсь?
    5. В элементе Таблица отображения данных если я захочу, чтобы память событий составляла, скажем 50 значений(строк), хватит ли мне памяти при текущих условиях? У меня же еще будет Историческая таблица с авторазмещением в памяти PSW, не пересекутся ли области памяти друг с другом?

Страница 1 из 8 123 ... ПоследняяПоследняя

Похожие темы

  1. Ответов: 9
    Последнее сообщение: 11.10.2016, 14:57
  2. Удаление сообщений из журнала
    от Dima1991 в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 27.05.2016, 14:15
  3. Передача журнала событий (файла) из ПЛК в OPC через модем
    от Alex12345 в разделе Сетевые технологии
    Ответов: 0
    Последнее сообщение: 14.05.2015, 12:51
  4. Проблема с выводом текста
    от CLPE в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 17.01.2011, 12:51
  5. Проблема с журналами хронологии событий в СП270
    от KirVR в разделе Панели оператора (HMI)
    Ответов: 8
    Последнее сообщение: 16.07.2009, 19:11

Метки этой темы

Ваши права

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