PDA

Просмотр полной версии : ПР200 + СП307-Р + АСУ



Borserg
17.12.2016, 22:29
Уважаемые Гуру, обращаюсь к Вам за помощью.

Имеется связка (вернее пока проектируется): "Два компрессора со специализированными контроллерами <-> ПР200 (ModBus RTU Master)+ПР200 (ModBus RTU Slave) <-> СП307-Р (ModBus RTU Master)+СП307-Р (ModBus TCP Slave) <-> АСУ".

Связка "Два компрессора со специализированными контроллерами <-> ПР200 (ModBus RTU Master)" работает без проблем.
Также абсолютно нормально работает связка "Два компрессора со специализированными контроллерами <-> ПР200 (ModBus RTU Master)+ПР200 (ModBus RTU Slave) <-> Программа ModBus Poll (ModBus RTU Master)".

Теперь остается добавить в цепочку "СП307-Р (ModBus RTU Master)+СП307 (ModBus TCP Slave) <-> АСУ".
Скажу сразу, что с СП307 сталкиваюсь впервые. И первый, возникший у меня вопрос, в следующем:

Все данные в контроллерах компрессоров хранятся в формате INT (в терминологии ПР200 - беззнаковое целое). Но некоторые регистры содержат информацию, например, об аварийных ситуациях в виде: каждому из 16-ти битов соответствует свое сообщение об ошибке.
В ПР200 сетевая переменная не может иметь формат BOOL, поэтому я не могу извлекать из переменной INT отдельные биты и передавать их в СП307, только переменную INT целиком.
А есть ли в СП307 возможность "разложить" эту переменную на биты и присвоить каждому свое сообщение?

Заранее признателен за помощь. Потом еще про ModBus TCP Slave спрошу :)

Евгений Кислов
17.12.2016, 22:54
Да, это не составит труда - например, с помощью элемента Индикатор или одной из таблиц (в зависимости от того, как надо отображать).

Borserg
17.12.2016, 23:18
Спасибо! Попробую.

Василий Кашуба
17.12.2016, 23:38
Уважаемые Гуру, обращаюсь к Вам за помощью.


Все данные в контроллерах компрессоров хранятся в формате INT (в терминологии ПР200 - беззнаковое целое). Но некоторые регистры содержат информацию, например, об аварийных ситуациях в виде: каждому из 16-ти битов соответствует свое сообщение об ошибке.
В ПР200 сетевая переменная не может иметь формат BOOL, поэтому я не могу извлекать из переменной INT отдельные биты и передавать их в СП307, только переменную INT целиком.

ПР200 может выделять отдельные биты из переменной INT. Для этого были написаны специальные макросы.

rovki
17.12.2016, 23:46
каждой битовой переменной присвойте отдельный регистр ,если принимающая сторона не может извлекать биты

Borserg
18.12.2016, 10:31
ПР200 может выделять отдельные биты из переменной INT. Для этого были написаны специальные макросы.

А можно "ткнуть носом" в такой макрос?


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

Тоже вариант, спасибо за наводку!

Borserg
18.12.2016, 11:24
Простите за тупость, а как потом полученные от ПР200 данные отправить дальше (на АСУ через Ethernet, СП307 - SLAVE)?
В ПР200 все просто: соединяем между собой сетевые переменные, прописанные для слота Master и сетевые переменные, прописанные для слота Slave.
А в СП307 как?

rovki
18.12.2016, 11:37
Что бы отправить данные от ПР200 по езернет используйте плату езернет ENPR200

Borserg
18.12.2016, 11:46
Что бы отправить данные от ПР200 по езернет используйте плату езернет ENPR200

Мне данные надо именно из СП307 "наверх" по Enhernet отправлять. Разве у версии СП307-Р нет такой возможности?

И вообще, СП307-Р может работать ОДНОВРЕМЕННО как Master (с порта PLC) и как Slave (с порта Dowload или Ethernet)?
В ПР200 такой режим работает без проблем.

Евгений Кислов
18.12.2016, 11:50
Простите за тупость, а как потом полученные от ПР200 данные отправить дальше (на АСУ через Ethernet, СП307 - SLAVE)?
В ПР200 все просто: соединяем между собой сетевые переменные, прописанные для слота Master и сетевые переменные, прописанные для слота Slave.
А в СП307 как?

Вопрос непонятен. Если панель является slave'ом, то для нее достаточно задать нужные сетевые настройки. Опрос должен производить мастер (в вашем случае им должен являться один из компонентов АСУ).


И вообще, СП307-Р может работать ОДНОВРЕМЕННО как Master (с порта PLC) и как Slave (с порта Dowload или Ethernet)?
В ПР200 такой режим работает без проблем.

Может.

Borserg
18.12.2016, 12:23
Вопрос непонятен. Если панель является slave'ом, то для нее достаточно задать нужные сетевые настройки. Опрос должен производить мастер (в вашем случае им должен являться один из компонентов АСУ).

Я же заранее извинился за тупость :)

Поясню причину возникновения вопроса.
В ПР200, когда создаем переменные в слоте SLAVE, получаем адреса регистров, которые потом используем при создании элементов в СП307, работающей в режиме MASTER.
А какие адреса будут иметь регистры в СП307, которые должен опрашивать MASTER (АСУ)?

Евгений Кислов
18.12.2016, 12:28
Я же заранее извинился за тупость :)

Поясню причину возникновения вопроса.
В ПР200, когда создаем переменные в слоте SLAVE, получаем адреса регистров, которые потом используем при создании элементов в СП307, работающей в режиме MASTER.
А какие адреса будут иметь регистры в СП307, которые должен опрашивать MASTER (АСУ)?

Вам надо копировать данные с ПР в память панели (PSW или PFW).

Например, с помощью элемента Функциональная область, выбрав действие Копировать группу регистров. После этого вы сможете опрашивать мастером регистры панели. PSW регистры опрашиваются по их номерам (PSW300 - регистр 300), PFW - со смещением на 10000 (PFW300 - регистр 10300).

В примере Быстрый старт показано, как опросить панель по Modbus TCP с помощью OPC-сервера:
http://www.owen.ru/uploads/primer_bistrii_start.zip

Borserg
18.12.2016, 12:37
Вам надо копировать данные с ПР в память панели (PSW или PFW).

Например, с помощью элемента Функциональная область, выбрав действие Копировать группу регистров. После этого вы сможете опрашивать мастером регистры панели. PSW регистры опрашиваются по их номерам (PSW300 - регистр 300), PFW - со смещением на 10000 (PFW300 - регистр 10300).

В примере Быстрый старт показано, как опросить панель по Modbus TCP с помощью OPC-сервера:
http://www.owen.ru/uploads/primer_bistrii_start.zip

Огромное спасибо! Начинаю что-то понимать.
Это означает, что я могу поступить двумя способами?:

1. В настройках создаваемых элементов указывать адреса регистров ПР200 и параллельно копировать значения из этих регистров в память СП307.
2. Скопировать значения регистров из ПР200 в память панели и при настройке создаваемых элементов использовать уже внутренние адреса СП307 (PSWxxx).

Евгений Кислов
18.12.2016, 12:49
Все верно. Я бы рекомендовал использовать вариант 2.

Если планируется работа с float, то надо обратить внимание, что при опросе через функциональную область галочка Переставить WORD в Float (в сетевых настройках панели) не оказывает влияния - так что, возможно, потребуется менять местами регистры вручную.

Borserg
18.12.2016, 13:22
Все верно. Я бы рекомендовал использовать вариант 2.

Если планируется работа с float, то надо обратить внимание, что при опросе через функциональную область галочка Переставить WORD в Float (в сетевых настройках панели) не оказывает влияния - так что, возможно, потребуется менять местами регистры вручную.

У меня в ПР200 34 сетевых переменных (в слоте SLAVE, регистры 512...555). Причем 10 из них с плавающей запятой, остальные - целочисленные.
При копировании через функциональную область можно взять их все "скопом", или отдельно WORD, отдельно DWORD?

Кстати, в описании настройки СП307 в качестве Мастера в связке с ПЛК110 есть ошибка:

28160

Евгений Кислов
18.12.2016, 13:26
У меня в ПР200 34 сетевых переменных (в слоте SLAVE, регистры 512...555). Причем 10 из них с плавающей запятой, остальные - целочисленные.
При копировании через функциональную область можно взять их все "скопом", или отдельно WORD, отдельно DWORD?

Кстати, в описании настройки СП307 в качестве Мастера в связке с ПЛК110 есть ошибка:

28160

Можно взять все скопом.

Спасибо за замечание - поправим.

petera
18.12.2016, 17:26
У меня в ПР200 34 сетевых переменных (в слоте SLAVE, регистры 512...555). Причем 10 из них с плавающей запятой, остальные - целочисленные.
При копировании через функциональную область можно взять их все "скопом", или отдельно WORD, отдельно DWORD?

Кстати, в описании настройки СП307 в качестве Мастера в связке с ПЛК110 есть ошибка:

28160


Можно взять все скопом.
И так у Вас в ПР 44 регистра (34 сетевых переменных (в слоте SLAVE, регистры 512...555). Причем 10 из них с плавающей запятой) расположенных друг за другом без промежутков.
Однако будут проблемы при копировании 44 регистров "скопом", т.е одной функцией "Копировать группу регистров".
Слейв в ПР не позволяет отдать больше 12 регистров в одной команде, такая фича у ПР. А панель будет формировать групповые запросы по 16 регистров.
По этому надо использовать в ф.области четыре функции "Копировать группу регистров" - три по 12 регистров и одну 8 регистров.
28162
Возможно придется эти функции перемешать, чтобы шли не по порядку как на картинке, но это мне нужно проверить в панели.

ЗЫ.
Ф.область должна быть глобальной
28163

И режим у нее должен быть непрерывный
28164

