PDA

Просмотр полной версии : Помощь новичку с настройкой обмена по МОдбас



!!!topor
05.08.2019, 16:51
Доброго времени суток

Приобрел СПК110.
С визуализацией разобрался, теперь мне нужно подключить по RS485 к ней польский пид-регулятор температуры
Сделал все как в инструкции " НАстройка обмена по протоколу Modbus в Codesys v 3.5" однако пишет "Шине не активна данные не актуальны и тд."
Вроде адреса и регистры правильно указал, через преобразователь МОХА и модбасПул все пингурется, однако в кодедус не могу увидеть содержимое регистров.
Версии библиотек модбас чуть позднее чем таргет файлы панели. Таргет 3.5.11.5004, МОдбасы 3.5.11.20 Slave 3.5.10.30
Вопрос что делать то?
Может я как то неправильно переменные задал в PLC_PRG?
Или нужно еще какую то настройку в ST- кодах делать?

П.С,. с кодесусом раньше никогда не работал. Буду очень признателен за помощь

Евгений Кислов
05.08.2019, 16:55
Добрый день.
Выложите, пожалуйста, скриншоты настроек Modbus Pool и CODESYS.

!!!topor
05.08.2019, 17:05
4386143860438624386343864

Вот с Codesysa,
с ModbusPool пока не могу (далеко от оборудования сброшу завтра)

Евгений Кислов
05.08.2019, 17:14
На последнем скрине видно настройку Всегда обновлять переменные - поставьте для нее значение Вкл. 2 (Всегда в задаче цикла шины).
Если нет ошибок в адресах слэйвов/номерах функций/адресах регистров - то обмен должен работать.

!!!topor
06.08.2019, 09:19
Доброе утро, Спасибо за рекомендации, попробовал, ничего не заработало.

Сделал программку чисто под обмен с пид-контролером по модбас.
Подключил параллельно МОХА, (провода А, В на МОХЕ и на клемнике СПК совпадают, на СПК подключил к RS485-1 в Codesys выбрал COM1)
Скрины с модбаса ниже
438844388543886
Как видите, через МОХА обмен идет.
Вот скрины самой програмки
43887438894389043891
Тут у меня возник вопрос, каким образом нужно указывать номер регистра для чтения? 0х7002 или просто 7002?
Важен ли тип данных (в польском пид регшуляторе для регистра 7002 тип данных integer, а кодировка 32 bit)
43888

Вот объявление переменных в PLC_PRG
43895

Люди добрые, понимаю, вопрос глупый, но помогите настроить обмен пожалуйста

Евгений Кислов
06.08.2019, 12:14
Пришлите в личку данные для доступа по TeamViewer, пожалуйста.

Avdey
07.08.2019, 07:29
Добрый день, уважаемые гуру! Не хотелось создавать новую тему, ибо так же нужна помощь с модбасом. Имеется СПК107 М01(Master) и Segnetics Pixel(Slave), Пиксель управляет приточно-вытяжной вентиляцией, для связи используется RS-485, длина линии около 50м. Есть карта регистров Пикселя, адреса на запись работают, а считать данные не могу. Понимаю что где то что то не заметил или не понял, прошу ткнуть в ошибку и по возможности объяснить.43937 43936

Евгений Кислов
07.08.2019, 07:37
Добрый день.
Попробуйте вместо 40970 в CODESYS указать адрес 969 и далее по аналогии.
См. здесь шаг шестой:
https://dl.segnetics.com/WebHelp/SMLogix/index.html?example_work_with_invertor.htm

!!!topor
07.08.2019, 14:10
Спасибо за помощь, все получилось.

Теперь возник другой вопрос, как собирать переменные из регистров разных типов
для integer 32bit понял, нужно указывать номер регистра и длину 2, а дальше проводить манипуляции с очередностью массивов
а как быть с регистрами Float 2x16bit?
4395143952

Евгений Кислов
07.08.2019, 14:26
Сложно сказать, не видя документации, но скорее всего там тоже длина 2.

