PDA

Просмотр полной версии : Обмен битовыми (BOOL) переменными с ПР Slave



petera
18.11.2019, 16:42
Попробую систематизировать способы обмена битовыми переменными между Мастером, например HMI, и ПР в режиме слейва.
Явного задания BOOL сетевых переменных для слейва в ОЛ нет
Однако ПР поддерживает все функции ModBus для работы с битами - 01, 02, 05, 0F
45685
При этом адреса бит находятся в той же памяти что и регистры. Т.е. каждому биту от 8192 до 9215 соответствует какой-либо разряд регистра 512...575.

В качестве мастера в примерах будет выступать панель СП3хх или конфигуратор в режиме онлайн эмуляции, тем боле что в последних версиях ОЛ можно подключать онлайн эмулятор СП300 к ПР через тот же USB кабель, который используем для программирования ПР.

Варианты обмена.

1. Мастер пишет и читает биты в ПРку
Мастер, например, будет читать и писать биты 0х9200, 0х9202, 0х9204, 0х9206. Это биты регистра 575.
45686 45687

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

В ПР для перехода к битовым переменным нужно извлечь из регистра, в нашем случае 575, нужные разряды - 0, 2, 4 и 6.
Извлекаем биты функцией EXTRACT, или для компактности можно применить макрос из этих функций.
45688

2. Мастер одни биты в регистре пишет и читает (например команды), остальные биты этого регистра- только читает (статус или состояние объектов в ПР)
Здесь, для демонстрации, используются переключатели с подсветкой, и обычные битовые лампы
45689

В ПР
45690
для перехода к битовым переменным нужно извлечь из регистра, в нашем случае 512, нужные разряды - 0, 2, 4 и 6 (в мастере это переключатели с подсветкой).
Остальные разряды этого регистра можно использовать для сообщения мастеру (на лампы) состояния, например блинков.
Для этого пакуем соответствующие биты функциями PUTBIT прямо в сетевой регистр, в нашем случае 512

3. Запись и чтения одних и тех же бит из двух мест.
Например будем писать/читать в регистре 513 разряды 0, 2, 4 с экрана ПР или с экрана панели.
Здесь, для демонстрации, используются переключатели с подсветкой,
45691

В ПР эти же биты будем писать/читать с экрана
45693
и используем макрос SelChgI
45694

ЗЫ.
Внимательно смотрим на свойство - Запись в конце цикла
66683

dan75
19.11.2019, 12:41
С битами, кста, наэкспериментировался вчера. Зашил в регистр 524 ПР200 имитацию состояния насосов и клапанов ЦТП и попытался почитать всё это в мнемосхему на эмуляторе, биты начиная с 8384. Всё получилось. А вот про возможность связываться с ПР по USB -- спасибо за подсказку! Только следует помнить, что адрес ПР в этом случае всегда 16, а не то, что мы в Лоджике назадавали.

burov-vyazma
06.10.2020, 15:24
Попробую систематизировать способы обмена битовыми переменными между Мастером, например HMI, и ПР в режиме слейва.
Явного задания BOOL сетевых переменных для слейва в ОЛ нет
Однако ПР поддерживает все функции ModBus для работы с битами - 01, 02, 05, 0F
45685
При этом адреса бит находятся в той же памяти что и регистры. Т.е. каждому биту от 8192 до 9215 соответствует какой-либо разряд регистра 512...575.

В качестве мастера в примерах будет выступать панель СП3хх или конфигуратор в режиме онлайн эмуляции, тем боле что в последних версиях ОЛ можно подключать онлайн эмулятор СП300 к ПР через тот же USB кабель, который используем для программирования ПР.

Варианты обмена.

1. Мастер пишет и читает биты в ПРку
Мастер, например, будет читать и писать биты 0х9200, 0х9202, 0х9204, 0х9206. Это биты регистра 575.
45686 45687

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

В ПР для перехода к битовым переменным нужно извлечь из регистра, в нашем случае 575, нужные разряды - 0, 2, 4 и 6.
Извлекаем биты функцией EXTRACT, или для компактности можно применить макрос из этих функций.
45688

2. Мастер одни биты в регистре пишет и читает (например команды), остальные биты этого регистра- только читает (статус или состояние объектов в ПР)
Здесь, для демонстрации, используются переключатели с подсветкой, и обычные битовые лампы
45689

В ПР
45690
для перехода к битовым переменным нужно извлечь из регистра, в нашем случае 512, нужные разряды - 0, 2, 4 и 6 (в мастере это переключатели с подсветкой).
Остальные разряды этого регистра можно использовать для сообщения мастеру (на лампы) состояния, например блинков.
Для этого пакуем соответствующие биты функциями PUTBIT прямо в сетевой регистр, в нашем случае 512