Borserg
18.12.2016, 17:55
И так у Вас в ПР 44 регистра (34 сетевых переменных (в слоте SLAVE, регистры 512...555). Причем 10 из них с плавающей запятой) расположенных друг за другом без промежутков.
Однако будут проблемы при копировании 44 регистров "скопом", т.е одной функцией "Копировать группу регистров".
Слейв в ПР не позволяет отдать больше 12 регистров в одной команде, такая фича у ПР. А панель будет формировать групповые запросы по 16 регистров.
По этому надо использовать в ф.области четыре функции "Копировать группу регистров" - три по 12 регистров и одну 8 регистров.

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

ЗЫ.
Ф.область должна быть глобальной

И режим у нее должен быть непрерывный


Огромное спасибо за столь подробные пояснения!

Не могли бы Вы описать процедуру изменения системного регистра PFW2 (для отключения звука нажатия на элементы)?
Работаю с панелью дома и громкое "пикание" раздражает домочадцев :)

Borserg
18.12.2016, 19:13
Пробовал сейчас поставить простейший эксперимент:

К AI1 ПР200 у меня подключен генератор тока РЗУ-420. Сам вход настроен на пределы -100...+20 (именно такие пределы измерений имеет датчик точки росы, который будет затем к этому входу подключен).

28167

В проекте к данному входу подключена сетевая переменная PDP_1 "С плавающей запятой", имеющая адрес 550.

28166

28168

Создал в панели элемент "Цифровой дисплей" и настроил его.

28171

После загрузки проекта в панель цифры на "дисплее" хаотично "бегают" и показания никак не отражают реальную величину сигнала.
Включение/отключение опции "Переставить WORD в FLOAT" в сетевых настройках панели картину не меняет.

В то же самое время, при подключении к слоту SLAVE ПР200 через программу ModBus Poll, имеем адекватное изменение величины в регистре 550.

28169

28170

Что я делаю не так?

PS Прошу прощения - все заработало! На вкладке "Дисплей" свойств элемента надо было просто формат FLOAT поставить :)

petera
18.12.2016, 19:46
Пробовал сейчас поставить простейший эксперимент:

К AI1 ПР200 у меня подключен генератор тока РЗУ-420. Сам вход настроен на пределы -100...+20 (именно такие пределы измерений имеет датчик точки росы, который будет затем к этому входу подключен).

28167

В проекте к данному входу подключена сетевая переменная PDP_1 "С плавающей запятой", имеющая адрес 550.

28166

28168

Создал в панели элемент "Цифровой дисплей" и настроил его.

28171

После загрузки проекта в панель цифры на "дисплее" хаотично "бегают" и показания никак не отражают реальную величину сигнала.
Включение/отключение опции "Переставить WORD в FLOAT" в сетевых настройках панели картину не меняет.

В то же самое время, при подключении к слоту SLAVE ПР200 через программу ModBus Poll, имеем адекватное изменение величины в регистре 550.

28169

28170

Что я делаю не так?

PS Прошу прощения - все заработало!

Так, что в начале было не так в с дисплеем на экране панели?

ЗЫ.
Совет. Сохраняйте скриншоты в формате png, а не jpg. Тогда при вставке картинки в тело сообщения они будут видны в виде миниатюр, как в моем посте.

Borserg
18.12.2016, 20:13
Так, что в начале было не так в с дисплеем на экране панели?

ЗЫ.
Совет. Сохраняйте скриншоты в формате png, а не jpg. Тогда при вставке картинки в тело сообщения они будут видны в виде миниатюр, как в моем посте.

Надо было выбрать Float вместо Dec :)

28172

За совет про png - спасибо. Я уже и сам заметил, что что-то не так и увидел, что в Ваших постах картинки в этом формате.

А что Вы думаете по этому поводу?


Если планируется работа с float, то надо обратить внимание, что при опросе через функциональную область галочка Переставить WORD в Float (в сетевых настройках панели) не оказывает влияния - так что, возможно, потребуется менять местами регистры вручную.

Что значит "менять местами регистры вручную"?

И Вы, наверное, не заметили мой вопрос:


Не могли бы Вы описать процедуру изменения системного регистра PFW2 (для отключения звука нажатия на элементы)?
Работаю с панелью дома и громкое "пикание" раздражает домочадцев.

petera
18.12.2016, 21:08
Что значит "менять местами регистры вручную"?
Для передачи вещественных значений (Float) - чисел с плавающей запятой необходимо 32 бита или два регистра. Какой из двух регистров должен приходить первым, а какой вторым не описывается стандартом Modbus. Поэтому производители оборудования могут это делать по разному, как им захочется. Значит должен быть какой-то механизм согласования оборудования разных производителей.
Например при связи СП3хх(Мастер) с контроллерами ОВЕН(Слейв) нужно в настройках порта панели явно указать, что нужно принимать регистры из ПЛК в обратном порядке
28173
Для контроллера другого производителя возможно включать эту галку не потребуется.
Я не знаю, как должно быть с ПР200, нет у меня его. Если на дисплее из Вашего примера нормально отображаются значения Float и галка "Переставить WORD" в панели выключена, то ничего делать не надо.
В противном случае, т.к. Вы будете копировать массив регистров целиком функциональной областью, то как правильно заметил Евгений Кислов, вышеуказанная галка не имеет никакого значения. По этому, если Float в копии регистров будут отображаться неправильно или вовсе не будут отображаться, Вам придется переставлять регистры в слейве ПР200
28174

Не могли бы Вы описать процедуру изменения системного регистра PFW2 (для отключения звука нажатия на элементы)?
Работаю с панелью дома и громкое "пикание" раздражает домочадцев.
Надо записать в него значение 1 и перезагрузите панель, например, битовой кнопкой.
28175
с действием "ВКЛ", а еще лучше "Инверсия" - тогда этой же кнопкой сможете в дальнейшем включить звук нажатия
28176
А если вместо битовой кнопки использовать переключатель с индикацией, то будет видно текущее состояние этого бита.

Евгений Кислов
18.12.2016, 21:14
Насколько я помню, ПР может переставлять регистры только в режиме мастера. Так что лучше все же это делать прямо в панели.

Например, считываем float из ПР с помощью функциональной области в регистры PSW300-301. Копируем PSW301 в PSW302, а PSW300 - в PSW303. Теперь float с перевернутыми вордами лежит в PSW302-PSW303, можно выводить его на дисплей и считывать TCP мастером.

Borserg
18.12.2016, 22:27
Для передачи вещественных значений (Float) - чисел с плавающей запятой необходимо 32 бита или два регистра. Какой из двух регистров должен приходить первым, а какой вторым не описывается стандартом Modbus. Поэтому производители оборудования могут это делать по разному, как им захочется. Значит должен быть какой-то механизм согласования оборудования разных производителей.
Например при связи СП3хх(Мастер) с контроллерами ОВЕН(Слейв) нужно в настройках порта панели явно указать, что нужно принимать регистры из ПЛК в обратном порядке
28173

У меня эта опция выбрана.


Для контроллера другого производителя возможно включать эту галку не потребуется.
Я не знаю, как должно быть с ПР200, нет у меня его. Если на дисплее из Вашего примера нормально отображаются значения Float и галка "Переставить WORD" в панели выключена, то ничего делать не надо.
В противном случае, т.к. Вы будете копировать массив регистров целиком функциональной областью, то как правильно заметил Евгений Кислов, вышеуказанная галка не имеет никакого значения. По этому, если Float в копии регистров будут отображаться неправильно или вовсе не будут отображаться, Вам придется переставлять регистры в слейве ПР200
28174

И эту опцию в настройках ПР200 я видел, но пока с ней не экспериментировал. Побоялся запутаться. Ведь если эта "перевернутая" переменная используется еще и внутри проекта ПР200, можно получить ложный результат операции.


Надо записать в него значение 1 и перезагрузите панель, например, битовой кнопкой.
28175
с действием "ВКЛ", а еще лучше "Инверсия" - тогда этой же кнопкой сможете в дальнейшем включить звук нажатия
28176
А если вместо битовой кнопки использовать переключатель с индикацией, то будет видно текущее состояние этого бита.

Что-то у меня ничего не получается - панель как пищала, так и пищит.


Насколько я помню, ПР может переставлять регистры только в режиме мастера. Так что лучше все же это делать прямо в панели.

В режиме слэйва тоже может:

28177


Например, считываем float из ПР с помощью функциональной области в регистры PSW300-301. Копируем PSW301 в PSW302, а PSW300 - в PSW303. Теперь float с перевернутыми вордами лежит в PSW302-PSW303, можно выводить его на дисплей и считывать TCP мастером.

У меня теперь другая беда. Создал ГЛОБАЛЬНУЮ функциональную область с такими настройками (ID ПР200 Slave - 3):

28178

28179

28180

28181

28182

28183

Так теперь в панели посередине экрана постоянно "висит" моргающее окно "Соединение PLC порт 3".

Удалил функциональную область - окно исчезло.

Добавил цифровой дисплей для вывода значения с аналогово входа ПР200 (см. простой эксперимент, описанный раньше) - показания отображаются, окно не появляется.

Снова добавил функциональную область - показания с аналогового входа снимаются, но с задержкой. Окно снова выскакивает.

Вот как это выглядит:

28184

petera
18.12.2016, 23:21
Попробуйте в ф.области поменять порядок отдельных функций (кнопками Вниз и Вверх)
четвертую сделать первой (в самый верх цепочки)
третью сделать второй
вторая станет третьей
первую сделать четвертой (в самый низ цепочки)

ЗЫ

Что-то у меня ничего не получается - панель как пищала, так и пищит.
Панель нужно обязательно выключить и повторно включить, чтобы сработало.
Только после нажатия кнопки выключать панель не сразу, а подождать 15-30 сек.

Borserg
18.12.2016, 23:31
Попробуйте в ф.области поменять порядок отдельных функций (кнопками Вниз и Вверх)
четвертую сделать первой (в самый верх цепочки)
третью сделать второй
вторая станет третьей
первую сделать четвертой (в самый низ цепочки)

ЗЫ

Панель нужно обязательно выключить и повторно включить, чтобы сработало.
Только после нажатия кнопки выключать панель не сразу, а подождать 15-30 сек.

Сделал:

28185

Все равно окно "соединение" выскакивает. Правда теперь реакция на изменение аналогового сигнала осталась нормальной, без задержки.

petera
19.12.2016, 00:01
Блин, панель "шибко вумная"!
Как не тасуй функции она все равно делает по своему, а именно группирует по шестнадцать регистров в одном запросе
28186
т.е. вместо нужных четырех запросов 12, 12, 12, 8 регистров делает три запроса 16, 16, 12 регистров.
Единственный способ ее обмануть использовать динамическую адресацию
1. Добавить в начало цепочки функцию Присвоить значение PSW300=0
28187

2. В адресах источников для четырех последующих функций включить дин. адресацию, индексный регистр указать PSW300
28188

28189

28190

28192

После этого все будет так, как нам нужно
28191
четыре запроса по 12, 12, 12, 8 регистров

Borserg
19.12.2016, 00:47
Блин, панель "шибко вумная"!
Как не тасуй функции она все равно делает по своему, а именно группирует по шестнадцать регистров в одном запросе

т.е. вместо нужных четырех запросов 12, 12, 12, 8 регистров делает три запроса 16, 16, 12 регистров.
Единственный способ ее обмануть использовать динамическую адресацию
1. Добавить в начало цепочки функцию Присвоить значение PSW300=0


2. В адресах источников для четырех последующих функций включить дин. адресацию, индексный регистр указать PSW300

После этого все будет так, как нам нужно
четыре запроса по 12, 12, 12, 8 регистров

Я сделал для четырех (просто у Вас три скриншота):

28193

28194

28195

28196

28197

Загрузил в панель - окно больше не выскакивает!!!

Огромное спасибо!!! Для меня это просто высший пилотаж!

Если не возражаете, я буду постить возникающие по мере наполнения проекта вопросы (а их, думаю, будет немало) в этой теме.

И сразу вот какой вопрос. Насколько я понял, мы копируем регистры ПР200 во внутренние регистры панели.
Но среди них есть несколько регистров, которые предназначены для записи в них данных из панели и дальнейшей трансляции в контроллеры компрессоров.
Всего таких регистров шесть: 529, 530, 548, 549, 554, 555.
Два из них (530, 549) должны работать так: кратковременная запись в младший бит 1 по нажатию элемента "Сброс" на панели. Все остальное время в младшем бите - 0.
Остальные четыре так: запись 1 в младший бит по нажатию элемента "Пуск" на панели включает соответствующую функцию, запись в младший бит 0 происходит по нажатию элемента "Стоп" на панели.

С этим могут быть какие-то сложности?

rovki
19.12.2016, 01:10
Могут быть сложности ,связанные с задержками в панели при обработке множества элементов .Например нажали кнопку СТОП или Пуск и убрали палец с панели ,часть устройств может не отработать эти команды или отработать не одновременно .Для таких целей лучше использовать механизм обратной связи -включился (выключился) один механизм ,потом сигнал с этого устройства (вкл,выкл) подается на следующее устройство через механизм "шлюза" в панели ....Просто я такое наблюдал на днях при отладке ,когда включал\ выключал несколько распределенных устройств(ПЧВ) с одной кнопки ...редко но были случаи когда то один пчв не включится ,то другой не выключится ...Сменил подход и все стало стабильно .:rolleyes:

Borserg
19.12.2016, 01:24
Могут быть сложности ,связанные с задержками в панели при обработке множества элементов .Например нажали кнопку СТОП или Пуск и убрали палец с панели ,часть устройств может не отработать эти команды или отработать не одновременно .Для таких целей лучше использовать механизм обратной связи -включился (выключился) один механизм ,потом сигнал с этого устройства (вкл,выкл) подается на следующее устройство через механизм "шлюза" в панели ....Просто я такое наблюдал на днях при отладке ,когда включал\ выключал несколько распределенных устройств(ПЧВ) с одной кнопки ...

В моем случае только два устройства (компрессора). Для каждого - свои кнопки "Пуск", "Стоп" (управляют одним регистром) и "Сброс". И еще две кнопки изменения режимов работы алгоритма в ПР200.
То, что мы сделали до этого - копирование содержимого регистров ПР200 в регистры СП307. Теперь в свойствах создаваемых элементов я могу использовать регистры PSWxxx. Если мне надо записать данные в какой-либо регистр из перечисленных выше шести, я в настройках элемента указываю именно этот регистр (а не PSWxxx).
А если мне надо записать данные в этот регистр по команде из АСУ? Надо создать в ф. области операцию копирования, обратную той, что мы делали раньше?
Или я чего-то недопонял?
Я ведь панель первый раз вижу и с ModBus-ом впервые разбираюсь (начитался литературы). До этого только с ПР работал (Овен, Eaton).

petera
19.12.2016, 01:44
И сразу вот какой вопрос. Насколько я понял, мы копируем регистры ПР200 во внутренние регистры панели.
Но среди них есть несколько регистров, которые предназначены для записи в них данных из панели и дальнейшей трансляции в контроллеры компрессоров.
Всего таких регистров шесть: 529, 530, 548, 549, 554, 555.
Два из них (530, 549) должны работать так: кратковременная запись в младший бит 1 по нажатию элемента "Сброс" на панели. Все остальное время в младшем бите - 0.
Остальные четыре так: запись 1 в младший бит по нажатию элемента "Пуск" на панели включает соответствующую функцию, запись в младший бит 0 происходит по нажатию элемента "Стоп" на панели.

С этим могут быть какие-то сложности?

Анатолий Вас пугает.
Но у Вас же только один слейв, а не несколько.
Если для регистров 530, 549 команды сброс планируются от разных кнопок и независимо друг от друга, тогда
Либо битовая кнопка
28198
с действием
28199

Либо аналогичная функция для переключателя с индикацией
28200 28201

Но если кнопка "Сброс" будет только одна, тогда нужна ф.кнопка (у этой кнопки можно задавать разные цепочки функций, в зависимости от ее четырех состояний)
В вашем случае
Для момента нажатия
28202

А для момента отпускания кнопки
28203

Что касается остальных четырех регистров
ПУСК делаем так
28204

СТОП -так
28205


ЗЫ.

Если мне надо записать данные в какой-либо регистр из перечисленных выше шести, я в настройках элемента указываю именно этот регистр (а не PSWxxx).
Совершенно верно.

ЗЫ

А если мне надо записать данные в этот регистр по команде из АСУ? Надо создать в ф. области операцию копирования, обратную той, что мы делали раньше?
Или я чего-то недопонял?
Не надо копировать в обратную сторону.
Просто вместо ф.кнопок нужно использовать ф. области с запуском от битов PSB
Нужные PSB устанавливать от кнопок панели или из АСУ.

Borserg
19.12.2016, 02:23
В очередной раз огромное спасибо за пояснения!
Думаю, надо сделать небольшой перерыв на сон - завтра на работу :)

ЗЫ

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

petera
19.12.2016, 13:07
Вопрос на сон грядущий: можно ли создать графический элемент (например, прямоугольник), меняющий цвет в зависимости от состояния битов в регистрах?
Поясню: компрессор может находиться в одном из четырех состояний - остановлен, в работе, в работе (есть предупреждающее сообщение) и аварийная остановка. Все эти состояния определяются состоянием четырех битов в единственном регистре статуса. Вот бы графический элемент мог менять цвет в зависимости от статуса компрессора...

Например, так

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

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

ЗЫ. Редактирование "очепятки" в слове "Авария" в конце видио к основному вопросу не относится. Лень было переснимать видео из-за досадной очепятки.

Borserg
19.12.2016, 16:15
Например, так

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

ЗЫ. Редактирование "очепятки" в слове "Авария" в конце видио к основному вопросу не относится. Лень было переснимать видео из-за досадной очепятки.

Спасибо! Все понятно.
А у Вас какая версия Конфигуратора? Что-то я в своем (СП3ххх) не видел расширенного режима - это я о последующем редактировании созданного "бутерброда".

Сегодня на работе экспериментировал с элементом "Вариационный текст". В одном из регистров контроллера компрессора хранится информация о его статусе, где каждому биту присвоено определенное состояние компрессора (готов к запуску, в работе, запуск двигателя, нагрузка, холостой ход, предупреждение, аварийная остановка - всего 10 младших битов из 16). Небольшая сложность в том, что некоторые состояния могут присутствовать одновременно. Например готов к запуску и предупреждение и т.д. Поэтому пришлось создавать несколько одинаковых текстовых описаний с разными цифровыми значениями (десятичными эквивалентами включенных битов в регистре статуса). Вроде работает, как задумано.

28214

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

28215

Дополнение 1.

Провел еще один небольшой эксперимент:

До этого я еще не привязывал цифровые дисплеи к PSW-регистрам панели (в которые мы копировали данные при помощи функциональной области), а привязывал к PLC-регистрам. Снятие галочки "Переставить WORD в FLOAT" в сетевых настройках предсказуемо приводит к искажению отображаемых в дисплеях данных.

Попробовал один из дисплеев привязать к PSW256. В результате данные в этом дисплее не исказились.

Вывод: никакого "шаманства" с перестановкой регистров в ПР200 не потребуется.

Дополнение 2.

До меня "дошло" по поводу отключения звука. Отключить его можно только в том проекте, который загружен в панель?
Просто я создал пустой проект, разместил в нем переключатель с подсветкой, привязав его к PFW2, и рядом кнопку для тестирования.
Нажал переключатель - он "позеленел". Подождал 30 секунд, выключил/включил питание панели. Проект загрузился, переключатель "зеленый", звука при нажатии на тестовую кнопку нет.
Загрузил рабочий проект - звук есть. Но ведь PFW, вроде как, энергонезависимые регистры? Или я чего-то не понял?

