Вход

Просмотр полной версии : Подключение устройства по Modbus



fizhimik
23.01.2024, 13:12
Добрый день! Имеется регулятор расхода газа. Подключен к СПК 110 по RS485 ко второму порту. Проблема: В устройство не записывается значение установленного расхода, но при этом считывается значение текущего расхода.
При подключении регулятора для проверки к OPC серверу - все работает без проблем.
73052
73053
73054
73055
73056

Евгений Кислов
23.01.2024, 13:18
Добрый день! Имеется регулятор расхода газа. Подключен к СПК 110 по RS485 ко второму порту. Проблема: В устройство не записывается значение установленного расхода, но при этом считывается значение текущего расхода.
При подключении регулятора для проверки к OPC серверу - все работает без проблем.
73052
73053
73054
73055
73056

Добрый день.
Свяжитесь, пожалуйста, со мной через телеграм (в подписи) и обеспечьте доступ по AnyDesk.

fizhimik
23.01.2024, 13:23
Добрый день.
Свяжитесь, пожалуйста, со мной через телеграм (в подписи) и обеспечьте доступ по AnyDesk.
AnyDesk принципиален? Возможно использовать например RuDesktop? AnyDesk блокируется университетом и придется раздавать интернет с телефона.

Евгений Кислов
23.01.2024, 13:31
AnyDesk принципиален? Возможно использовать например RuDesktop? AnyDesk блокируется университетом и придется раздавать интернет с телефона.

Подойдет еще AeroAdmin.

fizhimik
23.01.2024, 14:08
Спасибо за консультацию! Теперь все работает. Про триггер даже и не подумали.

Андрей_ТМЗ
24.01.2024, 05:34
Спасибо за консультацию! Теперь все работает. Про триггер даже и не подумали.

Здравствуйте. Можно, пожалуйста подробнее описать, в чем была проблема?

kondor3000
24.01.2024, 09:55
Здравствуйте. Можно, пожалуйста подробнее описать, в чем была проблема?

Сделали запись по триггерной переменной типа BOOL, а переменную не добавили в соотнесение входов. Нас скрине видно, что там ничего нет.

andrey.elektrik
24.02.2025, 14:29
Здравствуйте. Не стал плодить новых тем, решил спросить здесь. Не судите строго, новичок . Нужной информации не нашёл.
Имею СПК-210 и ПР-103. В ПР есть регистр тип WORD , который преобразуется в битовую маску на запись бит. (16484 например).
Суть проблемы в следующем : каким образом можно включить/выключить определённый бит из этого регистра из визуализации СПК? При этом не записывая всё значение WORD, чтобы не изменялись остальные биты? Некоторые из них меняются в программе самого ПР. При использовании панели оператора СП300 всё просто и понятно 4Х16484 бит3.
Надеюсь понятно изложил суть.

МихаилГл
24.02.2025, 14:52
Word.0:= true

andrey.elektrik
24.02.2025, 15:08
Word.0:= true

Это я в программе СПК так могу вкючить этот бит. А как мне это записать в ПР , не изменяя значения остальных бит в Переменной word? Канал записи одного бита есть? Если я буду записывать всю переменную, тогда у меня все остальные биты будут =0

МихаилГл
24.02.2025, 15:47
Это я в программе СПК так могу вкючить этот бит. А как мне это записать в ПР , не изменяя значения остальных бит в Переменной word? Канал записи одного бита есть? Если я буду записывать всю переменную, тогда у меня все остальные биты будут =0

Это шутка такая или троллинг? Я ума не приложу...
Word.0:= true
Word.1:= false
Word.2:= ...
...
Word.15:= ...
Меняются только те биты, какие вы сами меняете, остальные в ворде не изменяются...

