PDA

Просмотр полной версии : СП270 маскирование данных



SokolovS
12.12.2013, 16:41
Приветствую
Имеется панель СП270 (мастер в сети 485) и подчинённое устройство
В подчинённом записывается состояние нескольких насосов (4 байта)
Состояние каждого насоса кодируется четырьмя битами, всего девять возможных состояний
Лампы могут отображать состояние только одного бита
Динамические тексты только в зависимости от значения целиком в регистре
Соответственно, вопрос:
Существует ли возможность отобразить верное состояние каждого насоса?

capzap
12.12.2013, 16:45
Соответственно ответ: существует

Панель поддерживает выполнение скриптов, там и можно выделить маску

SokolovS
12.12.2013, 16:54
Выходит, это единственный способ?
Скриптом забирать значение регистра, разбирать и складывать во внутреннюю память, откуда эти значения уже будут забирать элементы?
Есть где-нибудь пример такого скрипта? У меня нет опыта написания.

SokolovS
13.12.2013, 09:16
Не знаю маска или нет, вот что хранится в регистре

0-3 биты: насос 1
4-7 биты: насос 2
8-11 биты: насос 3
Состояние насоса описывается:
0-1 биты:
0 - выкл
1 - вкл
2 - авария
3 - работа от ПЧ/УПП
2-3 биты:
0 - отключен
1 - резервный
3 - рабочий

SokolovS
16.12.2013, 09:34
Хм
А где взять конфигуратор 2.C6i? На сайте есть только 2.C.6F

petera
16.12.2013, 22:16
Приветствую
Имеется панель СП270 (мастер в сети 485) и подчинённое устройство
В подчинённом записывается состояние нескольких насосов (4 байта)
Состояние каждого насоса кодируется четырьмя битами, всего девять возможных состояний
Лампы могут отображать состояние только одного бита
Динамические тексты только в зависимости от значения целиком в регистре
Соответственно, вопрос:
Существует ли возможность отобразить верное состояние каждого насоса?

Выходит, это единственный способ?
Скриптом забирать значение регистра, разбирать и складывать во внутреннюю память, откуда эти значения уже будут забирать элементы?
Есть где-нибудь пример такого скрипта? У меня нет опыта написания.
Это не единственный способ.
Это Стандартные лампы отображают состояние одного бита.
А не стандартные могут отображать несколько состояний, и сразу в соответствии с "маской", без предварительного разбора и без скриптов.:rolleyes:
Например так
http://www.owen.ru/forum/attachment.php?attachmentid=11766&d=1391766874
Каждый индикатор отображает

2-3 биты:
0 - отключен
1 - резервный
3 - рабочий
При чем имеет настройки на нужные биты
11078
И можно сделать разные цвета текста/фона для состояний
11079

А вот по битам

Состояние насоса описывается:
0-1 биты:
0 - выкл
1 - вкл
2 - авария
3 - работа от ПЧ/УПП
не понятно, нужен один индикатор на 4 состояния или их должно быть больше? Один для выкл, вкл и авария и второй работа от ПЧ/УПП.
Если нужен один индикатор, то он практически такой же, как и для битов 2-3.

UPD
Вложение можно скачать здесь https://drive.google.com/open?id=0B1ENDtxOet_ia1RlYlhxdW9sRGs

petera
16.12.2013, 22:59
Продолжение со всеми битами
http://www.owen.ru/forum/attachment.php?attachmentid=11767&d=1391767071

UPD
Вложение можно скачать здесь https://drive.google.com/open?id=0B1ENDtxOet_iY0hyQjdmTGhUaWM

SokolovS
17.12.2013, 09:35
Хм
Пробую разобраться как работает

Может, подскажете по работе панели, при использовании таких элементов сколько запросов она будет посылать в сумме?