PS Сообщение отредактировал - конкретно "затупил" с поведением панели при отключении "ведомых" от ПР200. :)

petera
20.12.2016, 11:59
Попробовал один из дисплеев привязать к PSW256. В результате данные в этом дисплее не исказились.

Вывод: никакого "шаманства" с перестановкой регистров в ПР200 не потребуется.
И это хорошо!
Следовательно Вам нужно у всех элементов на экранах использовать не регистры ПР (4х5nn), а регистры PSWnnn и биты регистров PSWnnn.kk, ведь в них уже есть копии нужных регистров ПР. лишние обмены по шине ни к чему.

До меня "дошло" по поводу отключения звука. Отключить его можно только в том проекте, который загружен в панель?
....Но ведь PFW, вроде как, энергонезависимые регистры? Или я чего-то не понял?
Регистры 0...255 системные, там например находятся
- номер стартового экрана (PFW1)
- время, через которое выключается подсветка или вкл. заставка (PFW10)
- номер экрана заставки (PFW11)
- настройки портов PLC(PFW30...35), Download(PFW20...25)
- пароли (PFW60...78)
и другие настройки. Все эти параметры задаются в настройках проекта! Поэтому вся системная область (PFW0...255) при загрузке проекта всегда будут перезаписыватся новыми значениями.

Borserg
20.12.2016, 12:54
И это хорошо!
Следовательно Вам нужно у всех элементов на экранах использовать не регистры ПР (4х5nn), а регистры PSWnnn и биты регистров PSWnnn.kk, ведь в них уже есть копии нужных регистров ПР. лишние обмены по шине ни к чему.

Спасибо, так и сделаю. Если этого не сделать, то получаем "двойной" поток данных - ведь ф. область непрерывно копирует содержимое регистров ПР200 в регистры PSW панели?


Регистры 0...255 системные, там например находятся
- номер стартового экрана (PFW1)
- время, через которое выключается подсветка или вкл. заставка (PFW10)
- номер экрана заставки (PFW11)
- настройки портов PLC(PFW30...35), Download(PFW20...25)
- пароли (PFW60...78)
и другие настройки. Все эти параметры задаются в настройках проекта! Поэтому вся системная область (PFW0...255) при загрузке проекта всегда будут перезаписыватся новыми значениями.

И с этим все понятно. Спасибо!

Borserg
21.12.2016, 00:24
Начал углубляться в принципы работы СП307 и вопросы стали возникать более сложные (с моей точки зрения :))
Вот один из них:

1. Имеется регистр статуса компрессора (518-й), в котором каждый из 16 битов отвечает за определенное состояние агрегата. Один из битов (8-й) означает "Аварийная остановка".
2. Причины аварийной остановки хранятся в двух других регистрах (525-ом и 526-ом), т.к. этих самых причин больше 16.

Хочу сделать, чтобы при аварийной остановке появлялся прямоугольник с текстом "Авария!" в верхней строке и причиной аварии - в нижней.
Если бы причины аварии хранились в одном регистре (525-ом), то я создал бы "Вариационный текст" (далее - ВТ) и привязал бы его 525-му биту.
Битом видимости назначил бы 8-й из 518-го регистра. Ну а в таблице "Содержимое" создал бы 16 двухстрочных описаний "Авария!/Причина" и значениями 1, 2, 4, 8...16384, 32768.
А как быть, когда регистров с причинами аварии два? Создать два ВТ и наложить на экране их друг на друга? Но у них бит видимости один и тот же. Ну слово "Авария!" будет в обоих ВТ и его будет видно в любом случае. Но ВТ с пустой нижней строкой может на экране оказаться "над" ВТ с отображаемой причиной аварии и ее не будет видно.
Может быть есть какой-нибудь изящный способ решения такой задачки?

Заранее признателен за совет.

petera
21.12.2016, 02:42
Может быть есть какой-нибудь изящный способ решения такой задачки?
А если причин аварий не две, а пять или десять?
Самый изящный способ -Таблица тревог.
Следующий по изящности - Бегущая строка.

ЗЫ.
А если использовать окно (не окно тревог, а обычное) с вызовом от бита 8 регистра статуса и в этом окне таблицу тревог, то получится

при аварийной остановке появлялся прямоугольник с текстом "Авария!" в верхней строке и причиной аварии - в нижней.
Верней - при аварийной остановке появится окно (прямоугольник) с текстом "Авария!" в верхней строке и любыми причинами аварии - в нижних строках.

ЗЫ.
Хотя и окна тревог я бы не сбрасывал со счетов.

Borserg
21.12.2016, 09:30
А если причин аварий не две, а пять или десять?

Думал об этом. Такая ситуация возможна, хотя и крайне маловероятна.


Самый изящный способ -Таблица тревог.
Следующий по изящности - Бегущая строка.

До этих элементов пока не добрался - буду экспериментировать.


ЗЫ.
А если использовать окно (не окно тревог, а обычное) с вызовом от бита 8 регистра статуса и в этом окне таблицу тревог, то получится

Верней - при аварийной остановке появится окно (прямоугольник) с текстом "Авария!" в верхней строке и любыми причинами аварии - в нижних строках.

ЗЫ.
Хотя и окна тревог я бы не сбрасывал со счетов.

Да, вариантов действительно достаточно и каждый заслуживает внимания.

Спасибо!

petera
21.12.2016, 09:41
Думал об этом. Такая ситуация возможна, хотя и крайне маловероятна.
По закону подлости маловероятные ситуации как правило и случаются.

До этих элементов пока не добрался - буду экспериментировать.
Вам в помощь

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

petera
21.12.2016, 09:56
Попробуем, что получилось.

https://www.youtube.com/watch?v=2R2KWvUM-Ig

И так, если кол. активных аварий больше, чем строк в таблице, то часть из них исчезает из поля видимости.
Чего-то не хватает?
Да, не хватает. Тут не хватает кнопок перелистывания страниц в таблице.

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

ЗЫ
Попробуем теперь

https://www.youtube.com/watch?v=BkFhOB11w-Q


ЗЫ.
Этот проект во вложении, можете поиграться.

petera
21.12.2016, 10:27
А теперь анонсированное

при аварийной остановке появится окно (прямоугольник) с текстом "Авария!" в верхней строке и любыми причинами аварии - в нижних строках

https://www.youtube.com/watch?v=ulOOykSKN5w
Должно получиться так

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

Этот пример во вложении.

Borserg
21.12.2016, 13:22
По закону подлости маловероятные ситуации как правило и случаются.

Тут я с Вами полностью согласен. :) Поэтому и хочу предусмотреть всевозможные ситуации.


Вам в помощь

Спасибо!

Эксперимент повторил пока с "Окном" и "Таблицей аварий". Отметил для себя несколько особенностей:

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

28257

28258

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

28259

Поэкспериментирую с другими элементами.

ЗЫ

Пока писал, Вы, оказывается, еще кучу информации поместили. Изучаю.

Borserg
21.12.2016, 13:57
Попробуем, что получилось.

И так, если кол. активных аварий больше, чем строк в таблице, то часть из них исчезает из поля видимости.
Чего-то не хватает?

Да, не хватает. Тут не хватает кнопок перелистывания страниц в таблице.

ЗЫ

Попробуем теперь
ЗЫ

Этот проект во вложении, можете поиграться.

Поигрался, спасибо. В принципе я уже сделал что-то похожее.


А теперь анонсированное

Должно получиться так

Этот пример во вложении.

Да, посмотрел, спасибо!
Но, как я писал ранее, хотелось бы возможности изменять внешний вид таблицы.
Может быть потребуется изменить "дизайн" экрана панели.

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

28266

28267

Кроме того, сделал так, чтобы выскакивало сообщение о потере связи ПР200 с "ведомыми" (есть там такая возможность).

28268

В "оригинале" при возникновении аварии во второй строке отображается "Авария!", а в третьей - причина. Причем, если причин несколько - они отображаются, чередуясь. Но, видимо, так сделать не получится.

ЗЫ

В Ваших видеороликах увидел еще две дополнительные строки инструментов в Конфигураторе. Вы их сами создавали, или они где-то скачиваются?

petera
21.12.2016, 14:07
В настройках окна заполнил "Сообщение", но в эмуляции данное сообщение вместе с окном не появляется.
Потому, что это не сообщение на окне, а всего лишь комментарий
Следует читать оное так
28261
Например у Вас в свойствах экрана тоже будет "Сообщение", а на самом деле - "Комментарий":rolleyes:
28262

Но даже если бы и появлялось - нельзя задать его позицию в окне.
Позиция окна окна в его свойствах и не должна задаваться, только размеры.
Чтобы окно появилось на экране можно(нужно)
1) Использовать, как в моем примере, элемент "Вызов окна"

https://www.youtube.com/watch?v=4wCTdXCAhxk
Левый верхний угол этого элемента определяет координату окна.
Бит управления этого элемента открывает/закрывает окно.

2) Использовать "Кнопку вызова окна"

https://www.youtube.com/watch?v=mGqlJ9k5tME
Здесь уже нужна кнопка "закрытия окна", как правило ее размещают не самом окне.
А вот координаты открытия окна можно менять в настройках кнопки открытия окна.
Однако, при изменении положения кнопки, координаты открытия окна будут изменятся на величину смещения кнопки от ее первоначального положения. Это надо учитывать и при необходимости корректировать координаты окна.

3) Использовать функцию в ф.области или ф.кнопке.

https://www.youtube.com/watch?v=2ysJCJCUOmA
А вот тут можно жестко закрепить координаты окна и они не будут изменяться при перемещении ф.кнопки или ф.области.

petera
21.12.2016, 14:11
ЗЫ

В Ваших видеороликах увидел еще две дополнительные строки инструментов в Конфигураторе. Вы их сами создавали, или они где-то скачиваются?
Это только для "продвинутых" пользователей, Вам пока не надо. Хотя жутко полезная штука, любые Ваши "хотелки" можно сделать. Но я дал "обет молчания":(

Borserg
21.12.2016, 14:25
Потому, что это не сообщение на окне, а всего лишь комментарий

Это я уже понял. Обидно :(


Позиция окна окна в его свойствах и не должна задаваться, только размеры.

Я имел ввиду не позицию окна, а позицию текста комментария относительно окна. Но, как выяснилось, комментарий в окне не выводится.


Чтобы окно появилось на экране можно(нужно)
1) Использовать, как в моем примере, элемент "Вызов окна"

Левый верхний угол этого элемента определяет координату окна.
Бит управления этого элемента открывает/закрывает окно.

Именно этот элемент я пока и использовал и с координатой разобрался.


2) Использовать "Кнопку вызова окна"

Здесь уже нужна кнопка "закрытия окна", как правило ее размещают не самом окне.
А вот координаты открытия окна можно менять в настройках кнопки открытия окна.
Однако, при изменении положения кнопки, координаты открытия окна будут изменятся на величину смещения кнопки от ее первоначального положения. Это надо учитывать и при необходимости корректировать координаты окна.

С этим элементом пока не экспериментировал. Спасибо!


3) Использовать функцию в ф.области или ф.кнопке.

А вот тут можно жестко закрепить координаты окна и они не будут изменяться при перемещении ф.кнопки или ф.области.

И за эту информацию огромное спасибо!

Borserg
21.12.2016, 14:29
Это только для "продвинутых" пользователей, Вам пока не надо. Хотя жутко полезная штука, любые Ваши "хотелки" можно сделать. Но я дал "обет молчания":(

Надеюсь таковым стать. :) Закончу с этим проектом - на подходе другие для совершенно иных целей (вчера заказали еще пять СП307). Так что будет на чем тренироваться.

petera
21.12.2016, 14:30
Попробую сделать для Вас такую машинку(черный ящик):
- на входе переменная -DWord, например Ваши 525,526 регистры;
- машинка будет перебирать по порядку все 32 бита в эти регистрах;
- если очередной бит равен 0, то на выходе 0;
- если очередной бит не равен 0, то на выходе порядковый номер бита (от 1 до 32)
- пауза в 2 сек
- поиск следующего бита равного 1.

Таким образом выход машинки (будет регистр PSW) привяжете к вариационному тексту с авариями в третей строке дисплея Вашего виртуального контроллера.

Останется согласовать вторую строку этого дисплея.

petera
21.12.2016, 15:11
На счет стиля таблицы аварий.
Заголовок убрать можно, кроме того в строках таблицы можно отображать не только статически текст, но вариационный или значения регистров
Причем по одному или в любой комбинации.
28278
Как вариант для Вашей задачи

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

Borserg
21.12.2016, 16:36
Я тут подумал вот о чем.
До сих пор мы рассматривали СП307, как некое автономное устройство и стремились получить желаемый результат исключительно средствами самой панели.
Но ведь у нас есть "ведомый" - ПР200. И именно туда сначала попадают данные со всех регистров контроллеров компрессоров. А уж там с ними можно сделать все, что угодно. Можно создать дополнительные сетевые переменные, биты в регистрах которых будут переключаться с заданной периодичностью в зависимости от результата какой-либо логической операции - вот вам и чередование "вариационного текста" в панели.
Не знаю, стоит ли так усложнять ПЕРВЫЙ проект. Но как вариант...

А пока, наверное, создам дополнительный экран, в котором размещу таблицы аварий и предупреждений - есть и такое понятие. Предупреждения не влекут за собой блокировку работы компрессора, а являются информационными. Например, при достижении температурой значения 110 град. выдается предупреждение, но компрессор продолжает работать. При достижении 120 град. - аварийная остановка. Причин предупреждений, как и аварий - несколько.
Могу создать на изображении панели контроллера два светодиода (желтый - предупреждение, красный - авария), которые начнут мигать при возникновении соответствующей ситуации. При этом начнет мигать и кнопка перехода на экран сообщений (такое ведь можно сделать?), привлекая внимание. А уже на этом экране мы увидим конкретные причины предупреждений/аварий в таблицах.

petera
22.12.2016, 16:55
Попробую сделать для Вас такую машинку(черный ящик):
- на входе переменная -DWord, например Ваши 525,526 регистры;
- машинка будет перебирать по порядку все 32 бита в эти регистрах;
- если очередной бит равен 0, то на выходе 0;
- если очередной бит не равен 0, то на выходе порядковый номер бита (от 1 до 32)
- пауза в 2 сек
- поиск следующего бита равного 1.

Таким образом выход машинки (будет регистр PSW) привяжете к вариационному тексту с авариями в третей строке дисплея Вашего виртуального контроллера.

Останется согласовать вторую строку этого дисплея.

Изначально пошел не тем путем, при создании макроса. 32 бита (DWord) пока не получилось
Для одного регистра будет так

https://www.youtube.com/watch?v=2bbCGDqkXN4

Оформлю и добавлю готовый макрос в библиотеку http://www.owen.ru/forum/showthread.php?t=25052

Borserg
22.12.2016, 20:04
Изначально пошел не тем путем, при создании макроса. 32 бита (DWord) пока не получилось
Для одного регистра будет так

Оформлю и добавлю готовый макрос в библиотеку http://www.owen.ru/forum/showthread.php?t=25052

Здорово! Для меня пока это, как фокус. :confused:
Буду ждать поступления в библиотеку. Спасибо!

energvk
22.12.2016, 22:32
Чтобы не начинать новую тему, спрошу здесь.
petera, вы как специалист по панелям подскажите, можно ли на ней реализовать такой функционал: панель контролирует какой либо регистр и если значение регистра <> 0 запускает таймер по истечении которого регистр принудительно обнуляется?

petera
22.12.2016, 23:35
Чтобы не начинать новую тему, спрошу здесь.
petera, вы как специалист по панелям подскажите, можно ли на ней реализовать такой функционал: панель контролирует какой либо регистр и если значение регистра <> 0 запускает таймер по истечении которого регистр принудительно обнуляется?
Можно.
Только потребуется обратится к Моей библиотеке http://www.owen.ru/forum/showthread.php?t=25052&p=218579&viewfull=1#post218579

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

energvk
23.12.2016, 00:05
Понял, супер,спасибо)

petera
23.12.2016, 14:45
Здорово! Для меня пока это, как фокус. :confused:
Буду ждать поступления в библиотеку. Спасибо!

ГМ дешифратора поместил в библиотеку http://www.owen.ru/forum/showthread.php?t=25052&p=231737&viewfull=1#post231737

https://www.youtube.com/watch?v=5o9Q50VpDUY

Borserg
23.12.2016, 19:58
ГМ дешифратора поместил в библиотеку http://www.owen.ru/forum/showthread.php?t=25052&p=231737&viewfull=1#post231737


Огромное Вам спасибо! Попробую использовать.

Borserg
26.12.2016, 12:46
Ну вот, проект я практически закончил. Использовал 4 экрана с массой всевозможных элементов (кнопки, переключатели с индикатором, индикаторы, функциональные кнопки, функциональные области, цифровые дисплеи, цифровой ввод, таблица аварий, историческая таблица, тренды и т.д.). В общем, довольно насыщенный проект.

Всем большое спасибо за помощь!

Все работает, как надо: имитация двух ведомых (программа ModBus Slave) <-> конвертер USB-RS485 <-> ПР200 <-> СП307-Р <-> имитация АСУ (программа MasterOPC Universal Modbus Server).

Единственный вопрос возник с подключением панели к компьютеру по Ethernet. В руководстве на СП307 видим следующее:

28360

Но при подключении панели к компьютеру при помощи "перекрестного" кабеля MasterOPC Universal Modbus Server "отказывался видеть" регистры панели.
А вот через "прямой" кабель все заработало.

Borserg
26.12.2016, 21:25
Возник небольшой вопрос по элементам "Функциональная область" и "Функциональная кнопка":

Предположим, что необходимо сделать так, чтобы бит в регистре-адресате (PLC) включился/выключился на короткое время.
С функциональной кнопкой все просто - там в функциях можно выбрать "бит ВКЛ" при нажатой кнопке и "бит ВЫКЛ" при отпущенной.
А как быть с функциональной областью? Задать бит управления (PSB) и выбрать функцию "бит ВКЛ", а ниже "бит ВЫКЛ"? А успеет ли целевое устройство отреагировать на такое быстрое переключение?

petera
27.12.2016, 04:22
А как быть с функциональной областью? Задать бит управления (PSB) и выбрать функцию "бит ВКЛ", а ниже "бит ВЫКЛ"? А успеет ли целевое устройство отреагировать на такое быстрое переключение?

Я бы так не делал. Слишком много нюансов. Лучше в ф. области оставить только функцию "бит ВКЛ", а "бит ВЫКЛ" сделать в самом целевом устройстве.

ЗЫ.
В крайнем случае, если модифицировать программу в целевом устройстве нельзя, то можно попробовать использовать две ф.области
в первой использовать функцию "бит ВКЛ"
вторая, с запуском от этого бита в целевом устройстве, с функцией "бит ВЫКЛ".

Borserg
28.12.2016, 10:21
В крайнем случае, если модифицировать программу в целевом устройстве нельзя, то можно попробовать использовать две ф.области
в первой использовать функцию "бит ВКЛ"
вторая, с запуском от этого бита в целевом устройстве, с функцией "бит ВЫКЛ".

А что, оригинальное и красивое решение (если я правильно понял):

1. Для сброса ошибки мне требуется кратковременно записать 1 в младший бит регистра 4х529 ПР200. Содержимое этого регистра постоянно копируется в регистр PSW273 панели при помощи функциональной области, которую мы создали еще в самом начале проектирования.
2. Я создаю функциональную область с условием запуска от бита PSB262 (для возможности взаимодействия с АСУ верхнего уровня) и функцией "Бит ВКЛ4х529.0".
3. Я создаю функциональную область с условием запуска от бита PSW273.0 "Бит ВЫКЛ4х529.0".

