Вход

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



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

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

В любом случае нужно разделить аварии и события на два журнала, т.к. они разные по структуре
Под авариями я понимаю только строковые сообщения
"Авария насоса"
"Утечка хлора"
и т.д.
Под событиями я понимаю - "Сообщение"+регистр плк.
В этом случае журнал аварий - это стандартная историческая таблица, без третьего столбца, как здесь http://www.owen.ru/forum/showthread.php?t=24758&p=223150&viewfull=1#post223150

Журнал событий можно будет сделать из Таблицы отображения данных, в ней можно отображать и Сообщения и значения регистров ПЛК в одной строке.
Как засунуть в эту таблицу события можно подумать, вполне реализуемая задача.
Только, что значит

строки, содержимое которых заведомо неизвестно, строка будет состоять из "Сообщение"+регистр плк
Это, что неизвестно даже какой текст нужно выводить?
Или Вы уже знаете перечень возможных сообщений и соответствующих им номеров регистров ПЛК с цифровыми значениями?

g0r0d0k
19.10.2016, 11:04
Благодарю за скорый ответ, petera!

В любом случае нужно разделить аварии и события на два журнала, т.к. они разные по структуре
Под авариями я понимаю только строковые сообщения
"Авария насоса"
"Утечка хлора"
и т.д.
Под событиями я понимаю - "Сообщение"+регистр плк.
В этом случае журнал аварий - это стандартная историческая таблица, без третьего столбца, как здесь http://www.owen.ru/forum/showthread.php?t=24758&p=223150&viewfull=1#post223150


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


Журнал событий можно будет сделать из Таблицы отображения данных, в ней можно отображать и Сообщения и значения регистров ПЛК в одной строке.
Как засунуть в эту таблицу события можно подумать, вполне реализуемая задача.
Только, что значит
"строки, содержимое которых заведомо неизвестно, строка будет состоять из "Сообщение"+регистр плк"
Это, что неизвестно даже какой текст нужно выводить?
Или Вы уже знаете перечень возможных сообщений и соответствующих им номеров регистров ПЛК с цифровыми значениями?

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

petera
19.10.2016, 12:21
Благодарю за скорый ответ, petera!


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


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

В нее мне нужно будет вносить строчку, состоящую из 3-ех полей: "Сообщение", значение регистра1, значение регистра 2.
Наверно Вы забыли еще одно поле - Штамп времени?

Каким образом работает элемент таблица
В таблице отображается массив структур.
В Вашем случае структура - это одна строка таблицы
"Штамп времени", "Сообщение", "значение регистра 1", "значение регистра 2"
Выглядеть это будет например так
27097
При этом, длину сообщения я задал 22 символа исходя из длинны "Ручной останов насоса".
Настройки таблицы
27098

27100

27101

27102

27103

27104

Про остальное позже.

petera
19.10.2016, 13:11
Можете пока поиграться с журналом.
Заполняем его вручную.
Если внешний вид журнала Вас устраивает, то будем двигаться дальше, т.е. заполнять его автоматически по событиям.

https://www.youtube.com/watch?v=G7_a_-Sm0oE

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

petera
19.10.2016, 15:34
Большое спасибо вам, 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). А первые четыре регистра используются под адреса циклического буфера.

Также эти данные должны циклически перезаписываться, если в таблице уже не осталось выделенного места. Это возможно?
Циклический буфер и позволяет это делать

Просто в этом случае мне придется формировать массив в ПЛК, строки которого аналогичны строкам данной таблицы и передавать их по одной строке в панель, что очень не удобно
Мы так делать не будем.
От ПЛК нужно всего
- два регистра Объем и Производительность
- и биты событий.
Никаких массивов в ПЛК делать не нужно.
Все будет делать сама панель, например так

https://www.youtube.com/watch?v=rbYv9JpAN9Q

ЗЫ.
Если у меня получилось то, что Вы хотели, спрашивайте, не стесняйтесь, как я это сделал. Потому, что не все в проекте очевидно.
Например где я беру тексты сообщений или при чем здесь "Архивирование на USB"

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

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

Разъяснять буду,
А сейчас кратко
1."Еще пометка - если я не ошибаюсь адрес регистра "Объем дозации" не должен быть тем же, что и у битов управления события."
Совершенно верно подмечено! В реальном проекте биты управления событиями нужно присвоить другие адреса.

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

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

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

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

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

- следом идет выборка 11 регистров PFW с адреса PFW(500 + PSW(40)*11). Здесь используется динамическая адресация http://www.owen.ru/forum/showthread.php?t=14132&p=102292&viewfull=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)
27127
Указатель адреса увеличивается на 19, т.е. вторая строка будет начинаться с PFW1023.
И т.д.

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

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