petera
17.12.2013, 12:36
Может, подскажете по работе панели, при использовании таких элементов сколько запросов она будет посылать в сумме?
Вопрос правильный.:)
Я думаю, что не один. Причем количество будет переменным и зависеть от текущего состояния битов в регистре ПЛК.
Если панель мастер и регистров в слейве несколько десятков, то лучше читать все регистры ПЛК в регистры PSW панели, например ф.областью (свойство глобальная). И для вывода на панель(лампы, дисплеи) использовать локальные копии из PSW. В этом случае будет использоваться один запрос на чтение всей группы регистров.
А для элементов ввода нужно использовать сразу регистры и биты ПЛК, т.к. операции ввода с панели выполняются не часто.
У элементов ввод данных есть возможность разделить регистры для вывода и ввода.
Например для Цифрового ввода
11083
Аналогично и для переключателя с подсветкой.

Ну а в данном случае если всего один экран и один регистр ПЛК, то предлагаю читать его в регистр PSW (один запрос) и в индикаторах состояния насосов использовать биты регистра PSW. Операцию регистр ПЛК-->регистр PSW можно делать стандартной ф.областью или как в примере ниже с помощью графического макроса http://www.owen.ru/forum/showthread.php?t=14191&p=101623&viewfull=1#post101623
11084
11085

UPD
Вложение можно скачать здесь https://drive.google.com/open?id=0B1ENDtxOet_iQWtUU2FhRVFmQWc

Вот, как это работает.
http://www.owen.ru/forum/attachment.php?attachmentid=11768&d=1391767221

petera
17.12.2013, 13:27
Или можно поступить так.
Регистр ПЛК копировать не в PSW, а PSB!
11087
Т.е можно сразу разобрать регистр, например 4х0, на отдельные биты в памяти PSB. И запрос к ПЛК будет один.
4х0.00 --> PSB256
4х0.01 --> PSB257
4х0.02 --> PSB258
.........................
4х0.15 --> PSB271
Смотреть пост "PACK и UNPAC или как собрать из PSB один регистр" http://www.owen.ru/forum/showthread.php?t=14132&p=113560&viewfull=1#post113560

В этом случае в индикаторах состояния насосов будут использоваться биты PSB
11088

Работать это будет так
http://www.owen.ru/forum/attachment.php?attachmentid=11769&d=1391767331

UPD
Вложение можно скачать здесь https://drive.google.com/open?id=0B1ENDtxOet_iRUQ4MEU5RnNyQnc

SokolovS
17.12.2013, 14:27
Частоту опроса в таком случае задавать возможно?

petera
17.12.2013, 14:47
Частоту опроса в таком случае задавать возможно?
А чем Вас не устраивает максимально возможная частота опроса?
11090

SokolovS
17.12.2013, 15:17
Это хороший вопрос
Просто привык, что везде можно
Всё работает, спасибо
Правда, всё ещё надеюсь увидеть решение в виде скрипта, для сравнения.
Привычка писать текстом всё же своё играет, да и интерфейс графических макросов не отличается дружелюбностью

petera
17.12.2013, 15:52
Это хороший вопрос
Просто привык, что везде можно
Всё работает, спасибо
Правда, всё ещё надеюсь увидеть решение в виде скрипта, для сравнения.
Привычка писать текстом всё же своё играет, да и интерфейс графических макросов не отличается дружелюбностью
Решение в виде скрипта уже было, на Си нельзя сделать графические элементы и нельзя динамически менять их состояние, только логические и математические операции или обмен с периферией.

SokolovS
17.12.2013, 16:09
Было, но у себя я его так и не открыл

нельзя динамически менять их состояниеЭто уже что-то
В смысле, что достучаться из скрипта до свойств графики невозможно?
Как-то это странно

petera
17.12.2013, 16:33
Было, но у себя я его так и не открыл
Это уже что-то
В смысле, что достучаться из скрипта до свойств графики невозможно?
Как-то это странно
Только если в скрипте рисовать по точкам.:rolleyes:
На языке ГМ сделаны все стандартные графические элементы из комплекта поставки кнфигуратора. Он и есть основа для создания графического интерфейса панели.

ЗЫ. Скрипты не работают в эмуляции, и это минус очень усложняет отладку проекта.

SokolovS
18.12.2013, 09:16
А, вы сообщение редактировали
У меня на это оповещения не настроены
Спасибо, общий смысл понятен