УкраїнськаEnglishmRussian
Вхід/Новий
У темі багато повідомлень

Вопрос о ModBus


Автор Повідомлення
Повідомлення створено: 29. 04. 2011 [18:15]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"Andry" wrote:

При создании тестового проекта на OpenSCADA столкнулся со следующей проблемой: в контроллер необходимо записывать атрибуты типа int32 и float, причём, изменение в контроллере должно производится сразу всего атрибута, что реализуется с помощью команды ModBus на запись группы регистров.

Добавлена эта функция, совместно с флагом использовать групповые функции записи (16 и 15).

"Andry" wrote:

Считаю, что для 32-х разрядных атрибутов, необходимо реализовать запись в контроллер командой установки нескольких регистров, если регистры идут подряд или близко расположены (есть же оптимизация для чтения).

Реализовывать полную асинхронную запись для ModBus мне на данный момент не интересно. Кроме того не считаю синхронную запись для ModBus проблемой.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 04. 05. 2011 [06:16]
Andry
Андрей Смирнов
Зареєстрован(а) с: 30.12.2010
Повідомлення: 2
"roman" wrote:

Добавлена эта функция, совместно с флагом использовать групповые функции записи (16 и 15).

Установил последнюю версию OpenSCADA и проверил работу, действительно, запись идёт блоком.:)
"roman" wrote:

Реализовывать полную асинхронную запись для ModBus мне на данный момент не интересно. Кроме того не считаю синхронную запись для ModBus проблемой.

В том и дело, что необходима была синхронная запись (всего DWORD), что и реализовано.
Спасибо, Роман
Повідомлення створено: 09. 06. 2011 [15:12]
ВладимирВ.
Владимир Васильев
Зареєстрован(а) с: 31.05.2011
Повідомлення: 33
ModBus TCP расширение

У нас в шлюзе ModBus TCP имеются два дискретных входа сигнализации. Протокол ModBus TCP расширили, а именно если клиент работает со шлюзом, то при изменении состояния дискретного любого входа формируется дополнительный фрейм ModBus TCP и отправляется клиенту для обработки.

Настроил в OpenSCADA ModBus "Сбор данных". Всё нормально работает.

Однако при формировании фрейма, который не ожидает модуль ModBus в OpenSCADA, происходит "торможение" и "сбой" работы модуля ModBus и параметры регистров изменяюся.

Можно ли как нибудь настроить модуль ModBus, чтобы он "отбрасывал" дополнительные фреймы?
Повідомлення створено: 09. 06. 2011 [15:17]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"ВладимирВ." wrote:

ModBus TCP расширение

У нас в шлюзе ModBus TCP имеются два дискретных входа сигнализации. Протокол ModBus TCP расширили, а именно если клиент работает со шлюзом, то при изменении состояния дискретного любого входа формируется дополнительный фрейм ModBus TCP и отправляется клиенту для обработки.

В таком случае это уже не ModBus, а некий сурогат, а значит этот вопрос не к OpenSCADA. Или пишите свой шлюз.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 06. 2011 [16:08]
ВладимирВ.
Владимир Васильев
Зареєстрован(а) с: 31.05.2011
Повідомлення: 33
"roman" wrote:

В таком случае это уже не ModBus, а некий сурогат,


Совершенно с Вами согласен. Будем думку думать.
Повідомлення створено: 23. 09. 2011 [12:26]
almaz
Almaz Karimov
Contributor
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
"Andry" wrote:
команды на запись формируются только для изменившихся значений
В связи с этим столкнулся с трудноуловимой проблемой, ведущей к периодическим сбоям техпроцесса: при ошибках (помехах) в сети в момент записи изменившегося регистра ModBus (или бита) данные не доходят до железки. Если железо было кратковременно обесточено (перезагружено, сработал сторожевой таймер) также данные до неё не дойдут пока их значения не поменяются и на выходах будут значения, установленные по умолчанию.

PS Железо ET-7026 c ModBus TCP, OpenSCADA 0.7.0 LTS

[Повідомлення редагувалось 1 раз(ів), останній раз 23.09.2011 в 12:37.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 23. 09. 2011 [12:44]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"almaz" wrote:

В связи с этим столкнулся с трудноуловимой проблемой, ведущей к периодическим сбоям техпроцесса: при ошибках (помехах) в сети в момент записи изменившегося регистра ModBus (или бита) данные не доходят до железки. Если железо было кратковременно обесточено (перезагружено, сработал сторожевой таймер) также данные до неё не дойдут пока их значения не поменяются и на выходах будут значения, установленные по умолчанию.

Если регистр/коилс сконфигурирован как только для записи "w", то такое может быть. Если сконфигурировать его на полный доступ "rw", то такого не будет.

Впрочем добавлю откат значения атрибута в случае неудачной записи.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 23. 09. 2011 [12:51]
almaz
Almaz Karimov
Contributor
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
Изначально было "w". Думал "rw" поможет, но не помогло. Сложилось ощущение, что фактического чтения выходного регистра/бита с железа не происходит и возвращается значение, установленное в атрибуте.

Если запись изменившегося регистра/бита была удачной, а железо после этого перезапустилось, то не поможет.

[Повідомлення редагувалось 1 раз(ів), останній раз 23.09.2011 в 12:56.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 23. 09. 2011 [13:02]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"almaz" wrote:

Изначально было "w". Думал "rw" поможет, но не помогло. Сложилось ощущение, что фактического чтения выходного регистра/бита с железа не происходит и возвращается значение, установленное в атрибуте.

Должно помогать поскольку при отсутствии связи туда записывается EVAL, что однозначно не нормально записываемое значение!

"almaz" wrote:

Если запись изменившегося регистра/бита была удачной, а железо после этого перезапустилось, то не поможет.

Тогда будет EVAL писать.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 23. 09. 2011 [14:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"roman" wrote:

Должно помогать поскольку при отсутствии связи туда записывается EVAL, что однозначно не нормально записываемое значение!

Только оно при записи давило.

"roman" wrote:

Тогда будет EVAL писать.

Сделал. Проверяйте.

Learn, learn and learn better than work, work and work.



2212