Показать сообщение отдельно
Старый 29.11.2019, 23:24   #23
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 863
Благодарил(а): 4 раз(а)
Поблагодарили: 86 раз(а) в 67 сообщениях
По умолчанию Ответ: Запись в свои же holding регистры

Цитата:
Сообщение от LordN Посмотреть сообщение
если контроллер слейв, то он должен выставить новое значение уставки в какой-то регистр, мастер должен его прочитать и раздать всем слейвам как новую уставку.
Сегнетикс в своих контроллерах "вынуждает" для уставок использовать два регистра:
input - чтобы вывести значение уставки наружу;
holding - чтобы ввести новое значение уставки снаружи.

Эта особенность требует от мастера (скады, панели управления, другие контроллеры):
1) "синхронизировать" свои читающие и пишущие тэги, точки ввода-вывода,;
2) дополнительный расход тэгов, т.к. их надо два на одну уставку.

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

Цитата:
Сообщение от LordN Посмотреть сообщение
а как еще?
Как у многих конкурентов - контроллер сам внутри себя "синхронизирует" уставку в памяти и holding регистр или производится привязка модбас регистра к ячейке памяти. ("контроллер сам" - имеется ввиду, что программист контроллера предусмотрел такую взаимосвязь)

Арсений предлагает решение: "В четвёрке создайте слейва на эзернете на адрес 127.0.0.1 и подключите свою же карту памяти. Будете сами в себя записывать."

Однако,
а) оно работоспособно только для линуксовых контроллерах;
б) оно требует от программиста контроллера усложнять программу, т.к. просто писать "в себя" не вариант (что происходит, надо разбирать отдельно).

Нормальным решением для лично меня был бы элемент holding регистра, который при установке в FBD имел два входа и один выход.
Вход 1 - значение для записи в holding регистр из программы, запись при изменении значения;
Вход 2 - принудительная запись значения на Входе 1 в holding регистр;
Выход - значение holding регистра.

По каким-то причинам такой элемент не был предусмотрен с самого начала. Если поискать по форуму, то будут отсылки на опасность убить контроллер, на противоречие идеологии модбас и т.п.

Таким образом, сейчас имеем:
либо предусматривай в программе два регистра и в мастере два тэга с необходимостью их связать внутри программы мастера;
либо (для линуксовых контроллеров) предусматривай "запись в себя".

И всё это вместо того, чтобы в программе контроллере соединить двумя простыми связями уставку к одному holding регистру, и мастеру указать "нужное значение - здесь".

P.S. VaBo еще зачем-то хочет использовать несколько holding регистров для одной уставки. Вот этого я не могу понять.
младшой вне форума   Ответить с цитированием