ЗЫ.2
Если будете сами делать сообщения или изменять мои, то следует учесть
1. Для строки длинной 22 символа нужно 11 регистров (В одном регистре два байта, т.е. два символа)
2. Байты в тексте расположены по порядку, а в массиве регистров PFW нужно их расположить "хитрым" способом,переставляя символы местами
Как-то так
http://www.owen.ru/forum/attachment.php?attachmentid=17267&d=1426925504

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

petera
20.10.2016, 11:21
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. Так как изначально мы аварии и события разнесли по разным таблицам(Историческая таблица и таблица отображения данных соответственно), то динамика вывода аварий и сообщений немного отличается: В Исторической таблице при появлении нового сообщения оно пишется в конец таблицы, а в таблице отображения данных в начало. Можно ли это как нибудь изменить?
А давайте ка перевернем таблицу по вертикали.:rolleyes:
После этого первой строкой будет самая нижняя, а последней - самая верхняя.
После "переворота" таблица визуально будет заполняться с нижней строки
Но для начала нужно выключить в таблице строку с заголовками иначе они после "переворота" будут внизу
27134
Я думаю, что такие заголовки Вам не нужны, по этому нарисуем их сами, отдельно от таблицы

https://www.youtube.com/watch?v=fUgupm1GeZw
Чтобы "перевернуть" таблицу по вертикали нужно задать отрицательные значения для высоты строки (и заголовка, если устраивает, что он будет внизу)

https://www.youtube.com/watch?v=9wA9Tbt9C0o
Однако действия кнопок перехода по записям для перевернутой таблицы визуально меняются местами. По этому поменяем на них значки со стрелками на противоположные

https://www.youtube.com/watch?v=XNnmSbBCIyc
А теперь если убрать столбец с "№", то получится таблица практически не отличающаяся от исторической. Особенно когда в нашей таблице будут заполнены все строки.

https://www.youtube.com/watch?v=rOdpKhTEd1w

g0r0d0k
20.10.2016, 12:20
Чтобы "перевернуть" таблицу по вертикали нужно задать отрицательные значения для высоты строки (и заголовка, если устраивает, что он будет внизу)

Отрицательные значения для высоты строки :D В жизни бы не догадался... Вы случайно не участвовали в разработке ПО для этих панелей?:)
P.S. С нетерпением жду дальнейших ответов...

petera
20.10.2016, 12:35
Отрицательные значения для высоты строки :D В жизни бы не догадался... Вы случайно не участвовали в разработке ПО для этих панелей?:)
P.S. С нетерпением жду дальнейших ответов...

В разработке не участвую, только углубленно изучаю возможности этих панелей.
Просто люблю использовать нетривиальные (необычные) способы при решении казалось бы неразрешимых задач.

petera
20.10.2016, 13:18
Отрицательные значения для ширины, высоты, а так же для координат X, Y элементов вполне нормальное явление. Ведь они задаются десятичными числами, а эти числа как известно бывают и положительными и отрицательными.
Так почему не использовать эту особенность.
Кроме того ширина, высота, а так же координаты X, Y объектов не ограничены физическими размерами экрана.
Например, если X<0, то объект начинается за пределами экрана слева, а если X>800, то объект начинается за пределами экрана справа.
Но он есть! И этим нужно пользоваться.
Например как можно сделать бегущий текст снизу в верх? Бегущая строка есть штатная, а по вертикали? Слабо?

https://www.youtube.com/watch?v=DVoadozuEls
Т.е. хотя экран панели 800х480, мы в принципе можем сделать его "безразмерным" и сдвигать изображение в процессе работы влево, вправо, вверх или низ.

g0r0d0k
20.10.2016, 14:21
Да, интересная реализация бегущей строки:)

petera
20.10.2016, 14:25
5. В элементе Таблица отображения данных если я захочу, чтобы память событий составляла, скажем 50 значений(строк), хватит ли мне памяти при текущих условиях? У меня же еще будет Историческая таблица с авторазмещением в памяти PSW, не пересекутся ли области памяти друг с другом?
Самый простой вопрос, про остальные я знаю, но пока не могу сообразить, как бы доходчиво все это объяснить.
Ну для Исторической таблицы нужно использовать не PSW, а PFW иначе зачем такая история, которая при пропадании питания исчезнет.

