PDA

Просмотр полной версии : Управление битовым индикатором ИП320 из ПР200



Newcomer
01.11.2018, 12:27
Добрый день.

В ИП320 есть битовый индикатор. Но у ПР200 в режиме Slave сетевые переменные не поддерживают булевский тип данных.
Что делать ?

melky
01.11.2018, 12:41
Панель мастер ? битовый индикатор сама панель запрашивает буль или она берет бит из выставленного регистра ?
давно панель не смотрел как там реализовано просто...

petera
01.11.2018, 13:08
Добрый день.

В ИП320 есть битовый индикатор. Но у ПР200 в режиме Slave сетевые переменные не поддерживают булевский тип данных.
Что делать ?

Зато любой бит любого сетевого регистра в слейве можно читать как соответствующий 0х (1х) и можно записать как соответствующий 0х
Смотри карту регистров в слейве ПР в руководстве
39557

petera
01.11.2018, 13:29
В ИП320 есть битовый индикатор.
Берешь в ПР сетевой регистр, например 512 разряды этого регистра соответствуют "сетевым" битам (0х)
512.0 - 8192
512.1 - 8193
512.2 - 8194
512.3 - 8195
...................
512.15 - 8207

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

В программе ПР с помощью PUTBIT можешь вкл/выкл индикатор
39560

Алексей Геннадьевич
01.11.2018, 15:06
Добрый день.

В ИП320 есть битовый индикатор. Но у ПР200 в режиме Slave сетевые переменные не поддерживают булевский тип данных.
Что делать ?
Выделяйте под индикаторы регистр, пакуйте в него биты через PUTBIT.
В панели -битовый адрес равен (№ регистра * 16)+номер бита в регистре.

Newcomer
01.11.2018, 16:05
Берешь в ПР сетевой регистр, например 512 разряды этого регистра соответствуют "сетевым" битам (0х)
512.0 - 8192
512.1 - 8193
512.2 - 8194
512.3 - 8195
...................
512.15 - 8207

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

В программе ПР с помощью PUTBIT можешь вкл/выкл индикатор
39560

А откуда взялись числа 8192 и т.д. и что с ними делать ?

melky
01.11.2018, 16:31
512.0*16 - первый бит регистра 512 (десятичное) 0х200 шестнадцатиричное.

Newcomer
01.11.2018, 16:47
512.0*16 - первый бит регистра 512 (десятичное) 0х200 шестнадцатиричное.

Не первый бит регистра 512, а нулевой бит регистра 512.

melky
01.11.2018, 16:48
первый он всегда нулевой :)

Newcomer
02.11.2018, 12:34
Берешь в ПР сетевой регистр, например 512 разряды этого регистра соответствуют "сетевым" битам (0х)
512.0 - 8192
512.1 - 8193
512.2 - 8194
512.3 - 8195
...................
512.15 - 8207

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

В программе ПР с помощью PUTBIT можешь вкл/выкл индикатор
39560

Так работать не будет. С упаковкой бита в регистр проблем нет. Но ИП320 будет запрашивать не регистр, а бит, а ПР200 на такой запрос отвечать не будет, т.к. не поддерживает битовые функции протокола Modbus.

petera
02.11.2018, 13:11
Так работать не будет. С упаковкой бита в регистр проблем нет. Но ИП320 будет запрашивать не регистр, а бит, а ПР200 на такой запрос отвечать не будет, т.к. не поддерживает битовые функции протокола Modbus.
Не надо "лохматить бабушку"
Еще раз смотрим в руководство ПР
39575
Видите, ПР поддерживает в слейве команды функции чтения бит 01 и 02 и функции записи 05 и 0F

ПР прекрасно отвечает на запросы чтения/записи бит

ЗЫ.
Пример обмена с битами, только панель здесь СП310
39576 39577
Это 512 регистр

Newcomer
02.11.2018, 13:16
Не надо "лохматить бабушку"
Еще раз смотрим в руководство ПР
39575
Видите, ПР поддерживает в слейве команды функции чтения бит 01 и 02 и функции записи 05 и 0F

ПР прекрасно отвечает на запросы чтения/записи бит

А почему тогда OL не поддерживает битовые сетевые переменные ?

petera
02.11.2018, 13:31
А почему тогда OL не поддерживает битовые сетевые переменные ?

Просто биты и регистры в слейве имеют общую память!
И хотя в таблице переменных можно добавлять только регистры, тем не менее любой бит любого сетевого регистра в слейве можно читать как соответствующий 0х (1х) и можно записать как соответствующий 0х

Newcomer
02.11.2018, 13:54
Просто биты и регистры в слейве имеют общую память!
И хотя в таблице переменных можно добавлять только регистры, тем не менее любой бит любого сетевого регистра в слейве можно читать как соответствующий 0х (1х) и можно записать как соответствующий 0х

Спасибо, petera. Назовем это недокументированные возможности OL и возрадуемся. ;)