3. Запись и чтения одних и тех же бит из двух мест.
Например будем писать/читать в регистре 513 разряды 0, 2, 4 с экрана ПР или с экрана панели.
Здесь, для демонстрации, используются переключатели с подсветкой,
45691

В ПР эти же биты будем писать/читать с экрана
45693
и используем макрос SelChgI
45694

СПАСИБО ОГРОМНОЕ!Вы ,как всегда ,очень помогаете!Распечатал:буду пробовать.

Артем Петров
26.03.2021, 11:34
Привет всем! Подскажите, есть ли возможность обращаться к разным битам одного регистра, например 512, из панели оператора? Вот к первому биту я научился обращаться с панели, а как сделать так что бы например при обращении к регистру 512, по биту например 8209 записывалась в переменную 1 или 0. Вообще такое возможно, или из-за того что в ПР200 только целые и вещественные сетевые переменные этого сделать нельзя?

petera
26.03.2021, 11:47
Привет всем! Подскажите, есть ли возможность обращаться к разным битам одного регистра, например 512, из панели оператора? Вот к первому биту я научился обращаться с панели, а как сделать так что бы например при обращении к регистру 512, по биту например 8209 записывалась в переменную 1 или 0. Вообще такое возможно, или из-за того что в ПР200 только целые и вещественные сетевые переменные этого сделать нельзя?

Смотреть внимательно первый пост - в ПР есть сетевые битовые переменные
И в тестовом примере показано как читать/ писать отдельные биты одного регистра.

Артем Петров
26.03.2021, 13:08
Смотреть внимательно первый пост - в ПР есть сетевые битовые переменные
И в тестовом примере показано как читать/ писать отдельные биты одного регистра.

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

54225

petera
26.03.2021, 13:29
Что я не так делаю? :(

54225

Если в эмуляции задаете 3 для TEST и все работает, значит по сети приходит не 3, а другое значение
Как в панели вы записываете биты в сетевую переменную?

Артем Петров
26.03.2021, 13:32
Если в эмуляции задаете 3 для TEST и все работает, значит по сети приходит не 3, а другое значение
Как в панели вы записываете биты в сетевую переменную?

54226

Вот так

petera
26.03.2021, 13:42
54226

Вот так

Судя по постам про панель Kinko адреса регистров значит и бит у нее сдвинуты на +1, т.е начинаются не с 0 а с 1
значит нужно попробовать вместо 8208 использовать 8209 и будет 0 бит 513 регистра
Я так думаю

Артем Петров
26.03.2021, 13:49
Судя по постам про панель Kinko адреса регистров значит и бит у нее сдвинуты на +1, т.е начинаются не с 0 а с 1
значит нужно попробовать вместо 8208 использовать 8209 и будет 0 бит 513 регистра
Я так думаю

я пробовал и 8208 и 8209 не сработало:( а может нельзя так делать как я и 0 и на 1 бит задействовать, или нет разницы?

petera
26.03.2021, 13:53
я пробовал и 8208 и 8209 не сработало:( а может нельзя так делать как я и 0 и на 1 бит задействовать, или нет разницы?

Я с Kinko не работал, с панелью СП3хх все работает, так как написал в первом посте. Примеры проектов для ПР и СП3хх рабочий 100%

Артем Петров
26.03.2021, 13:59
Я с Kinko не работал, с панелью СП3хх все работает, так как написал в первом посте. Примеры проектов для ПР и СП3хх рабочий 100%

понятно. спасибо и на этом. Ваш пост очень полезный.

petera
26.03.2021, 14:01
to Артем Петров
Однако, Вы утверждаете, что конструкция
test-->(X->B)-->Q7
работает
Тогда сделайте на экране ПР вывод переменой test
какое число будет на экране?

Артем Петров
26.03.2021, 14:09
to Артем Петров
Однако, Вы утверждаете, что конструкция
test-->(X->B)-->Q7
работает
Тогда сделайте на экране ПР вывод переменой test
какое число будет на экране?

Завтра попробую, сейчас уже ушел с работы. ПР на работе.

Артем Петров
27.03.2021, 06:24
Завтра попробую, сейчас уже ушел с работы. ПР на работе.

Все получилось, разобрался как это все работает. Нужно было брать биты не 513 регистра, а 512 плюс 1. То есть для 512 регистра 0 бит будет по адресу 8193 и так далее. для пробы завязал первые 10 бит регистра на 8 реле и два светодиода. все работает. Очень помог совет про то как посмотреть что пишется в регистр, вывел на экран и все видно. Спасибо!!!

54228 54229 54230