Segnetics

Вернуться   Segnetics > Форум Segnetics > Песочница

Песочница Удалённые с форума темы

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2023, 21:08   #1
hardkp
Новичок
 
Регистрация: Sep 2020
Сообщения: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Проблема с синхронизацией данных при чтении и записи modbus (нет проблемы)

Есть переменная, которую я хочу редактировать с экрана и с modbus.
Я ознакомился с примерами из форума как это делается, т.е. я создаю переменную вход и переменную выход, подключаю на соответствующие входы/выходы блока экрана. Проверил работоспособность программы, на первый взгляд всё работает.
Но представим пример. Я выставляю на контроллере кнопками значение 10.
Всё выставляется, в OPC сервере я вижу изменения.
Затем через OPC сервер я записываю в контроллер число 20, контроллер принимает изменения.
Затем я на контроллере меняю значение скажем снова на 10 и изменения я вижу как на контроллере, так и в OPC.
Но потом я решаю через OPC снова выставить значение 20 и у меня ничего не выходит.
Т.е. в SMLogix явно есть проблема с тем, что если записать какое-то значение через OPC, затем поменять его на PLC, затем на OPC выставить прежнее значение уже не получится. Получается только если я выставляю другое (третье) значение и только потом записать заветное значение и это уже проблема. Но проблема усугубляется, если мне скажем нужно менять переменную типа bool. Так как первый описанный случай вероятен меньше, то с bool это прямо вообще проблема.
Изображения
Тип файла: png 2023-10-09_19-57-36.png (42.0 Кбайт, 10 просмотров)
hardkp вне форума   Ответить с цитированием
Старый 10.10.2023, 02:29   #2
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 865
Благодарил(а): 4 раз(а)
Поблагодарили: 87 раз(а) в 68 сообщениях
По умолчанию Ответ: Проблема с синхронизацией данных при чтении и записи modbus

1.
Цитата:
Затем через OPC сервер я записываю в контроллер число 20, контроллер принимает изменения.
Вы записали в Holding Register (далее HR) значение 20.
Это значение подается на вход Меню настроек.
Там значение перезаписывается в память, если на входе значение меняется.

2.
Цитата:
Затем я на контроллере меняю значение скажем снова на 10 и изменения я вижу как на контроллере, так и в OPC.
Тут вы записали в Input Register (IR) значение 10.
Но в HR осталось значение 20.

3.
Цитата:
Но потом я решаю через OPC снова выставить значение 20 и у меня ничего не выходит.
Опять записываете в HR значение 20. А там уже было значение 20. Значение в HR не поменялось, следовательно не поменялось значение на входе в Меню. В памяти значение не перезаписалось. И как было после пункта 2 равным 10, так и осталось.


Решение:
Если у вас контроллер SMH4, Trim5 или Matrix, то поможет описанный мной или vol2008 способ из этой темы https://forum.segnetics.com/showthread.php?t=5872 (полистаете - найдете там примеры и описание).

Если у вас контроллер Pixel, то придется на стороне ОРС (скады) синхронизировать значение HR со значением из IR.
Но надо быть уверенным, что ОРС (скада) не станет при запуске писать в HR нулевые значения.

P.S. Арсений, Илья, и кто там еще читает форум ТП, вы когда-нибудь инициируете внедрение каких-либо штатных методов для записи значений в HR из программы?
младшой вне форума   Ответить с цитированием
Старый 10.10.2023, 11:14   #3
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 175
Благодарил(а): 15 раз(а)
Поблагодарили: 665 раз(а) в 607 сообщениях
По умолчанию Ответ: Проблема с синхронизацией данных при чтении и записи modbus

Цитата:
Сообщение от hardkp Посмотреть сообщение
Но представим пример. Я выставляю на контроллере кнопками значение 10.
Всё выставляется, в OPC сервере я вижу изменения.
Затем через OPC сервер я записываю в контроллер число 20, контроллер принимает изменения.
Затем я на контроллере меняю значение скажем снова на 10 и изменения я вижу как на контроллере, так и в OPC.
Но потом я решаю через OPC снова выставить значение 20 и у меня ничего не выходит.
Для этого при изменении инпут регистра с 20 на 10 скада должна выполнять запись в холдинг, меняя на нём значение 20 на значение 10. Многие скады это умеют в автоматическом режиме. Например, в Мастерскаде это поле "Обратная связь" для любой команды. В это поле нужно затащить инпут регистр. Заодно это автоматизирует приём новой уставки, которую вы задаёте в меню контроллера. Скада автоматически возьмёт значение из обратной связи.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 10.10.2023 в 11:58
Arsie вне форума   Ответить с цитированием
Старый 10.10.2023, 11:56   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 175
Благодарил(а): 15 раз(а)
Поблагодарили: 665 раз(а) в 607 сообщениях
По умолчанию Ответ: Проблема с синхронизацией данных при чтении и записи modbus (нет проблемы)