1. Мы ранее посчитали количество регистров в одной выборке (пост #9)

И так строку сформировали. Её длина 6+11+1+1=19 регистров
2. Вы хотите в таблице иметь 50 строк, значит для них потребуется 19*50=950 регистров, сюда прибавим 4 регистра(адреса кольцевого буфера), итого 950+4=954 регистра.
Начало размещения нашей таблицы мы задали - PFW1000, тогда последний регистр, используемый в таблице - PFW1953.
А граница Авто размещения для графиков и таблиц в области PFW начинается с регистра PFW4096. Т.е. никакого перекрытия с нашей таблицей не будет.

petera
20.10.2016, 15:24
4. Элемент Архивирование на USB. Вкладка "Архив". На что в нашем случае будет влиять параметр "Количество записей в файле"=15? элемент Архивирование на USB пишет же построчно, не важно сколько будет записей. Или я ошибаюсь?
Конечно построчно, но не поверху же предыдущей строки, а последовательно друг за другом, пока не исчерпается очередь из 15 строк("Количество записей в файле"=15). Однако физически будет сформировано на одну строку больше, т.е. 16.
По этому, если в таблице Вы хотите увидеть 50 строк, то в настройках Архивирования нужно указать "Количество записей"=49.


2. Элемент Архивирование на USB. Правильно ли я понимаю, что этот элемент в нашем случае работает следующим образом: При появлении фронта сигнала записи(PSB1000) происходит перенос всех регистров, указанных во вкладке "Данные", в область памяти, начинающуюся с адреса регистра, указанного во вкладке "Хранилище" (PFW1000)? Просто мне не понятен вот какой момент: Элемент Архивирование на USB пишет в область с адреса PFW1000, но т.к. включен режим цикл. таблицы, то он получается пишет в адрес PFW1004, хотя он не знает, что область PFW1000 - это область данных таблицы, у которой как оказывается включен режим цикл. записи и из-за этого фактически нужно писать в регистр PFW1004. Как он это определяет?
3. Тот же элемент Архивирование на USB. Вопрос вытекает из пункта 2. При записи второй строчки данных в таблицу, элемент Архивирование на USB пишет все в тот же регистр, который указан во вкладке "Хранилище", т.е. PFW1000 ? Как он понимает, что вторую строчку нужно писать уже в регистр PFW1023?
Короче, как работает Архивирование и что куда пишется Вы можете посмотреть так.

1. Уменьшим количество записей для выборки до 5, а в таблице соответственно кол. строк уменьшим до 6.
2. Отключим в таблице использование "Циклического буфера".
3. Т.к. Цикл. буфер не используем, то начальный регистр для таблицы изменим на 1004.

https://www.youtube.com/watch?v=oo2KjT1mFd0
Я добавил два дисплея для отображения адресов Головы(PFW1000) и Хвоста(PFW1002) очереди данных (Циклический буфер)
Теперь хорошо видно как и по какому адресу происходит запись каждого события.

petera
20.10.2016, 15:54
Из предыдущего видео видно, что ничто не стирается и не переписывается.
Самый главный элемент здесь - Архивирование, он активный и он формирует записи и модифицирует адреса головы и хвоста циклического буфера.
Таблица же - пассивный элемент. Это окошко, через которое можно посмотреть содержимое регистров, не более.
И так у Архивирования есть очередь записей, в нашем случае очередь из 16 записей. И есть адреса первого(PSW1000) и последнего(PSW1002) элемента в этой очереди.
27143
В исходном состоянии очередь пуста, адрес головы и хвоста =1004.
По команде запись, адрес головы увеличивается на одну запись(на 19 регистров), происходит запись по адресу головы, и так до тех пор, пока очередь не переполнится, т.е не произойдет запись последнего элемента в очереди.
При переполнении очереди следующая запись происходит не по адресу 1099, а по адресу первого элемента очереди - 1004, т.к. происходит сброс адреса головы исходное состояние - 1004.
Таким образом 7-ая запись записывается на место самой старой - 1-ой.
И очередь записей получается зацикленной. Более новые события записываются на место самых старых.
И в таблице с откл. Цикл. буфером это хорошо видно, т.к. адреса строк будут фиксированными.
А когда мы в таблице вкл. использовать цикл.буфер, то адрес первой строки в таблице не будет постоянным, а будет соответствовать адресу Головы очереди, т.е будет динамически меняться.

ЗЫ.
Элементу Архивирование по барабану есть у нас таблица или нет ее вовсе.
Это мы в своей таблице должны "подстраиваться" под архивирование
Элементу Архивирование нужны адреса циклического буфера - четыре регистра, естественно разместить их в начале области выделенной под архив(задается в настройках архивирования). Соответственно Архивирование знает, что очередь записей начинается с адреса, заданного ему в настройках+4.

Элемент архивирования встроен в графики и даже в историческую таблицу, просто Вы их не видите как отдельные элементы.

g0r0d0k
21.10.2016, 10:50
petera Спасибо за объяснение! Все доходчиво рассказали. Благодарю вас :) Если походу будут появляться вопросы - буду задавать.