Avdey
09.08.2019, 09:46
К сожалению не получилось(( Попробовал создать все возможные адреса, и привязать к отдельным переменным, но все также без результата. Может неправильно переводим из одного типа в другой?
Это адреса Modbus
43985

Это переменные в программе
43986

Этим объединением пробуем перевод из array of Word в int
43987

ну и визуализация
43988

Евгений Кислов
09.08.2019, 09:50
Насчет преобразования - посмотрите здесь п. 4.4:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_Modbus_v.1.1.pdf

Avdey
09.08.2019, 12:03
да, по этому документу и создавал объединение

что то скрины не вставились
43992439934399443995


upd. Ответили разработчики по для пикселя, вот что у них получилось
43996

Евгений Кислов
09.08.2019, 12:24
Вы считываете по одному регистру, а для REAL (float) надо 2.
В документе это описано.
Если вы предоставите доступ по TeamViewer, то постараюсь вам помочь в настройке.

Avdey
09.08.2019, 13:17
По поводу доступа постараюсь.

я пытаюсь считывать Производительность вентилятора вытяжки по адресу 40981, там тип INT.
я выбрал этот адрес так как он стоит между остальными, и изменения в плюс/минус единицу все равно бы дали какие нибудь данные.
43997

куда потом скинуть данные на доступ?

Евгений Кислов
09.08.2019, 13:22
По поводу доступа постараюсь.

я пытаюсь считывать Производительность вентилятора вытяжки по адресу 40981, там тип INT.
я выбрал этот адрес так как он стоит между остальными, и изменения в плюс/минус единицу все равно бы дали какие нибудь данные.
43997

куда потом скинуть данные на доступ?

На почту из подписи. Либо в течение ближайшего часа, либо в понедельник.

Avdey
09.08.2019, 13:44
так Вы какомой адрес считаете из панели: 981 или 40981?

я пробовал считывать 981, 30981 и 40981 по Read input и Read Holding функциям, все шесть вариантов :)

Avdey
09.08.2019, 13:46
На почту из подписи. Либо в течение ближайшего часа, либо в понедельник.

С доступом получится не раньше понедельника это точно :) а в какое время удобнее будет? у нас часовой пояс +5 Екат (т.е. плюс два часа от МСК)

Евгений Кислов
09.08.2019, 13:49
С доступом получится не раньше понедельника это точно :) а в какое время удобнее будет? у нас часовой пояс +5 Екат (т.е. плюс два часа от МСК)

C 7-00 по московскому времени.