Евгений Кислов
24.02.2025, 15:57
Здравствуйте. Не стал плодить новых тем, решил спросить здесь. Не судите строго, новичок . Нужной информации не нашёл.
Имею СПК-210 и ПР-103. В ПР есть регистр тип WORD , который преобразуется в битовую маску на запись бит. (16484 например).
Суть проблемы в следующем : каким образом можно включить/выключить определённый бит из этого регистра из визуализации СПК? При этом не записывая всё значение WORD, чтобы не изменялись остальные биты? Некоторые из них меняются в программе самого ПР. При использовании панели оператора СП300 всё просто и понятно 4Х16484 бит3.
Надеюсь понятно изложил суть.

Добрый день.

Можно сделать так:

Объявить три отдельных переменных типа WORD (названия условны):

wRead - значение, циклически считываемое из регистра ПР
wWrite - значение, записываемое в регистр ПР
wVisu - переменная, записываемая в визуализации (как раз wVisu.0 и т.д.)

Формировать wWrite в коде следующим образом:

wWrite := wRead or wVisu;

Т.е. при записи в регистр ПР - запишутся все биты, которые там сейчас установлены + те, которые вы устанавливаете в визуализации.

andrey.elektrik
24.02.2025, 16:00
Извиняюсь. Это не троллинг, просто отсутствие опыта работы с CS. Может быть я не совсем корректно сформулировал вопрос. Для наглядности приложу скрины8216282163

andrey.elektrik
24.02.2025, 16:11
В конфигураторе на панель всё гораздо проще 82164

Как я понимаю, нужно сначала считать переменную, изменить в ней нужный бит и записать её обратно в ПР. Других вариантов нет?

Евгений Кислов
24.02.2025, 16:43
В конфигураторе на панель всё гораздо проще 82164

Как я понимаю, нужно сначала считать переменную, изменить в ней нужный бит и записать её обратно в ПР. Других вариантов нет?

Всегда остается вариант с доработкой проекта ПР и размещения бит, которые будет записывать СПК, в отдельном регистре.

МихаилГл
24.02.2025, 16:47
Просто панель механизм модбас обмена реализует по умолчанию, а тут надо немного пораскидать одним делом, но на самом деле не все так сложно. Один раз сделаете, потом все будет проще. Тем более сейчас в cs новой версии с 16 вроде уже чтение и запись объединили, в 14 версии этого не было, вот там я помучился с механизмом обмена данными СП315Р-ПЛК210-ИП320...

andrey.elektrik
24.02.2025, 17:04
Всегда остается вариант с доработкой проекта ПР и размещения бит, которые будет записывать СПК, в отдельном регистре.

В том то и дело, что на ПР103+СП310 (насосная станция) уже давно всё сделано другим специалистом и менять там ни чего не хочется. Моя задача привязать к этому тондему СПК с котельной для диспетчеризации и возможности удалённой настройки. Есть только проект на панель, откуда я и беру номера регистров ПР с нужными мне данными. Вот и приходится как то выкручиваться.

andrey.elektrik
24.02.2025, 17:14
Просто панель механизм модбас обмена реализует по умолчанию, а тут надо немного пораскидать одним делом, но на самом деле не все так сложно. Один раз сделаете, потом все будет проще. Тем более сейчас в cs новой версии с 16 вроде уже чтение и запись объединили, в 14 версии этого не было, вот там я помучился с механизмом обмена данными СП315Р-ПЛК210-ИП320...

Чем больше я работаю с CS, тем больше я ненавижу эту программу!!! Всё через одно место, всё нужно досканально ручками прописать! Для какой-то обычной кнопки нужно аж 3 переменные прописать. Чтобы меняла вид, цвет и какую переменную включать будет. Можно прописать, когда она будет невидима, а вот простое условие, когда она будет видима, не предусмотренно!
У меня стоит CS sp17, пробовал функцию 23 (чтение/запись), компилятор ругается. Может что-то не правильно делал.

Евгений Кислов
24.02.2025, 17:16
Чем больше я работаю с CS, тем больше я ненавижу эту программу!!! Всё через одно место, всё нужно досканально ручками прописать! Для какой-то обычной кнопки нужно аж 3 переменные прописать. Чтобы меняла вид, цвет и какую переменную включать будет. Можно прописать, когда она будет невидима, а вот простое условие, когда она будет видима, не предусмотренно!
У меня стоит CS sp17, пробовал функцию 23 (чтение/запись), компилятор ругается. Может что-то не правильно делал.