g0r0d0k
21.10.2016, 15:55
petera, вот и вопрос появился. Сейчас вставил вашу таблицу в свой проект на отдельный экран. Все работает, но почему-то при появлении первого события(первый раз нажимаем на любой тумблер) в таблицу запись не происходит, записывает данные только после первого события. Что может быть не так? В таком же варианте в отдельном проекте работает(повторюсь, была просто скопирована страница в мой проект).
Попробуйте в режиме эмуляции запустить, на остальные элементы и страницы проекта не обращайте внимания. При старте проекта появляется страница - нажимаем кнопку главное меню, вводим пароль "11", появляется окно, в котором нажимаем на кнопку "Журнал событий".
Прикрепляю 2 варианта:

1) Проект №1 с одной страничкой, где все работает
27178

2) Проект №2 комплексный со страничкой, которая вставлена из проекта №1.
27179

Регистры панели в проекте больше нигде не использую, кроме таблицы аварий, но там область авторазмещения.

petera
21.10.2016, 16:30
petera, вот и вопрос появился. Сейчас вставил вашу таблицу в свой проект на отдельный экран. Все работает, но почему-то при появлении первого события(первый раз нажимаем на любой тумблер) в таблицу запись не происходит, записывает данные только после первого события. Что может быть не так? В таком же варианте в отдельном проекте работает(повторюсь, была просто скопирована страница в мой проект).
Попробуйте в режиме эмуляции запустить, на остальные элементы и страницы проекта не обращайте внимания. При старте проекта появляется страница - нажимаем кнопку главное меню, вводим пароль "11", появляется окно, в котором нажимаем на кнопку "Журнал событий".
Прикрепляю 2 варианта:

1) Проект №1 с одной страничкой, где все работает
27178

2) Проект №2 комплексный со страничкой, которая вставлена из проекта №1.
27179

Регистры панели в проекте больше нигде не использую, кроме таблицы аварий, но там область авторазмещения.

Я же обращал Ваше внимание на то, что

Однако физически будет сформировано на одну строку больше, т.е. 16.
По этому, если в таблице Вы хотите увидеть 50 строк, то в настройках Архивирования нужно указать "Количество записей"=49
Наверно Вы не обратили внимание, повторю
Архивирование ВСЕГДА делает на одну "строчку" больше, чем указано в настройках. По этому если у Вас в Архивировании задано Кол. записей 5, то в таблице нужно сделать 6 строк, а у Вас 5.
Кроме того все ф.области на моем экране д.б. Глобальными и элемент "Архивирование на USB" то же. Но это замечание дополнительное.

g0r0d0k
21.10.2016, 21:24
petera, Вопрос с первой записью прошу отложить, т.к. после первой записи все отлично. Появился куда большая проблема, касающаяся того же журнала событий. В таблицу отображения данных не происходит запись, если мы находимся на другом экране проекта(а в режиме дозации мы всегда находимся в других страничках, и лишь иногда заходим на экран "журнал событий"). Биты событий с ПЛК приходят, но так как экран "Таблица вывода данных" у нас в основном не активный, то пока мы на других страничках - не записывается ни одна строчка. Если же мы переходим на этот экран с таблицей, то все отлично записывается. С таблицей аварий такого не наблюдается, там все записывается отлично. Я думаю, что это связано с тем, что панель СП307 у меня находится в режиме Master, и работает только с теми переменными, которые находятся на активном окне. Но я могу и ошибаться. В режим Slave перейти уже возможности нет, практически весь проект разработан.
Помогите мне пожалуйста с решением этой проблемы.

P.S. Вопрос решен, извините,не увидел ваше предыдущее сообщение.

Вот вы говорите:


Наверно Вы не обратили внимание, повторю
Архивирование ВСЕГДА делает на одну "строчку" больше, чем указано в настройках. По этому если у Вас в Архивировании задано Кол. записей 5, то в таблице нужно сделать 6 строк, а у Вас 5.
Кроме того все ф.области на моем экране д.б. Глобальными и элемент "Архивирование на USB" то же. Но это замечание дополнительное.