Все правильно?

petera
28.12.2016, 10:36
А что, оригинальное и красивое решение (если я правильно понял):

1. Для сброса ошибки мне требуется кратковременно записать 1 в младший бит регистра 4х529 ПР200. Содержимое этого регистра постоянно копируется в регистр PSW273 панели при помощи функциональной области, которую мы создали еще в самом начале проектирования.
2. Я создаю функциональную область с условием запуска от бита PSB262 (для возможности взаимодействия с АСУ верхнего уровня) и функцией "Бит ВКЛ4х529.0".
3. Я создаю функциональную область с условием запуска от бита PSW273.0 "Бит ВЫКЛ4х529.0".

Все правильно?

Все правильно.

petera
28.12.2016, 10:55
Я тут подумал, а не добавить ли мне в библиотеку логических выражений?
Для операций И
28400 28401 28402
Для операций ИЛИ
28403 28404 28405
Будет так
28406

Ведь функциональная область - мощная штука, однако запускаться она может только от одного бита. По моему этого недостаточно.
Можно будет запускать ф.области от бита результата логической операции битов операндов.
Это касается и битов управления видимостью элементов.

А Вам не хватает логических выражений?

Rake Runner
28.12.2016, 11:29
Логические операции проще и быстрее собрать на С-макросах. И ограничений по кол-ву входов/выходов не будет.

petera
28.12.2016, 11:39
Логические операции проще и быстрее собрать на С-макросах. И ограничений по кол-ву входов/выходов не будет.

Нет проблем с количеством входов, хоть 100 штук можно сделать.
Кроме того для вызова С-макроса тоже нужна отдельная ф.область. Кроме того С-макросы не работают в эмуляции, без панели не отладить.

Borserg
28.12.2016, 11:46
Я тут подумал, а не добавить ли мне в библиотеку логических выражений?

Ведь функциональная область - мощная штука, однако запускаться она может только от одного бита. По моему этого недостаточно.
Можно будет запускать ф.области от бита результата логической операции битов операндов.
Это касается и битов управления видимостью элементов.

А Вам не хватает логических выражений?

Действительно, наличие логических выражений было-бы нелишним.

Вчера установил готовый шкаф управления. Получилось вот так:

28407

28408

28409

28410

Всем спасибо за помощь!

С наступающим Новым Годом!

Rake Runner
28.12.2016, 12:01
Судя по вашим картинкам, логические операции для 2,3,4...100 входов - отдельные элементы. Или все же это один элемент с настраиваемым числом входов?

Да, для вызова С-макроса нужна функциональная область - но в ней одной можно обыграть сразу все логические операции. У вас же подразумевается размещение десятков элементов в типичном случае (для среднего проекта). На отдельном экране, естественно, но все же.

Про отладку - справедливо, но, в моем понимании, отладка в любом случае должна производится на реальном оборудовании. Я не питаю иллюзий о том, что эмулятор и панель работают совершенно идентично.

petera
28.12.2016, 12:10
Действительно, наличие логических выражений было-бы нелишним.

Вчера установил готовый шкаф управления. Получилось вот так:

28407

28408

28409

28410

Всем спасибо за помощь!

С наступающим Новым Годом!

Молодец!
Возьмите дату и время здесь http://www.owen.ru/forum/showthread.php?t=14191&p=118080&viewfull=1#post118080
9849 9850

А если еще покажите остальные экраны, то может еще что-либо подскажу.

Василий Кашуба
28.12.2016, 12:23
Я тут подумал, а не добавить ли мне в библиотеку логических выражений?
Для операций ИЛИ
28400 28401 28402
Для операций И
28403 28404 28405
Будет так
28406

Ведь функциональная область - мощная штука, однако запускаться она может только от одного бита. По моему этого недостаточно.
Можно будет запускать ф.области от бита результата логической операции битов операндов.
Это касается и битов управления видимостью элементов.

А Вам не хватает логических выражений?
Картинки для "И" и "ИЛИ" поменяйте местами.

petera
28.12.2016, 12:40
Картинки для "И" и "ИЛИ" поменяйте местами.

Да, уж....
http://www.owen.ru/forum/attachment.php?attachmentid=11954&d=1392750964

Василий Кашуба
28.12.2016, 12:49
Да, уж....
http://www.owen.ru/forum/attachment.php?attachmentid=11954&d=1392750964
Не надо так сильно себя наказывать.:)

Borserg
28.12.2016, 14:33
Молодец!
Возьмите дату и время здесь http://www.owen.ru/forum/showthread.php?t=14191&p=118080&viewfull=1#post118080
9849 9850

А если еще покажите остальные экраны, то может еще что-либо подскажу.

За "дату и время" - спасибо!

Что касается остальных экранов, то на работающей панели я их не фотографировал. И они не такие "навороченные", как первый.

На экране "Сообщения":
- два элемента "Таблица тревог";
- два элемента "Цифровой дисплей" для отображения времени, оставшегося до очередного ТО;
- две кнопки "Сброс ошибок" с функционалом, который мы обсуждали несколькими постами ранее.

28427

На экране "Архив сообщений":
- элемент "Историческая таблица";
- кнопка "Подтвердить" с функцией "Подтвердить" для исторической таблицы. Я так и не понял назначения данной операции. Просто, чтобы появилась надпись в колонке "Подтверждено" таблицы? Типа, "оператор видел это сообщение".

28414

На экране "Графики" - просто два тренда без всяких органов управления ими (не было времени разбираться).

28415

На главном экране - масса элементов. Уверен, что реализация их функционала сделана мной "криво".

28426

Например, я хотел, чтобы вот этот элемент:

28416

"горел постоянно", когда компрессор работает, и "мигал", когда компрессор находится в режиме ожидания.

Я уже писал, что за "статус" компрессора отвечает один регистр, каждый бит которого соответствует определенному состоянию.
Но "режим ожидания", как и "работа" характеризуются несколькими комбинациями этих битов.
Поэтому сделал "бутерброд" аж из семи индикаторов:

28417

Бит 0 в упомянутом регистре означает "Готов к запуску". При этом индикатор не горит.
Поэтому свойства у самого нижнего индикатора из "бутерброда" такие:

28418

28419

28420

Индикаторы со второго по шестой "снизу" сопоставлены с битами 7, 6, 5, 4, 3 регистра статуса и имеют сходные настройки (должны быть видимы в определенный момент и при этом гореть постоянно):

28421

28422

Самый верхний индикатор означает "режим ожидания" и должен мигать (бит 2):

28423

28424

28425

Вот такое вот "изящное" решение. :)
И это только один из примеров реализации мной "сложного" поведения элемента.

petera
28.12.2016, 15:22
Добавлял Логику в библиотеку.
Теперь буду читать Ваше сообщение.
Сразу по поводу

На экране "Архив сообщений":
- элемент "Историческая таблица";
- кнопка "Подтвердить" с функцией "Подтвердить" для исторической таблицы. Я так и не понял назначения данной операции. Просто, чтобы появилась надпись в колонке "Подтверждено" таблицы? Типа, "оператор видел это сообщение".
Столбец "Подтвердить" можно удалить и не заморачиваться с его назначением
http://www.owen.ru/forum/showthread.php?t=16323&p=138535&viewfull=1#post138535

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

petera
28.12.2016, 15:37
А напишите ка условия для индикатора подробно
- горит
- не горит
- мигает
Вместо Вашей "семибоярщины" сделаем один логический элемент, по типу этих http://www.owen.ru/forum/showthread.php?t=25052&p=232246&viewfull=1#post232246

ЗЫ.
Очень желательно указать приоритеты бит.

Borserg
28.12.2016, 16:42
Добавлял Логику в библиотеку.
Теперь буду читать Ваше сообщение.
Сразу по поводу

Столбец "Подтвердить" можно удалить и не заморачиваться с его назначением
http://www.owen.ru/forum/showthread.php?t=16323&p=138535&viewfull=1#post138535

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


А напишите ка условия для индикатора подробно
- горит
- не горит
- мигает
Вместо Вашей "семибоярщины" сделаем один логический элемент, по типу этих http://www.owen.ru/forum/showthread.php?t=25052&p=232246&viewfull=1#post232246

ЗЫ.
Очень желательно указать приоритеты бит.

Значит так. Биты регистра PSW262:

0 - готов к запуску (включен при остановленном компрессоре, в остальных случаях выключен)
1 - компрессор в работе (выключен при остановленном компрессоре, в остальных случаях включен, но совместно с одним из следующих битов)
2 - режим ожидания
3 - запуск двигателя
4, 7 - холостой ход при разных режимах работы компрессора (продолжительный, автоматический)
5 - полная нагрузка
6 - плавная остановка двигателя

Таким образом, индикатор должен:

не гореть: при 0000 0001
гореть постоянно при: 0000 1010, 0001 0010, 0010 0010, 0100 0010, 1000 0010
мигать: при 0000 0110

petera
28.12.2016, 16:46
Например, я хотел, чтобы вот этот элемент:

28416

"горел постоянно", когда компрессор работает, и "мигал", когда компрессор находится в режиме ожидания.

Я уже писал, что за "статус" компрессора отвечает один регистр, каждый бит которого соответствует определенному состоянию.
Но "режим ожидания", как и "работа" характеризуются несколькими комбинациями этих битов.
Поэтому сделал "бутерброд" аж из семи индикаторов:

28417

Бит 0 в упомянутом регистре означает "Готов к запуску". При этом индикатор не горит.
Поэтому свойства у самого нижнего индикатора из "бутерброда" такие:

28418

28419

28420

Индикаторы со второго по шестой "снизу" сопоставлены с битами 7, 6, 5, 4, 3 регистра статуса и имеют сходные настройки (должны быть видимы в определенный момент и при этом гореть постоянно):

28421

28422