ПР все равно не поддерживает функцию 23.
Так что придется настраивать отдельно запрос чтения и запрос записи.

andrey.elektrik
24.02.2025, 17:36
Добрый день.

Можно сделать так:

Объявить три отдельных переменных типа WORD (названия условны):

wRead - значение, циклически считываемое из регистра ПР
wWrite - значение, записываемое в регистр ПР
wVisu - переменная, записываемая в визуализации (как раз wVisu.0 и т.д.)

Формировать wWrite в коде следующим образом:

wWrite := wRead or wVisu;

Т.е. при записи в регистр ПР - запишутся все биты, которые там сейчас установлены + те, которые вы устанавливаете в визуализации.

Евгений, а можно пример, как это сделать на LD или FBD ?

МихаилГл
24.02.2025, 17:41
Можно прописать, когда она будет невидима, а вот простое условие, когда она будет видима, не предусмотренно!

Пишите условие видимости, обводите скобками и впереди ставите NOT

andrey.elektrik
24.02.2025, 17:43
Пишите условие видимости, обводите скобками и впереди ставите NOT

Спасибо! Попробую

Валенок
24.02.2025, 18:01
В том то и дело, что на ПР103+СП310.... Есть только проект на панель, откуда я и беру номера регистров ПР с нужными мне данными. Вот и приходится как то выкручиваться.
А из СП310 повлиять на биты ПР можно?

andrey.elektrik
24.02.2025, 18:06
А из СП310 повлиять на биты ПР можно?

Вообще без проблемм. См. пост выше https://owen.ru/forum/showthread.php?t=39015&p=458131&viewfull=1#post458131

Валенок
24.02.2025, 18:19
Ну тогда несложный макрос (вообще не изменение а добавление) и можно сверху нужные биты ставить/валить и при этом только писать

andrey.elektrik
26.02.2025, 17:24
Ну тогда несложный макрос (вообще не изменение а добавление) и можно сверху нужные биты ставить/валить и при этом только писать

А можно какой нибудь пример , желательно на LD или FBD

kondor3000
26.02.2025, 17:36
А можно какой нибудь пример , желательно на LD или FBD

Какой нафиг LD ?
Пишите на ST, распаковка бит из маски бит, делается через точку b0:=Mask.0; b1:=Mask.1; b2:=Mask.2;
Упаковка в обратную сторону Mask.0:=b_0; Mask.1:=b_1; Mask.2:=b_2;

andrey.elektrik
26.02.2025, 17:43
Какой нафиг LD ?
Пишите на ST, упаковка бит в маску бит, делается через точку b0:=Mask.0; b1:=Mask.1; b3:=Mask.3;
Распаковка в обратную сторону.

LD привычней (больше 10 лет писал на нём программы на оборудование, правда с другими ПЛК). Правда в Кодесис такой LD ущербный, что жуть! ST только начинаю осваивать.

Валенок
26.02.2025, 23:04
А можно какой нибудь пример , желательно на LD или FBD
Я про панель спрашивал. Там си. Это даже не ST, хотя задача - плевая даже для начинающего.
Макрос - для обработки пакетика из нескольких регистров от верхнего уровня. Этого более чем достаточно чтоб записать любой бит в любое место панели - case/switch только.
В принципе это "Вид Б" на яйца из поста #15

Доработка самой панели - глобальный регулярный макрос обрабатывающий пакетик. Все остальное в панели даже подозревать об этом не будет. Проект же есть - сами сказали. Много ль надо чтоб только присылать:
Регистр X: Сделай то-то
Регистр X+1:С битом/регистром таким-то
+ide какой-нить чтоб дубли убрать.


.. в Кодесис такой LD ущербный, что жуть! ST только начинаю осваивать.
LD у всех сам по себе ущербный для задач чуть сложнее чем просто эл.схема