Я обращал внимание на эту фразу и сразу попробовал, но к сожалению корректно работало только с одинаковым количеством строк и в таблице и в архивировании USB. Если сделать как вы написали (в архивировании 5 записей, а в таблице 6 строк, то когда приходит 6-е событие по счету, то в таблицу вставляется после пятой строчки пустая, а потом уже на 7-ой строчке наше шестое событие. Вот скрин
27189

Прикрепляю пример этого же проекта, с которого сделан скрин:
27190

petera
22.10.2016, 01:38
Так 5 или 6 строк должно быть в таблице?
Тут надо признаться, что я в процессе обсуждения и сам запутался и Вас чуть не запутал.

И так.
Архивирование ВСЕГДА делает на одну запись больше чем указано в настройках. Это так. Это обусловлено алгоритмом работы циклического буфера.
А что, с таблицей?
Если в таблице откл. Использовать циклический буфер, тогда в таблице ВСЕГДА нужно делать на одну строчку больше, чем указано в настройках архивирования.
Если в таблице вкл. Использовать циклический буфер, тогда в таблице и в настройках архивирования ВСЕГДА нужно делать одинаковое количество.

По этому у Вас с пятью строками в таблице все верно.

Технос
14.11.2016, 09:43
Petera, здравствуйте!!!

Подскажите пожалуйста, если взять стандартную историческую таблицу, как найти в панели область памяти, где размещён текст реакции на события

27570

Поставил галочку, что таблица размещается с PFW3000
перебираю память, но никак не найду никакого текста :confused:

Rake Runner
14.11.2016, 09:50
Petera, здравствуйте!!!

Подскажите пожалуйста, если взять стандартную историческую таблицу, как найти в панели область памяти, где размещён текст реакции на события

27570

Поставил галочку, что таблица размещается с PFW3000
перебираю память, но никак не найду никакого текста :confused:

C PFW3000 у вас метки времени событий будут лежать. Вряд ли текст событий доступен для редактирования в явном виде.

Технос
14.11.2016, 10:28
Конечно, сначала метки времени, а затем должен быть текст. Ведь он сохраняется в панели.

Пример, который показал Petera, это подтверждает.
Только где он в памяти, какое смещение не могу понять.

capzap
14.11.2016, 10:31
Конечно, сначала метки времени, а затем должен быть текст. Ведь он сохраняется в панели.

Пример, который показал Petera, это подтверждает.
Только где он в памяти, какое смещение не могу понять.
а не допускаете, чтоб экономить место текст сообщения может каким нибудь простейшим способом сжиматься

Rake Runner
14.11.2016, 10:36
Конечно, сначала метки времени, а затем должен быть текст. Ведь он сохраняется в панели.

Пример, который показал Petera, это подтверждает.
Только где он в памяти, какое смещение не могу понять.

А пример, который показывал Petera, он разве про историческую таблицу?

petera
14.11.2016, 10:55
Petera, здравствуйте!!!

Подскажите пожалуйста, если взять стандартную историческую таблицу, как найти в панели область памяти, где размещён текст реакции на события

27570

Поставил галочку, что таблица размещается с PFW3000
перебираю память, но никак не найду никакого текста :confused:
Соглашусь с этим ответом:

C PFW3000 у вас метки времени событий будут лежать. Вряд ли текст событий доступен для редактирования в явном виде.
Тексты сообщений находятся в массиве, который находится в структуре самого элемента "Историческая таблица". Массив заполняется текстами при редактировании свойств таблицы. Тексты недоступны даже в расширенном режиме.

Непонятно, зачем Вам менять тексты извне?
Однако можно сделать и переменные тексты.:rolleyes:

Технос
14.11.2016, 10:56
а не допускаете, чтоб экономить место текст сообщения может каким нибудь простейшим способом сжиматься

я допускаю, что у нашего ВОЛШЕБНИКА есть решение )))

petera
14.11.2016, 11:37
Конечно, сначала метки времени, а затем должен быть текст. Ведь он сохраняется в панели.

Пример, который показал Petera, это подтверждает.
Только где он в памяти, какое смещение не могу понять.

Нет, текста в выборке нет.
Структура одной записи в памяти панели
Метка времени события(Год, Месяц, День, Час, Минута), Номер события(просто число WORD), Флаг квитирования(0 или 1, формат WORD), метка времени квитирования(Год, Месяц, День, Час, Минута).
ИТОГО 12 регистров WORD.
ЗЫ.
Номер события(просто число WORD) это и есть индекс массива текстов, но "Массив заполняется текстами при редактировании свойств таблицы. Тексты недоступны даже в расширенном режиме."
Т.е. в явном виде тексты невидны.

petera
14.11.2016, 11:37
я допускаю, что у нашего ВОЛШЕБНИКА есть решение )))

Решение чего?

Технос
14.11.2016, 11:38
Petera, что значит переменные тексты?

Технос
14.11.2016, 11:45
Решение чего?


Пусть есть текст сообщения

Авария 0001

Хотелось бы обработать аварию (по событию) и заменить текст,
заменить цифру 1 на другое значение (от 0 до 9999), после этого в таблице образуется запись. что бы не создавать в таблице множество однотипных строчек, да и столько в таблице не разместишь.

Если такое возможно, то это будет альтернатива описанного выше приёма

Технос
14.11.2016, 11:48
Нет, текста в выборке нет.
Тексты недоступны даже в расширенном режиме.


Где то всё равно хранятся ..

petera
14.11.2016, 11:49
Пусть есть текст сообщения

Авария 0001

Хотелось бы обработать аварию (по событию) и заменить текст,
заменить цифру 1 на другое значение (от 0 до 9999), после этого в таблице образуется запись. что бы не создавать в таблице множество однотипных строчек, да и столько в таблице не разместишь.

Если такое возможно, то это будет альтернатива описанного выше приёма

Заменится все! Т.е. предыдущего текста больше не будет.

https://www.youtube.com/watch?v=uckJwy52CA0

capzap
14.11.2016, 11:55
Заменится все! Т.е. предыдущего текста больше не будет.

а что, такого нет?

petera
14.11.2016, 12:01
а что, такого нет?

Такого нет. Да и не спасет такое, ведь в выборке после метки времени идет индекс для массива предопределенных текстов, если поменять сам текст, то он заменится не только для новых событий но и для всех в истории с этим индексом.

Технос
14.11.2016, 12:03
Заменится все! Т.е. предыдущего текста больше не будет.
да, предполагал, но надежда была )

petera
14.11.2016, 12:03
Где то всё равно хранятся ..

Ну-ну, Фома Вы наш неверующий.:rolleyes:

Технос
14.11.2016, 12:05
а что, такого нет? Такого нет :(

petera
14.11.2016, 12:10
Но все равно, может кому сгодится.
Проект из #36
27578
В таблице
27582
сделал тексты событий (их пять штук) внешними.
Для каждого события сделал текст из 10 символов(5 регистров).
Тексты хранятся в PFW500 - 524.
27579 27580

Технос
14.11.2016, 12:13
capzap, а что за редактор используете? Дайте ссылочку на дистрибутив, пожалуйста

Технос
14.11.2016, 12:14
Но все равно, может кому сгодится.


Спасибо, пригодится обязательно!!! Интересно, если указано автоматически определяется область размещения,
то жёстко заданные регистры могут не всегда соответствовать или нет?

capzap
14.11.2016, 12:17
Такого нет. Да и не спасет такое, ведь в выборке после метки времени идет индекс для массива предопределенных текстов, если поменять сам текст, то он заменится не только для новых событий но и для всех в истории с этим индексом.
не факт, если журнал читается с накопителя, вернее событие записывается на флешку, а отображение идет уже с неё,то история не сменит текст, сейчас не смог найти проект, я записывал объем принятого молока с каждой машины и у каждого писался свой объем иначе зачем мне такой журнал

Технос
14.11.2016, 12:21
capzap, да мы с Вами земляки )))

родился в Кирове, живу в Нижнем

capzap
14.11.2016, 12:23
да, можно землячество открывать

Технос
14.11.2016, 12:24
да, можно землячество открывать

:rolleyes:

Технос
14.11.2016, 12:24
Что за редактор используете? Овеновские панели он поддерживает?

capzap
14.11.2016, 12:28
Что за редактор используете? Овеновские панели он поддерживает?

ответил в личку, панели нет

Технос
14.11.2016, 12:34
Спасибо, capzap, Petera,

Спасибо за Ваши ответы

petera
14.11.2016, 12:39
не факт, если журнал читается с накопителя, вернее событие записывается на флешку, а отображение идет уже с неё,то история не сменит текст, сейчас не смог найти проект, я записывал объем принятого молока с каждой машины и у каждого писался свой объем иначе зачем мне такой журнал

Ну мы же обсуждаем ОВЕН, а не сами знаете кого.
Дело в том, что таблица в СП состоит из двух частей
1. Выборка - которая записывает в память панели записи о каждом событии.
Структура одной записи в памяти панели
Метка времени события, Номер события(просто число WORD), Флаг квитирования(0 или 1, формат WORD), метка времени квитирования.
ИТОГО 12 регистров WORD.

2. Часть, собственно таблица которая читает записи из выборки и формирует тексты. Сами тексты событий жестко зашиты в массив. Доступ к нужному тексту осуществляется по индексу, который берется из выборки.