Цитата:
Сообщение от hardkp Посмотреть сообщение
Но проблема усугубляется, если мне скажем нужно менять переменную типа bool. Так как первый описанный случай вероятен меньше, то с bool это прямо вообще проблема.
В меню нет типа bool. Эта проблема немного надумана.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.10.2023, 12:25   #5
hardkp
Новичок
 
Регистрация: Sep 2020
Сообщения: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Проблема с синхронизацией данных при чтении и записи modbus (нет проблемы)

Цитата:
Сообщение от Arsie Посмотреть сообщение
В меню нет типа bool. Эта проблема немного надумана.
Надуманных проблем нет.

В меню я использую тип Enum, где есть всего 2 значения (ручной/авто, выкл/вкл).
Да это int, но в теле программы я преобразую в bool, использую как bool, в списке переменных это у меня discrete input и coil соответственно.
Используя bool, я лишаю возможности вписать значение отличное от того, что должно входить в PLC, таким образом мне приходится меньше использовать блоков ограничений диапазона.

Хорошо, что есть какое-то решение, буду пробовать разбираться, но реализация реально не удобная, возможно стоило бы доработать SMLogix, чтобы вообще не было проблем.
hardkp вне форума   Ответить с цитированием
Старый 10.10.2023, 12:43   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 175
Благодарил(а): 15 раз(а)
Поблагодарили: 665 раз(а) в 607 сообщениях
По умолчанию Ответ: Проблема с синхронизацией данных при чтении и записи modbus (нет проблемы)

Цитата:
Сообщение от hardkp Посмотреть сообщение
таким образом мне приходится меньше использовать блоков ограничений диапазона.

Надуманных проблем нет.
Замена блока ограничения диапазона на блок преобразования - шило на мыло, количество блоков неизменно. Да и без этого копипаст всё равно нивелирует объём работы до минимума, если уставок не несколько сотен.



Цитата:
Сообщение от hardkp Посмотреть сообщение
Хорошо, что есть какое-то решение, буду пробовать разбираться, но реализация реально не удобная
В скадах это заложенное поведение специально для протоколов типа Modbus.



Цитата:
Сообщение от hardkp Посмотреть сообщение
возможно стоило бы доработать SMLogix, чтобы вообще не было проблем.
Проблемы подобного рода сидят в основном в голове. Каждый раз, когда на форум приходит человек, вещающий о проблемах, в итоге получается, что это ему либо не нужно, либо проблема надумана, либо он вообще выбран неправильный способ реализации своей задачи. Я по памяти помню только один или два случая за 18 лет, когда это реально стало проблемой, ставящей крест на реализации. Именно для этого у нас есть работа контроллера с самим собой. Это снимает вопросы по любым возможным и невозможным сценариям.

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


Добавлено через 14 минут


Цитата:
Сообщение от младшой Посмотреть сообщение
P.S. Арсений, Илья, и кто там еще читает форум ТП, вы когда-нибудь инициируете внедрение каких-либо штатных методов для записи значений в HR из программы?
...поэтому я против внедрения доступа на запись к холдингам внутри FBD.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.10.2023, 14:04   #7
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 865
Благодарил(а): 4 раз(а)
Поблагодарили: 87 раз(а) в 68 сообщениях
По умолчанию Ответ: Проблема с синхронизацией данных при чтении и записи modbus (нет проблемы)

Потому что какой-то программист написал неправильную программу, которая может повредить оборудование?
Тогда вам надо было не ПЛК выпускать, а конфигурируемые контроллеры.
младшой вне форума   Ответить с цитированием
Старый 10.10.2023, 14:14   #8
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Проблема с синхронизацией данных при чтении и записи modbus (нет проблемы)

Цитата:
Сообщение от младшой Посмотреть сообщение
Тогда вам надо было не ПЛК выпускать, а конфигурируемые контроллеры.
Где ПЛК? Пока выше ПР не увидел.


__________________
Не являюсь сотрудником Segnetics !!!
ATS вне форума   Ответить с цитированием
Старый 10.10.2023, 20:25   #9
hardkp
Новичок
 
Регистрация: Sep 2020
Сообщения: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Проблема с синхронизацией данных при чтении и записи modbus

Цитата:
Сообщение от младшой Посмотреть сообщение
Решение:
Если у вас контроллер SMH4, Trim5 или Matrix, то поможет описанный мной или vol2008 способ из этой темы https://forum.segnetics.com/showthread.php?t=5872 (полистаете - найдете там примеры и описание).
Младшой, благодарю за помощь, посмотрел пример, передал для себя чтобы работать с HR 32 бит, а также для coils, всё отлично работает.


Добавлено через 18 минут


Цитата:
Сообщение от Arsie Посмотреть сообщение
Замена блока ограничения диапазона на блок преобразования - шило на мыло, количество блоков неизменно. Да и без этого копипаст всё равно нивелирует объём работы до минимума, если уставок не несколько сотен.





В скадах это заложенное поведение специально для протоколов типа Modbus.





Проблемы подобного рода сидят в основном в голове. Каждый раз, когда на форум приходит человек, вещающий о проблемах, в итоге получается, что это ему либо не нужно, либо проблема надумана, либо он вообще выбран неправильный способ реализации своей задачи. Я по памяти помню только один или два случая за 18 лет, когда это реально стало проблемой, ставящей крест на реализации. Именно для этого у нас есть работа контроллера с самим собой. Это снимает вопросы по любым возможным и невозможным сценариям.

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


Добавлено через 14 минут




...поэтому я против внедрения доступа на запись к холдингам внутри FBD.
Вы можете придерживаться любой точки зрения, всячески принижать проблемы пользователя Вашим софтом и так и оставаться продуктом, который ругают сравнивая с другими. О как я ненавижу работу с ОВЕН, но даже там работа с протоколом проще. Нужно всё же равняться на удобные решения. Удивительно, что в итоге помощь я получил не от представителя компании, а от простого человека с форума, насколько я понимаю Младшой не является Вашим сотрудником.
На сегодняшний день я на Zentec и Carel могу писать код примерно в 10 раз быстрее, только благодаря среде. Речь не идёт о том, что я не могу что-то реализовать на Segnetics, вопрос к тому, что зачем мне эта сложность в реализации, которая у других просто отсутсвтует.
Вы знаете кто на сегодняшний день делает СКАДУ? вы уверены, что когда спустя год её начнут делать я вспомню что мне нужно сказать тем ребятам, что там есть особенность работы с портом? Вот в arOPC я не нашёл функцию обратной связи и что мне теперь делать?
В итоге получается длинный пост гнева, а причина тому, Ваш подход к проблемам пользователя.
Я имею большой опыт работы с другими ПЛК и сеносрными панелями, в общем освоил 9 различных сред.
Эта среда максимально не похожа на другие. Тут любую тему откроешь, пользователи только и говорят о том, что не привычно то или иное действие. В ответ всегда найдётся Ваш ответ: "всё норм, это вы ленитесь реализовывать вашу задачу так как задумал производитель".
Т.е. производителя вообще нельзя критиковать?
А производитель мог бы уважать и ценить время программистов, которые выбрали Ваш продукт и не вставлять палки в колёса?
Можно сделать реализацию тех или иных задач проще? Нет, это не для Вас, у Вас однозначно есть свой путь. Удачи.
hardkp вне форума   Ответить с цитированием
Старый 11.10.2023, 10:53   #10
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 175
Благодарил(а): 15 раз(а)
Поблагодарили: 665 раз(а) в 607 сообщениях
По умолчанию

Цитата:
Сообщение от hardkp Посмотреть сообщение
Удивительно, что в итоге помощь я получил не от представителя компании, а от простого человека с форума, насколько я понимаю Младшой не является Вашим сотрудником.
Вы написали в 8 вечера, Младшой вам ответил почти в два ночи. В своём ответе в 10 утра я не стал повторять написанное Младшим, но добавил к его словам информацию о встроенных в скаду решениях. Специально, чтобы вы могли сэкономить своё время. Удивительного ничего нет. По крайней мере для тех людей, которые спят ночью и в основном отдыхают вечером.




Цитата:
Сообщение от hardkp Посмотреть сообщение
Можно сделать реализацию тех или иных задач проще? Нет, это не для Вас, у Вас однозначно есть свой путь. Удачи.
Лично я не вижу никакой сложности в нашем способе. Вы его реализовывали час, два часа, полдня? Нет. Пару минут, если с перерывом на кофе Второй раз сделаете секунд за 30. Очередная проблема при анализе оказалась надуманной не очень существенной. А возможно и вообще нулевой, если это всё скада самостоятельно делает в автоматическом режиме.




Цитата:
Сообщение от hardkp Посмотреть сообщение
Вот в arOPC я не нашёл функцию обратной связи и что мне теперь делать?
Это функция скады, а не OPC. Я ни разу этого в серверах не видел и не советовал вам смотреть в его настройки.


Добавлено через 5 минут


Цитата:
Сообщение от hardkp Посмотреть сообщение
На сегодняшний день я на Zentec и Carel могу писать код примерно в 10 раз быстрее, только благодаря среде. Речь не идёт о том, что я не могу что-то реализовать на Segnetics, вопрос к тому, что зачем мне эта сложность в реализации, которая у других просто отсутсвтует.
Уточните пожалуйста, речь идёт о коде вообще или только о том, что создать фантомного слейва оказалось дольше в 10 раз. Т.е. не 5 секунд, а 50.

Если первое, то причины вашего гнева понятны.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 03:36.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024