PuzanZero
12.10.2016, 8:17
Уважаемые знатоки. Я завязал на модуль Siemens TXI1.OPEN стороннее устройство (по интерфейсу RS-485), согласно документации.
Стороннее устройство имеет переменную "Уставка Температуры" с доступом чтение/запись (текущее значение/запись нового значения).
Однако если я настраиваю данную точку как AO (см.скриншот 1 в приложении), то в эту переменную можно только записывать значения. А если наcтроить её как AI, то из этой переменной можно будет только считать текущее значение.
На скриншоте 2 вы видите эту переменную в XWORKS'e (настроенную как AO).
Я так же пробовал присвоить другие коды функции (на те, что выделены на скриншоте 3). Если поставить 6 или 16, то возможна только запись в эту переменную. Если поставить 3, то ни чтение ни запись не проходят вообще. Но мне всё же кажется, что код функции должен быть 3 (Read holding register), потому как это следует из документации стороннего устройства (см.скриншот 4).
Скажите, пожалуйста, что я мог сделать не так?
PuzanZero
12.10.2016, 8:42
Я, так же, попробовал подключить это стороннее устройство к ModBus-адаптеру и просмотреть данный регистр в утилите Modbus Poll.
И чтение и запись проходят нормально (см. скриншот в приложении). Там же вы можете видеть, что тип функции "03 Read holding register". Но если я ставлю эту 3 в утилите TX OPEN Tool и подключаюсь через USD к модулю TXI1.OPEN, то он вообще ни читает, ни записывает данный регистр.
Необходимо к типу сигнала добавить /F как к AO, так и к AI. Причем в AI необходимо прописать такую же функцию как в AO.
Пример из документации:
AO ThirdConversionSet="6;22;0;0" ThirdSignalType="UINT16 /F"
AI ThirdConversionSet="6;22;0;0" ThirdSignalType="UINT16 /F"
Пробуй
PuzanZero
12.10.2016, 11:07
Вы хотите сказать, что нужно создавать две точки данных для одной переменной? Точку данных типа AO (для записи) и AI (для чтения)?
Я вроде и переделал, как вы предложили (см. скриншот в приложении), но результатов это не дало...
Может быть, у вас адрес со смещением - 1 ? Попробуйте сниффером посмотреть. А так всё верно, 2 точки должно быть
PuzanZero
17.10.2016, 7:46
Вроде разобрался. Спасибо. Но Вы не могли бы ещё такую вещь подсказать.
Я вот попытался укомплектовать регистр стороннего устройства "Уставка температуры" в одну CFC-переменную (чтобы на пульте была одна переменная). См. скриншот 1.
В общем-то всё бы хорошо. При изменении (силой) этой переменной на контроллере Siemens (через пульт PXM20) это значение записывается в стороннее устройство, а при "отпускании", эта переменная показывает считанное (текущее) значение регистра. Но при изменении этого регистра непосредственно на стороннем устройстве, это значение начинает скакать туда-сюда. Как я понял, это всё из-за того, что Siemens перезаписывает переменную всякий раз, когда изменяется значение выхода PrVal блока AO, но что-то там перезаписаться не успевает и получается замкнутый цикл.
Задание 10 секундного интервала на входах Hrtbt [Heartbeat] и TiPln [Polling time] (блока AO) не помогают, видимо из-за того, что точки данных имеют тип 'T=', а не 'B='. Но такой тип для них установил Point Configurator...
Скажите, пожалуйста, можно ли блоку AO как-то объяснить, что передавать значения по ModBus'у (в точку данных 90.5) нужно только по приоритету "Operator enable", а по приоритету "Program enable" не надо.
Или как правильно укомплектовать в одном CFC-блоке AO регистр R/W стороннего устройства?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.