Т.е. в журнале нет текстов в явном виде. Таблица обрабатывается построчно. Для каждой строки берется одна запись из выборки по адресу циклического буфера. В каждой записи находится индекс, по которому из массива берется текст.
И если мы три дня назад записали в выборку событие с индексом "N", то оно там и останется с индексом "N". А Вы же хотите просто поменять сам текст в массиве. По этому все старые события с индексом "N" будут ссылаться на новый текст.

Менять надо не тексты в массиве таблицы, а индексы в выборке. Тогда можно решить эту задачу.

petera
14.11.2016, 12:49
Ну мы же обсуждаем ОВЕН, а не сами знаете кого.
Дело в том, что таблица в СП состоит из двух частей
1. Выборка - которая записывает в память панели записи о каждом событии.
Структура одной записи в памяти панели
Метка времени события, Номер события(просто число WORD), Флаг квитирования(0 или 1, формат WORD), метка времени квитирования.
ИТОГО 12 регистров WORD.

2. Часть, собственно таблица которая читает записи из выборки и формирует тексты. Сами тексты событий жестко зашиты в массив. Доступ к нужному тексту осуществляется по индексу, который берется из выборки.

Т.е. в журнале нет текстов в явном виде. Таблица обрабатывается построчно. Для каждой строки берется одна запись из выборки по адресу циклического буфера. В каждой записи находится индекс, по которому из массива берется текст.
И если мы три дня назад записали в выборку событие с индексом "N", то оно там и останется с индексом "N". А Вы же хотите просто поменять сам текст в массиве. По этому все старые события с индексом "N" будут ссылаться на новый текст.

Менять надо не тексты в массиве таблицы, а индексы в выборке. Тогда можно решить эту задачу.

ЗЫ.

Всего в таблице можно описать 32767 различных событий.

Технос
14.11.2016, 15:27
Всего в таблице можно описать 32767 различных событий.

.. у меня не получилось, как достичь этого?

petera
14.11.2016, 15:39
.. у меня не получилось, как достичь этого?

Что значит не получается?
Вам именно 32767 шт. надо?
27591 ---> 27592
повторить эти действия 327 раз и будет Вам счастье.

Технос
14.11.2016, 15:45
повторить эти действия 327 раз и будет Вам счастье.

а я то думал ..., в расширенных свойствах смотрю.. :rolleyes:

petera
14.11.2016, 15:48
а я то думал ..., в расширенных свойствах смотрю.. :rolleyes:

Смотреть нужно ЗДЕСЬ (https://www.youtube.com/watch?v=kYkVc7XkGO8), а не в расширенных свойствах

Технос
14.11.2016, 16:46
Petera, спасибо, разобрался.

Vovsav
12.07.2017, 22:13
Добрый день!
Использую историческую таблицу для формирования журнала аварийных событий.
Если ли возможность сохранения элементов исторической таблицы на USB?

Евгений Кислов
13.07.2017, 07:07
Добрый день!
Использую историческую таблицу для формирования журнала аварийных событий.
Если ли возможность сохранения элементов исторической таблицы на USB?

Добрый день. У самой таблицы такой возможности, к сожалению, нет - придется использовать отдельный элемент Архивирование на USB.

Vovsav
13.07.2017, 10:15
В таком случаю прошу помочь.
Есть "историческая таблица", формирование содержимого выполняется по тревогам, регистр хранилища - допустим, PFW3000.
Создаю "Архивирование на USB".
Судя по тому что написано в данной ветке выше первые 5 регистров (PFW3000-3004) - метка времени (word), затем (PFW3005) - номер события (word).
А как сохранить текстовое сообщение "исторической таблицы"?

Евгений Кислов
13.07.2017, 10:20
В таком случаю прошу помочь.
Есть "историческая таблица", формирование содержимого выполняется по тревогам, регистр хранилища - допустим, PFW3000.
Создаю "Архивирование на USB".
Судя по тому что написано в данной ветке выше первые 5 регистров (PFW3000-3004) - метка времени (word), затем (PFW3005) - номер события (word).
А как сохранить текстовое сообщение "исторической таблицы"?

Вам придется заранее создать список сообщений, которые вы будете хранить в регистрах панели в виде ASCII-кодов.
Через Файл - Создание рецептов, например. В элементе архивации выбрать тип переменной STRING и указать число регистров (обратите внимание - оно в два раза меньше кол-ва символов) сообщения.

Vovsav
13.07.2017, 10:27
Т.е. для каждого сообщения исторической таблицы сообщение в рецепте?
Как связать сообщение в рецепте с сообщением в исторической таблице?

Евгений Кислов
13.07.2017, 10:31
Т.е. для каждого сообщения исторической таблицы сообщение в рецепте?
Как связать сообщение в рецепте с сообщением в исторической таблице?

Связывать не надо. Историческая таблица и архивирование будут работать независимо друг от друга - получая сигналы от одних и тех же битов тревог.
На каждое сообщение вам потребуется один элемент Архивирование на USB с типом запуска - по срабатыванию бита.

Можно обойтись и одним элементом архивирования, но тогда нужно будет каждый раз собирать сообщение через макросы (если используете биты регистров - тогда будет удобно сделать это через Switch/Case).

Vovsav
13.07.2017, 10:45
Этот вариант пригоден когда тревог немного, скажем до 10. А когда их 100-500 типов придется искать другой выход. Надо думать...

vniko
25.10.2017, 17:50
По мере составления проекта, возникли вопросы по применению исторической таблицы:
1. Возможно ли менять шрифт сообщений? (Шрифт заголовков меняется).
2. Возможно ли введение 2-х строчных сообщений, так как имеются длинные сообщения, которые не влезают в размеры экрана? (При попытке ввода сообщения в две строки, на экране отображается все равно одна строка. Заголовки же возможно вводить в несколько строк).
Прошу помощи у специалистов, как вывести на экран длинные сообщения.

Евгений Кислов
25.10.2017, 18:13
По мере составления проекта, возникли вопросы по применению исторической таблицы:
1. Возможно ли менять шрифт сообщений? (Шрифт заголовков меняется).
2. Возможно ли введение 2-х строчных сообщений, так как имеются длинные сообщения, которые не влезают в размеры экрана? (При попытке ввода сообщения в две строки, на экране отображается все равно одна строка. Заголовки же возможно вводить в несколько строк).
Прошу помощи у специалистов, как вывести на экран длинные сообщения.

1. Текст сообщений определяется в Настройках проекта, вкладка Шрифт.
2. Сообщения в несколько строк не поддержаны. Можно попробовать разбить одно сообщение на несколько, запускаемых от одного бита - но метки времени все равно будут у каждого свои.

vniko
26.10.2017, 11:10
1. Текст сообщений определяется в Настройках проекта, вкладка Шрифт.
Евгений, спасибо за информацию.
1. Вот что у меня получилось: Заметил, что данным способом изменяется только шрифт текста сообщений. Шрифт метки времени остается прежним, но меняется при изменении свойств таблицы (например шрифта в любом заголовке). Таким способом установил шрифт метки времени обычным, а шрифт текста сообщения полужирным. Величину шрифта конечно хотелось бы побольше, но с 12-м Tahoma, за исключением нескольких сообщений, в одну строчку остальные влезли. Несколькими буквами в нескольких сообщениях пожертвовал (остались за пределами экрана).

2. Сообщения в несколько строк не поддержаны.
2. Выяснил следующее:
Заголовок можно писать в несколько строк, но высоту строки заголовка увеличить невозможно.
Сообщение невозможно писать в несколько строк, но высоту строки сообщения увеличить можно.
В итоге, ни заголовок ни сообщение в две строки не напишешь. Может это ошибки Конфигуратора?

Евгений Кислов
26.10.2017, 11:39
Заголовок можно писать в несколько строк, но высоту строки заголовка увеличить невозможно.

Можно изменить его, растягивая таблицу через опорные точки. Но в явном виде такой настройки нет - вы правы.


В итоге, ни заголовок ни сообщение в две строки не напишешь. Может это ошибки Конфигуратора?

Скорее, особенности реализации. Не самые удачные, это верно.

petera
26.10.2017, 11:46
2. Выяснил следующее:
Заголовок можно писать в несколько строк, но высоту строки заголовка увеличить невозможно.
А подумать? Не судьба?
1. Растяните таблицу по вертикали так, чтобы все строки заголовков поместились
2. Верите высоту строк таблицы к первоначальному значению


https://www.youtube.com/watch?v=sP1PqJyMhRk

vniko
26.10.2017, 13:06
Евгений и Петр, спасибо за подсказку. Все оказывается очень просто.
А "особенность реализации" вероятно дала возможность задавать разные шрифты для меток времени и сообщений.

Заметил еще одну "особенность" исторической таблицы:
В Руководстве написано: "Обратите внимание, что квитирование сообщений возможно только при использовании
в качестве регистров хранения PFW регистров."
Проверил при сохранении в PSW регистрах, все верно. В дополнении и очистка таблицы при использовании регистров PSW так-же не возможна.
Но самое главное - при этом и квитирование и очистка выполняют свои функции, но не в области PSW, а в соответствующих регистрах области PFW.