Самый верхний индикатор означает "режим ожидания" и должен мигать (бит 2):

28423

28424

28425

Вот такое вот "изящное" решение. :)

На сколько я понял из этого описания должно быть так?

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

Здесь индикатор режима работы привязан, например, к PSB1000.

ЗЫ.
А бит "1" я здесь не учел, подправлю.

petera
28.12.2016, 16:55
Первое, что я сделал при добавлении исторической таблицы - поставил "0" для ширины последнего столбца.
Сейчас уже точно не припомню, но что-то у меня там не получилось с расположением таблицы. То ли она размещалась на реальном экране не в том месте, как указано в настройках. То ли еще что. Пришлось столбец вернуть на место.



Значит так. Биты регистра PSW262:

0 - готов к запуску (включен при остановленном компрессоре, в остальных случаях выключен)
1 - компрессор в работе (выключен при остановленном компрессоре, в остальных случаях включен, но совместно с одним из следующих битов)
2 - режим ожидания
3 - запуск двигателя
4, 7 - холостой ход при разных режимах работы компрессора (продолжительный, автоматический)
5 - полная нагрузка
6 - плавная остановка двигателя

Таким образом, индикатор должен:

не гореть: при 0000 0001
гореть постоянно при: 0000 1010, 0001 0010, 0010 0010, 0100 0010, 1000 0010
мигать: при 0000 0110
А разве не достаточно всего три бита анализировать - 2, 1 и 0?
не гореть: при хххх х001
гореть постоянно при: хххх х010
мигать: при хххх х110

petera
28.12.2016, 18:54
1.
Первое, что я сделал при добавлении исторической таблицы - поставил "0" для ширины последнего столбца.
Сейчас уже точно не припомню, но что-то у меня там не получилось с расположением таблицы. То ли она размещалась на реальном экране не в том месте, как указано в настройках. То ли еще что. Пришлось столбец вернуть на место.
Просто задать "0" для ширины последнего столбца не достаточно, нужно полностью удалить название последнего столбца

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

2. А для индикатора режима работы вообще достаточно анализировать состояние двух бит
Т.к.
"0 - готов к запуску (включен при остановленном компрессоре, в остальных случаях выключен)
1 - компрессор в работе (выключен при остановленном компрессоре, в остальных случаях включен, но совместно с одним из следующих битов)"
здесь два взаимоисключающих состояния - либо вкл. бит №0, либо вкл. бит №1. Поэтому нужно либо бит №0 оставить, либо бит №1
Скорей всего состояние 0000 0010 в регистре статуса никогда не будет. Если это так, то вместо анализа 0000 1010, 0001 0010, 0010 0010, 0100 0010, 1000 0010 достаточно анализировать только один бит - №1.

ИТОГО остаются только два бита - №1 и №2
не гореть: при хххх х00х
гореть постоянно при: хххх х01х
мигать: при хххх х11х
Я прав?

Borserg
28.12.2016, 21:02
1.
Просто задать "0" для ширины последнего столбца не достаточно, нужно полностью удалить название последнего столбца

Заголовок я, естественно, удалял. :)


2. А для индикатора режима работы вообще достаточно анализировать состояние двух бит
Т.к.
"0 - готов к запуску (включен при остановленном компрессоре, в остальных случаях выключен)
1 - компрессор в работе (выключен при остановленном компрессоре, в остальных случаях включен, но совместно с одним из следующих битов)"
здесь два взаимоисключающих состояния - либо вкл. бит №0, либо вкл. бит №1. Поэтому нужно либо бит №0 оставить, либо бит №1
Скорей всего состояние 0000 0010 в регистре статуса никогда не будет. Если это так, то вместо анализа 0000 1010, 0001 0010, 0010 0010, 0100 0010, 1000 0010 достаточно анализировать только один бит - №1.

ИТОГО остаются только два бита - №1 и №2
не гореть: при хххх х00х
гореть постоянно при: хххх х01х
мигать: при хххх х11х
Я прав?

Согласен, затупил. Но все равно нужен еще третий ("негорящий") индикатор. ИТОГО - три индикатора в "бутерброде".

А вообще - каюсь. Чтобы упростить описание работы я "умолчал" еще о трех битах, входящих в регистр статуса. Вот его "полный состав" (с некоторой корректировкой описания):

0 - готов к запуску;
1 - компрессор в работе (включен может быть только совместно с еще каким-либо битом);
2 - режим ожидания;
3 - запуск двигателя;
4, 7 - холостой ход при разных режимах работы компрессора (продолжительный, автоматический);
5 - полная нагрузка;
6 - плавная остановка двигателя;
8 - авария;
9 - предупреждение;
10 - требуется ТО.

Рядом с зеленым индикатором есть еще и красный, для мигания которого тоже есть ряд условий:

- мигает РЕДКО: имеется предупреждение (бит 9) или требуется ТО (бит 10)
- мигает часто: авария.

Попробую составить таблицу возможных состояний (комбинаций битов):

28450

28451

28452

28453

Теперь-то понятно, что я явно перемудрил с количеством индикаторов в "бутерброде". Но прошу сделать скидку на дебют. :)

Но с красным индикатором, думаю, я сделал правильно:
частое мигание - бит 8;
редкое мигание - бит 9 ИЛИ 10;
не горит - любой бит (кроме 8, 9, 10), но изображение для ВКЛ. и ВЫКЛ. одинаково "темное".

ИТОГО - 4 индикатора.

petera
28.12.2016, 21:51
Что значит
Но все равно нужен еще третий ("негорящий") индикатор. ИТОГО - три индикатора в "бутерброде"
Это как понимать - негорящий?
Смотреть мое видео
не гореть - индикатор темный
гореть постоянно - индикатор светлый
мигать: индикатор - меняет состояние темный-светлый (мигает)

Куда здесь негорящий вставить? И зачем?

Borserg
28.12.2016, 21:59
Что значит
Это как понимать - негорящий?
Смотреть мое видео
не гореть - индикатор темный
гореть постоянно - индикатор светлый
мигать: индикатор - меняет состояние темный-светлый (мигает)

Куда здесь негорящий вставить? И зачем?

Ну вот, совсем я "стормозил" - каждому из мигающих индикаторов зачем-то присвоил "бит видимости", совпадающий с "регистром элемента".
А для того, чтобы при отсутствии управляющего сигнала "место не пустовало" - создал постоянно темный, но постоянно "видимый" индикатор.

petera
28.12.2016, 22:24
Держите пока ГМ для управления первым индикатором
28454
Его надо просто скопировать из моего проекта и вставить в свой или через библиотеку изображений или просто копи/пасте между двумя открытыми проектами.
Настройка простая
28455

Затем берете индикатор привязываете его к Результату.
Вкл/Выкл/Мигание уже сделаны в ГМ.

https://www.youtube.com/watch?v=uGwALtjM-FY
Должно быть так

https://www.youtube.com/watch?v=4yBqh7UjKUY

petera
28.12.2016, 22:28
Но с красным индикатором, думаю, я сделал правильно:
частое мигание - бит 8;
редкое мигание - бит 9 ИЛИ 10;
не горит - любой бит (кроме 8, 9, 10), но изображение для ВКЛ. и ВЫКЛ. одинаково "темное".
Поясните
изображение для ВКЛ. и ВЫКЛ. одинаково "темное"
А как тогда различаются состояния? Они же будут одинаковыми.

Разве не должно быть как в первом индикаторе, за исключением двух скоростей мигания?

Borserg
28.12.2016, 22:58
Держите пока ГМ для управления первым индикатором

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

Затем берете индикатор привязываете его к Результату.
Вкл/Выкл/Мигание уже сделаны в ГМ.


Спасибо!

Вот бы еще самому научиться эти самые ГМ делать...
Может порекомендуете источник информации "для чайников"?


Поясните
изображение для ВКЛ. и ВЫКЛ. одинаково "темное"
А как тогда различаются состояния? Они же будут одинаковыми.

Разве не должно быть как в первом индикаторе, за исключением двух скоростей мигания?

Так тут та же ошибка, что и с "зеленым" - "постоянно негорящий индикатор".

Сейчас готовлю описание еще одного своего "шедевра". Уверен, что и он подвергнется справедливой критике.

petera
28.12.2016, 23:02
Второй индикатор
28457


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

Borserg
29.12.2016, 18:33
Поясните
изображение для ВКЛ. и ВЫКЛ. одинаково "темное"
А как тогда различаются состояния? Они же будут одинаковыми.


За ГМ - спасибо!

Но если, все-же, попытаться решить поставленную задачу "штатными средствами" ("бутерброд" из индикаторов), то получается следующее:

1. Ранее мы убедились, что для распознавания состояний "Двигатель работает" и "Ожидание" достаточно анализировать два бита регистра статуса - 1-го и 2-го.
2. Возможные комбинации этих двух битов - 00, 01 и 11. Причем режим "Ожидание" однозначно определяется состоянием 2-го бита, тогда как 1-й бит ("Работа") включен в обоих состояниях. Т.е. только по включенному состоянию 1-го бита нельзя определить статус компрессора.
3. Отличительной особенностью элемента "Индикатор" является то, что в режиме мигания он меняет свое состояние не с ВКЛ. на ВЫКЛ. и обратно, а с ВКЛ. на НЕВИДИМ и обратно.

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


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

Совсем другое дело, если мы добавим между мигающим и немигающим индикаторами "прослойку" - тот самый "негорящий" бит:


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

Какие будут комментарии?

Borserg
29.12.2016, 19:30
С красным индикатором поступим так:


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

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

petera
30.12.2016, 04:21
За ГМ - спасибо!

Но если, все-же, попытаться решить поставленную задачу "штатными средствами" ("бутерброд" из индикаторов), то получается следующее:

1. Ранее мы убедились, что для распознавания состояний "Двигатель работает" и "Ожидание" достаточно анализировать два бита регистра статуса - 1-го и 2-го.
2. Возможные комбинации этих двух битов - 00, 01 и 11. Причем режим "Ожидание" однозначно определяется состоянием 2-го бита, тогда как 1-й бит ("Работа") включен в обоих состояниях. Т.е. только по включенному состоянию 1-го бита нельзя определить статус компрессора.
3. Отличительной особенностью элемента "Индикатор" является то, что в режиме мигания он меняет свое состояние не с ВКЛ. на ВЫКЛ. и обратно, а с ВКЛ. на НЕВИДИМ и обратно.

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


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

Совсем другое дело, если мы добавим между мигающим и немигающим индикаторами "прослойку" - тот самый "негорящий" бит:


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

Какие будут комментарии?
1. Надеюсь, что мой ГМ работает в этом случае так, как было задумано?
2. Попытаемся решить задачу "штатными средствами - ("бутерброд" из индикаторов).
Сейчас я покажу, что простыми настройками двух индикаторов можно решить поставленную задачу.:rolleyes:
28467
Первый индикатор - такой же как у Вас.
Вся "фишка" в настройках второго индикатора.
- отключаем ему мигание
28468

- меняем ему бит управления на PSB4 - системный меандр с периодом 1 сек.
28469

т.е. в обычной жизни это просто "медленно" мигающий индикатор (темный-светлый-темный-светлый...).

- бит видимости у него оставим как у Вас, чтобы он в нужный момент появился и мигал
28470

Естественно, что этот индикатор должен быть верхним в "бутерброде"

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

Borserg
30.12.2016, 09:53
1. Надеюсь, что мой ГМ работает в этом случае так, как было задумано?

Безусловно.


2. Попытаемся решить задачу "штатными средствами - ("бутерброд" из индикаторов).
Сейчас я покажу, что простыми настройками двух индикаторов можно решить поставленную задачу.:rolleyes:

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

Естественно, что этот индикатор должен быть верхним в "бутерброде"


Ну, ели бы я знал о существовании "системного меандра"... :)

А может там и более быстрый меандр есть (это я про красный индикатор)?
Может где-нибудь на Форуме есть более или менее полный список системных регистров?

petera
30.12.2016, 10:21
Ну, ели бы я знал о существовании "системного меандра"... :)

А может там и более быстрый меандр есть (это я про красный индикатор)?
Может где-нибудь на Форуме есть более или менее полный список системных регистров?
Быстрый меандр - PSB6 меандр с периодом 0,3 сек.

Именно от PSB4 (медленно) или от PSB6 (быстро) мигают стандартные лампы.

petera
30.12.2016, 10:31
Ну, ели бы я знал о существовании "системного меандра"... :)

А кто мешал узнать?:rolleyes:
28472

Только в руководстве ошибка с длительностью и паузой меандров, см картинку.
Т.е. PSB6 - период 300 мс, 150 мс ВКЛ и 150 мс ВЫКЛ.
Аналогично и для остальных длительность ВКЛ и ВЫКЛ равна период/2

Владимир Ситников
30.12.2016, 10:40
А кто мешал узнать?

"интуитивно понятный интерфейс"

Серьёзно

petera
30.12.2016, 10:45
"интуитивно понятный интерфейс"

Серьёзно

Интерфейс тут не причем. Нужно читать руководства от корки до корки, а не так, как обычно делают.
В руководстве к СП300 большой прогресс по сравнению с руководством к СП200.
Ведь системные биты и у СП270 и у СП3хх одинаковые, а про их назначение в старом руководстве вообще ничего нет.

Borserg
30.12.2016, 11:08
"интуитивно понятный интерфейс"

Серьёзно

К интерфейсу у меня только одно замечание - отсутствие "дерева графических элементов". А то с этими "на слой выше/ниже" очень трудно добраться до нужного элемента для его редактирования.


Интерфейс тут не причем. Нужно читать руководства от корки до корки, а не так, как обычно делают.

Это правда. Я, например, т.к. это первый мой проект, читал только те разделы, которые касались применяемых элементов.
Когда делал первый проект на ПР200, очень сильно помог курс Кирилла Гайнутдинова. Да еще и то, что в молодости увлекался схемами на ТТЛ и КМОП микросхемах. А для СП такого курса, к сожалению нет.

Владимир Ситников
30.12.2016, 12:18
Интерфейс тут не причем. Нужно читать руководства от корки до корки, а не так, как обычно делают.

Как раз интерфейс-то и является проблемой.

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

Утверждать, что пользовательский интерфейс, в котором для настройки меандра нужно указать PSB5 удобен, это то же самое, что утверждать "программировать интерфейс в машинных кодах удобно". 21-ый век на дворе. Можно подумать и об удобстве пользователей.

Если бы в настройках "мигания" задавались не "системные биты PSB5", а нормальное слово "меандр", то интерфейс был бы гораздо понятнее.

Разумеется, чтение документации никто не отменял. Но делать нужно так, чтобы свести возможность ошибки к минимальной. И, соответсвенно, должны быть нормальные слова "меандр", а не "PSB5 бит 48".

petera
30.12.2016, 12:22
Когда делал первый проект на ПР200, очень сильно помог курс Кирилла Гайнутдинова. Да еще и то, что в молодости увлекался схемами на ТТЛ и КМОП микросхемах. А для СП такого курса, к сожалению нет.
Курса такого действительно нет.
Но есть кое что для СП270. Многое из этог будет полезно и для СП3хх
1. У меня в подписи есть ссылка
28478

2. В моих альбомах http://www.owen.ru/forum/album.php?u=11873
28479
будут полезны эти два с "Живыми примерами"
28480 28481

Каждый живой пример это gif-анимация работы какого-нибудь моего примера
28483
в комментариях почти к каждому примеру есть ссылка на соответствующее сообщение, в котом описан это пример.

Borserg
30.12.2016, 12:41
Курса такого действительно нет.
Но есть кое что для СП270. Многое из этог будет полезно и для СП3хх
1. У меня в подписи есть ссылка

Ну эта ссылка у меня в Закладках браузера. :)


2. В моих альбомах http://www.owen.ru/forum/album.php?u=11873

будут полезны эти два с "Живыми примерами"

Каждый живой пример это gif-анимация работы какого-нибудь моего примера

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

А вот за это - отдельная благодарность!

petera
30.12.2016, 14:38
Если вернутся к первому индикатору (зеленому)
Как можно было вместо уникального ГМ сделать управление индикатором из библиотечных логических элементов .
Вернемся к условию задачи
не гореть: при хххх х00х
гореть постоянно при: хххх х01х
мигать: при хххх х11х
Вместо мигать добавим состояние бита PSB4 и составим таблицу состояний

A(бит 1)
B(бит 2)
C(PSB4)
Y


0
0
0
0


0
0
1
0


0
1
0
0


0
1
1
0


1
0
0
1


1
0
1
1


1
1
0
0


1
1
1
1


Из таблицы получаем функцию
Y=AB'C' + AB'C + ABC
после минимизации методом Куайна – МакКласки
Y=AB' + AC
Можно убедится, функция правильная

https://www.youtube.com/watch?v=lyfJ-c86lMM
Реализацию ее на "микросхемах"
28486
будем делать с помощью лигических операций из моей библиотеки ГМ http://www.owen.ru/forum/showthread.php?t=25052&p=232246&viewfull=1#post232246
Понадобятся
- три вспомогательных бита для хранения промежуточных результатов, например, PSB300, PSB301, PSB302
- элемент НЕ. PSW262.2 -->28487-->PSB300
- первый элемент И. PSW262.1, PSB30028488 -->PSB301
- второй элемент И. PSW262.1, PSB428488 -->PSB302
- элемент ИЛИ. PSB301, PSB302-->28489-->PSB1000(результат)

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

Возможно следует добавит в библиотеку элементы, похожие на 155ЛРхх, но без инверсии на выходе
например такой
28490
тогда число ГМ для примера сократится до двух.

petera
31.12.2016, 09:55
Чуть было не стал делать для красного индикатора реализацию функции на отдельных лог. элементах
28503
Но потом вспомнил, что проще сделать управление такими индикаторами с помощью мультиплексоров.
28504 28505 28508

https://www.youtube.com/watch?v=vkUAbgfRTD4
28507


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

Borserg
31.12.2016, 13:58
Наличие логических элементов значительно облегчает жизнь.
Ведь в ПР200 такого рода мигания можно реализовать за пару минут.
Для "зеленого", например, вот так:

28509

ФБ "SEL" - тоже мультиплексор на 2 входа.

Сергей0308
31.12.2016, 16:55
Наличие логических элементов значительно облегчает жизнь.
Ведь в ПР200 такого рода мигания можно реализовать за пару минут.
Для "зеленого", например, вот так:

28509

ФБ "SEL" - тоже мультиплексор на 2 входа.

Мне кажется так правильнее:

28512

petera
31.12.2016, 19:33
Мне кажется так правильнее:

28512
Такой вариант я уже делал в посте #99

Borserg
01.01.2017, 15:31
Мне кажется так правильнее:

28512

Ребята, ну не работает такой вариант! В эмуляции пробовали? У Вас работает вот так:


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

А надо вот так:


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

Сергей0308
01.01.2017, 15:47
Ребята, ну не работает такой вариант! В эмуляции пробовали? У Вас работает вот так:


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

А надо вот так:


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

Работа аналогична Вашему, входа как бы можно и местами поменять, я с этим не заморачивался, вот Вам макрос в проекте:

petera
01.01.2017, 19:30
Анонсированные мультиплексоры, включая SEL, добавил в библиотеку http://www.owen.ru/forum/showthread.php?t=25052&p=232505&viewfull=1#post232505

Borserg
09.01.2017, 11:29
Анонсированные мультиплексоры, включая SEL, добавил в библиотеку http://www.owen.ru/forum/showthread.php?t=25052&p=232505&viewfull=1#post232505

Огромная благодарность за Вашу помощь! С мультиплексорами все легко и просто.

Всех с прошедшими праздниками! :)