Avdey
13.08.2019, 06:53
Доброе утро! С доступом пока что не получается :(

Вообщем я вытащил пиксель из щита вентиляции и притащил к компу, подключил к СПК и зашел в CodeSys, подключился и на Modbus Slave устройстве(которое Пиксель) мигает знак коннекта красный-желтый-зеленый и пишет что шина не запущена

Евгений Кислов
13.08.2019, 07:01
Доброе утро! С доступом пока что не получается :(

Вообщем я вытащил пиксель из щита вентиляции и притащил к компу, подключил к СПК и зашел в CodeSys, подключился и на Modbus Slave устройстве(которое Пиксель) мигает знак коннекта красный-желтый-зеленый и пишет что шина не запущена

Судя по описанию мигания - некоторые каналы опроса настроены правильно, а некоторые нет.

Avdey
13.08.2019, 09:46
Судя по описанию мигания - некоторые каналы опроса настроены правильно, а некоторые нет.

Я победил эту проблему, но теперь вылезла еще одна :) как правильное считать тип Long, реал дает не внятное значение

Евгений Кислов
13.08.2019, 09:48
Скорее всего, под Long подразумевается тип DINT из CODESYS.

Avdey
13.08.2019, 09:58
Скорее всего, под Long подразумевается тип DINT из CODESYS.

Нет(( Попробовал Dint выдает огромное значение, с перестановкой байт тоже самое :(

Avdey
13.08.2019, 10:29
Нет(( Попробовал Dint выдает огромное значение, с перестановкой байт тоже самое :(

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

!!!topor
14.08.2019, 12:37
Добрый день.
Продолжаю мучить передачу по Модбас
Читать содержимое регистров из slave устройств научился
Как теперь записать????
Вроде сделал все по инструкции

В СПК есть переменная WorkTempOven типа REAL, в которую я записываю значение через панель используя цифровую клавиатуру.
Как это значение поместить в регистр slave устройства размерность float 2x16 bits и float 32 bits?

Вводим номер регистра в настройках модбаса
44089
затем создаем объединение (наверное) чтобы превратить WorkTempOven типа REAL, в массив типа Word
44090

Как превратить WorkTempOven типа REAL, в массив типа Word? Объединение для этого подходит?
Какие переменные писать в соотнесении
44091

Буду очень признателен за рекомендации

Евгений Кислов
14.08.2019, 13:11
Посмотрите здесь п. 4.4:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_Modbus_v.1.1.pdf
Там есть конкретные примеры.

!!!topor
20.08.2019, 15:58
Возник еще вопрос.
Уверено читаю данные из регистров 32 bit и 2x16bit, однако после отключения питания slave -устройств, на панели отображается последнее значение регистра, а мне нужно чтобы был 0. как это сделать?

Как читать данные из регистров 16bit (integer)? Нужно ли делать объединение для этого?

Скольки разрядные регистры панели во вкладке канал "Modbus Slave"?

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

В инструкции идет описание подключений продукции ОВЕН, а мне нужно подключить сторонних производителей, поляков, китайцев и прочих.

Sulfur
21.08.2019, 06:52
Чтение\запись в регистры идет в формате WORD, в программах должно быть преобразование типов.

Евгений Кислов
21.08.2019, 06:59
Уверено читаю данные из регистров 32 bit и 2x16bit, однако после отключения питания slave -устройств, на панели отображается последнее значение регистра, а мне нужно чтобы был 0. как это сделать?


При создании канала можно выбрать соответствующее поведение:

44209

Валерий_333
02.09.2019, 18:02
День добрый. не стал создавать отдельную тему. как сделать что бы нажимной выключатель в визуализации отключался от состояния входа на ПЛК110. может есть какая-нибудь библиотека для компановщика типа кнопочный пост?

ASo
02.09.2019, 19:38
То же самое, только по русски.
Вы подключение ПЛК110 к СПК?

Валерий_333
03.09.2019, 08:16
Да. Я новичок в этом. Мне необходимо сделать открытие ворот нажатием кнопки на спк 110. А в визуализации два вида кнопок переключатель и нажимной выключатель. Необходимо чтоб нажимной выключатель отключиться от переменной() концевые ворот

ASo
03.09.2019, 09:13
Вы конкретней сформулируйте. В СПК110 нет дискретных входов.

Валерий_333
03.09.2019, 10:26
Я входы плк использовать нельзя?

Sulfur
03.09.2019, 11:39
Валерий_333
Рисуете кнопку, бит её действия передаете в ПЛК, тот делает необходимые действия и в другом бите передает вариант отображения этой кнопки (нажата\отжата).

Валерий_333
03.09.2019, 16:57
Я создаю логику в спк: выход 1 плк сработает от двух переменных, одна это вход1 плк а вторая это созданная переменная в спк, все работает, но в спк кнопка либо один раз нажал и пока не нажмешь еще раз она не выключится, либо нажал и держишь. А необходимо чтоб она отключилась, например от входа2 плк

Валерий_333
03.09.2019, 22:51
Если честно, то ничего из этого не понял. Видимо я как Вы сказали квадратиками делаю

Валерий_333
03.09.2019, 23:00
вот проект, только нажимной выключатель не отключается, пробовал через отключение ввода ставить какой нибудь вход из плк, он не отключает выключатель, а блокирует нажатие. может можно через plk_prg осуществить какую-нибудь логику типа самопотпитывающейся кнопки старт, типа кнопочного поста

Валерий_333
06.09.2019, 08:59
Судя по всему никак нельзя?