Просмотр полной версии : Работа с ПЛК73 Modbus RTU Master
Добрый день. Возникла проблема с ПЛК73 и платой расширения ПИ73-4. ПЛК73 пытаемся использовать как мастер устройств в сети. Пока пытаемся подключить к ПЧ фирмы INVT. Работаем напрямую с портом через библиотеку SysLibCom и ModbusLib, с UNM то же не вышло. Пытались использовать примеры приведенные на диске и форумах, пока не получается считать данные из регистров ПЧ. Регистр ПЧ к примеру 2100H (Read), порт открывается (TRUE), а вот данные из регистра не видим. Может у кого опыт есть работы с этими библиотеками, прошу помочь. Спасибо заранее.
lara197a
31.01.2015, 14:25
Вы в хекс(h) номер регистра вводите или в десятичном виде?
Пробовали и 2100 и 8448 (2100 в DEC)
lara197a
31.01.2015, 14:42
нужно в десятичном.
Попробуйте не по команде, а пусть стучит периодически.
Порт-то точно открыт?
Для начала к примеру попробуйте считать какой регистр из конфигурации.(плк слейв)
Если работает, то ПИ73 исправна.
Копайте программу.
В описании бибки есть готовые примеры. Один в один перепишите и все, только свои регистры подставляй.
В предыдущем посту вложение. Поправьте, может что не так прописываем.
lara197a
31.01.2015, 16:20
master1:=1; - удалите.
Таймаут поставьте 1000мс
Используйте только РТУ
Проверьте настройки в ПЧ
Номер порта 0?
Что за ПЧ?
Номер порта 0. Настройки скоростей, четности и тд ПЧ - Бибка одинаковы, адрес ПЧ в Сети - 3. ПЧ - INVT GD200. Попробуем рекомендации.
Ругается на номер порта 0. Дает ошибку.
В пристежке скрин.
lara197a
02.02.2015, 11:03
Это нормально.
Должно работать.
Нормально. Работа с ошибкой?
lara197a
02.02.2015, 11:17
тип данных COM0 не предусмотрен.
см. документацию библиотеки.
но работает. Когда делали ПЛК об нумерации портов для связи с этой библиотекой не думали.
Пробуем приконектиться к МК110. Может регистр ПЧ большой или не так считываем. Хотя в СПК107 ловили 2100 нормально, не было прорблем. Да и ОРС такие регистры подхватывает аж бегом и все норм работает.
Приконектили к МК110. Опрашиваем регистр 51(DEC), 33 в HEX (битовая маска входов). В буфере вываливает значение 51... И все. На вход 6 подал лог.1 (входов в МК110 = 8) По идее 32 должны увидеть, но пока ничего подобного не видно.
lara197a
02.02.2015, 13:26
Есть в примерах как считать значения с МВА8.
vardrager
07.11.2016, 13:53
Уважаемые знатоки, поодскажите пожалуйста с примером как передать с ПЛК73 параметр типа REAL на индикатор СМИ2. ПЛК должен быть мастер. Если вам нет желания помочь научиться работе с плк не пишите сюда. Я уже устал читать форум с ответами читай там , смотри здесь, неужели трудно конкретный пример привести с подробными комментариями по работе библиотеки ModBus . Заранее спасибо
Уважаемые знатоки, поодскажите пожалуйста с примером как передать с ПЛК73 параметр типа REAL на индикатор СМИ2. ПЛК должен быть мастер. Если вам нет желания помочь научиться работе с плк не пишите сюда. Я уже устал читать форум с ответами читай там , смотри здесь, неужели трудно конкретный пример привести с подробными комментариями по работе библиотеки ModBus . Заранее спасибо
:) а сюда (http://www.owen.ru/forum/showthread.php?t=13573) ходили?
vardrager
07.11.2016, 21:31
:) а сюда (http://www.owen.ru/forum/showthread.php?t=13573) ходили?
Уважаемый capzar , вы прикалываетесь??? туда я ходил ,берем пример запись параметра int и real в fbd и что там понять , тупой пример тупого преподавателя.
что такое DevAddr, FirstAddr, RegAddr, что такое bufer ы , что означают переменные f1 и f2 и почему у них такие значения, что такое ptr_f2 . Это просто пример для понимающего человека. Вы бы поняли например в пятом классе решенный пример интегрального исчисления???
vardrager
07.11.2016, 21:37
я понимаю что данный пример создал человек придумавший овен и для него это семечки, но я считаю это неправильно выдавать такие голые примеры
я понимаю что данный пример создал человек придумавший овен и для него это семечки, но я считаю это неправильно выдавать такие голые примеры
да, Вы с овеном не знакомы, но это не главное, Вам так же не знаком модбас
vardrager
08.11.2016, 08:35
Да не знаком, но интересно познакомиться, что в этом плохого, но если у вас нет желания научить не отвечайте.
vardrager так смотрите пример, открываете справку CodeSys и разбираетесь что есть что, а у же по непонятному задаете вопросы....
Вполне логичное поведение при изучении....
vardrager
08.11.2016, 12:05
что такое DevAddr, FirstAddr, RegAddr, что такое bufer ы , что означают переменные f1 и f2 и почему у них такие значения, что такое ptr_f2 .
Ну дак я и задал вопрос
Да не знаком, но интересно познакомиться, что в этом плохого, но если у вас нет желания научить не отвечайте.
да я как бы не на зарплате сижу на форуме ищу кому бы ответить и научить, у меня своя работа, командировки. А учат в ВУЗах, здесь дают совет в какую сторону пойти, проект полон комментариев, подскажу картинкой что можно увидеть комменты еще и заглянув куда следует
vardrager
08.11.2016, 13:06
Уважаемый capzap я ВАС и не просил меня учить , я просил подсказать тех кто может это сделать. Если вы не можете мне ответить на мой вопрос по каким-либо своим причинам, то можете не отвечать на мои посты картинками которые я видел десятки, я подожду менее занятого человека
Владимир Ситников
08.11.2016, 13:32
Уважаемый capzap я ВАС и не просил меня учить
Вообще, capzap дело говорит.
В вопросах "как прочитать RTU через modbus-FLOAT, если ПЛК является Ethernet в master сети" есть 2 варианта:
1) Либо "умеющий" научит вопрошающего (что весьма тактично в конкретном случае делает capzap)
2) Либо "умеющий" напишет весь код от и до. Единственный смысл, если написать код интересно самому "умеющему". Чего интересного в передаче FLOAT'а? Много раз уже делали. Ничего нового. Берёшь документацию и делаешь в режиме "что вижу то пою".
С точки зрения "вопрошающего" правильно действовать так:
3) "вот проект, который пересылает FLOAT, но приходит значение на 2.5 меньше, чем отправляется"
или так:
4) "вот проект, отправляю WORD -- работает, а при отправке FLOAT перезагружается ПЛК
или так:
5) "вот проект, при отправке FLOAT открывается пожарный кран, и заливает ПЛК водой"
В общем, можете ждать у моря погоды (того, кто сделает №2), или подумайте над пунктами №1, 3, 4, 5
я просил подсказать тех кто может это сделать
на вопрос что такое DevAddr смотрим картинку и видим в комментарии фразу адрес подчиненного устройства в сети МОДБАС, какой тогда ответ еще нужен?
vardrager
08.11.2016, 15:46
Уважаемый Владимир Ситников, по пункту 2 , "умеющий" уже написал код от и до, он как раз и есть в примере, на примере я разобрался что почем с переменной типа int , и если кто-нибудь меня спросит по данному примеру помощи я подскажу вот что:
COM_SERVICE - это блок "управления" портом.
Settings это "переменная" настроек порта, объявляется она в пользовательских типах , библиотека SYSLIBCOM, тип данных COMSETTINGS.
сами настройки копируются из примера
Settings.Port:=com_num; (*номер COM-порта*)
Settings.dwBaudRate:=9600; (*скорость*) скорость должна соответствовать скорости подключаемого прибора
Settings.byParity:=0; контроль четности 0-отсутствует, 1-нечетный 2- четный
Settings.dwTimeout:=0; таймаут обычно 0
Settings.byStopBits:=0; кол-во стоп битов устройства указывается в РЭ например для СМИ2 это 0-1 стоп бит (1- 1.5 стоп бита, 2- 2 стоп бита)
Settings.dwBufferSize:=0; Размер буфера устройства обычно 0
Settings.dwScan:=0; обычно 0
COM_TSK это управление портом OPEN_TSK - открыть порт, CLOSE_TSK - закрыть порт.
блок MB_WR_SNG_REG передает переменную int по сети modbus
mode- режим передачи либо MB_ASCII, либо MB_RTU
DevAddr - это адрес устройства в сети для СМИ2 это например 16
RegAddr - это номер регистра в который передаются данные указано в РЭ например для пердачи переменной INT указывается регистр 25
Value - это сама переменная которую надо передать
ComHandle - это переменная Settings.Port из настроек порта
TimeOut - это задержка ответа прибора указывается в РЭ к прибору например для СМИ2 это 45 мс
и это мне не сложно сделать . еслибы я получил такой ответ разобрался бы намного быстрее.
Мне не понятно дальнейшее в примере , как передать переменную float и я прошу разъяснить мне уже ГОТОВЫЙ пример ПОДРОБНО, а не филосовствовать на тему умеющих и вопрошающих
vardrager
11.11.2016, 07:07
вобщем господа, кто захочет передавать данные типа REAL на индикатор СМИ2 в готовом примере с диска не правильно установлена последовательность передачи байтов, buffer [1].. [0]..[3]..[2] не правильно , правильно будет 3.2.1.0. тоесть просто надо поменять циферки 1 на 3, 0 на 2, 3 на 1, 2 на 0.
asud-kip
15.03.2018, 12:48
Уважаемый Владимир Ситников, по пункту 2 , "умеющий" уже написал код от и до, он как раз и есть в примере, на примере я разобрался что почем с переменной типа int , и если кто-нибудь меня спросит по данному примеру помощи я подскажу вот что:
COM_SERVICE - это блок "управления" портом.
Settings это "переменная" настроек порта, объявляется она в пользовательских типах , библиотека SYSLIBCOM, тип данных COMSETTINGS.
сами настройки копируются из примера
Settings.Port:=com_num; (*номер COM-порта*)
Settings.dwBaudRate:=9600; (*скорость*) скорость должна соответствовать скорости подключаемого прибора
Settings.byParity:=0; контроль четности 0-отсутствует, 1-нечетный 2- четный
Settings.dwTimeout:=0; таймаут обычно 0
Settings.byStopBits:=0; кол-во стоп битов устройства указывается в РЭ например для СМИ2 это 0-1 стоп бит (1- 1.5 стоп бита, 2- 2 стоп бита)
Settings.dwBufferSize:=0; Размер буфера устройства обычно 0
Settings.dwScan:=0; обычно 0
COM_TSK это управление портом OPEN_TSK - открыть порт, CLOSE_TSK - закрыть порт.
блок MB_WR_SNG_REG передает переменную int по сети modbus
mode- режим передачи либо MB_ASCII, либо MB_RTU
DevAddr - это адрес устройства в сети для СМИ2 это например 16
RegAddr - это номер регистра в который передаются данные указано в РЭ например для пердачи переменной INT указывается регистр 25
Value - это сама переменная которую надо передать
ComHandle - это переменная Settings.Port из настроек порта
TimeOut - это задержка ответа прибора указывается в РЭ к прибору например для СМИ2 это 45 мс
и это мне не сложно сделать . еслибы я получил такой ответ разобрался бы намного быстрее.
Мне не понятно дальнейшее в примере , как передать переменную float и я прошу разъяснить мне уже ГОТОВЫЙ пример ПОДРОБНО, а не филосовствовать на тему умеющих и вопрошающих
Помогите с настройкой соединения. Не пойму куда заносить значения Settings. как понять "переменная"?
Schneider
23.05.2022, 10:06
тип данных COM0 не предусмотрен.
см. документацию библиотеки.
но работает. Когда делали ПЛК об нумерации портов для связи с этой библиотекой не думали.
у плк 73 два модбас порта. а можно указать судя из статьи только COM0. а как же к другому порту обратиться, че то не пойму...
https://ftp.owen.ru/CoDeSys23/05_Library/01_Manuals/SysLibCom_ComId.pdf
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot