Правильные (достаточно большие) таймауты ожидания ответа - и наступает счастье, данные не сдвигаются.
Вид для печати
Правильные (достаточно большие) таймауты ожидания ответа - и наступает счастье, данные не сдвигаются.
Я в смысле не меньше 20мс, а чтобы получить 20 мс, надо ставить меньшее значение.
Что с ModBusTCP Slave? Починили?
еще нет. Как что-то станет известно я отпишусь.
Есть успехи с ModBusTCP Slave?
Если нет, то такой вопрос:
пытаюсь получать/отсылать что-либо через сокеты, но не удается получить/отослать. Настраиваю сокет
tcp_adr.sin_family:=SOCKET_AF_INET;
tcp_adr.sin_port:=SysSockHtons(555);
tcp_adr.sin_addr.ulAddr:=SOCKET_INADDR_ANY;
sock:=SysSockCreate(SOCKET_AF_INET,SOCKET_STREAM,S OCKET_IPPROTO_TCP,serr);
serr1:=SysSockBind(sock,ADR(tcp_adr),SIZEOF(tcp_ad r));
serr2:=SysSockListen(sock,1);
param_ctrl:=1;
SysSockIoctl(sock,SOCKET_FIONBIO,ADR(param_ctrl));
Затем в цикле:
rcv_bytes_cnt:=SysSockRecv(sock,ADR(rcv_snd_buf[0]),1024,SOCKET_MSG_OOB,serr3);
IF rcv_bytes_cnt>0 THEN
SysSockSend(sock,ADR(rcv_snd_buf[0]),10,0,serr);
END_IF
...и ничего не происходит. тишина.
на сайт выложили новую прошивку с поддержкой ModBusTCP http://www.owen.ru/catalog/32050189
и все-таки как сокеты заставить работать?
Начните с библиотеки oscat.net
http://oscat.de/index.php?option=com...d=28&Itemid=57
там есть любопытные примеры
Послали вы меня, конечно, интересно, но подскажите мне глупому, убогому и квадратному где там на какую кнопочку нажать чтоб oscat.net для Codesys v3 чудейснейшим образом на компьютер транклюкировался. А лучше, все-таки, поделитесь примером сокетов для v3, а то делаю по подобию v2 из примера и ничего не получается.
Заходите на вышеупомянутый сайт, в разделе для скачивания находите библиотеку для третьего КДС, там же скачиваете библиотеку для локальных сетей, правда я её использовал во второй версии, зато расписана работа сокетов в различных вариациях
И что характерно - библиотека в исходниках
Перепрошил контроллер - модбас слейв попрежнему не работает. Только если ранее вис только модбас, то теперь выкидывает и саму CODESYS.
Пример ВЕБ-сервера, выложенный на форуме, тоже с исходниками, но будучи переделанным для версии v3 не работает. Уважаемая техподдержка, будте так сказачно любезны , пожалуйста, попробуйте сделать ВЕБ-сервер для третьей версии.
Или каким образом можно массив значений передать/считать с ПЛК308 по езернету. Или тоже все ручками по 485 делать?
Товарисчи!!! Модбас не работает!!!! Как получить эхо по езернету? В вышеуказанных ссылках oscat.net есть только для CODESYS v2. Там сделано абсолютно также как я указывал ранее, но нифига не работает!
прошивку сейчас правим.
А с сокетами примером не подскажете? Чтоб что принял, то назад отправил?
Несмотря на обновление прошивки так ничего и не заработало. Все-таки как с сокетами в третьем кодесисе необходимо обращаться?
на сайт выложил исправленную прошивку для 308го. попробуйте.
Пробывал. То же самое. Вы их сами совсем не проверяете?
На каком-то сайте увидел надпись, которая говорила о том, что для программирования сокетов в третьем кодесисе необходим отдельнооплачиваемый модуль. Вы можете это как-то прокомментировать?
Версия 1,011? Да эту версию проверил сам, на 308 работает. На всякий случай рекомендую обновить и саму программу пользовательской прошивки
Заработало, но периодически подвисает. Связь восстанавливается через весьма заметный промежуток времени. Как устранить?
У меня терялась связь каждый час+-полчаса, восстанавливалась менее чем за секунду. проверял я вот этой программой
Связь рвется каждые 3-5 минут. Восстанавливается от менее секунды - до десятков секунд.
пробовали перезапускать соединение принудительно после каждого запроса, чтоб не ждать когда связь сама отвалится
Попробовал перезапускать - не сильно отличается. Соединил контроллер с ПК кроссом получилось работоспособно, но все-таки отваливается гораздо чаще, чем указал Евгений Сергеич. Связь при таком соединении восстанавливается быстро. Но все-таки, на мой взгляд, такого не должно быть.
Если на вкладке ModbusTCP_Slave->Config-Page указать количество Holding Registers(IW) = 2, а Input Registers(QW)=40, то на вкладке Mapping регистры появляются соответственно указанным значениям, но считать больше 2-х QW регистров нельзя до тех пор пока не поставить IW=40. Из чего я могу сделать вывод, что что-то в кодесисе напутано.
а количество передаваемых байт за один раз каково, у меня на плк100 если выше 490, то начинает зависать
40 слов (80 байт). Я не нашел способ изменить параметр MAX_IOBUFFER_SIZE=40 в библиотеке модбусТСП
нужно передать с ПЛК308 по ModBusTCP в Lectus 6 массивов по 255 байт, и получать несколько байт.
а переменных iw/qw всего 40
пробовал присвоить массив - присваивание вроде бы происходит, но только ничего толком не передается...
привет всем.. а как передать real значаение по модбас тсп
ПЛК304. Осваиваю Modbus_TCP_Slave. Значит так, есть регистры временного хранения (чтение 03, запись 06 или 16), входные регистры (чтение 04).
1. Правильно я понял, что сопрягать регистры временного хранения я могу только с переменными типа INPUT?
2. Не понял применение функции 16. По идее это групповая передача значений. Как это организовать на ST не понятно...
1. Нет - можно привязать к ним любые переменные.
2. Если у вас ПЛК - слэйв, то организацией группового запрос занимается мастер. Вам ничего делать не нужно.
См. пример из п. 8 документа СПК. Modbus (он написан для СПК, но принцип идентичен).
https://ftp.owen.ru/CoDeSys3/11_Docu...dbus_v.1.1.pdf
Если привязываю обычные переменные, после компиляции, выскакивает предупреждение:
------ Компиляция : Приложение: Device.Application -------
[WARNING] Без имени1: ModbusTCP_Slave_Device [Device: Ethernet]: 'Application.PLC_PRG.i2' - не корректный объект для присваивания
[WARNING] Без имени1: ModbusTCP_Slave_Device [Device: Ethernet]: 'Application.PLC_PRG.i2' - не корректный объект для присваивания
i2 - обычная переменная, если же присваиваю переменную VAR_INPUT - проблем и предупреждений нет
У меня ошибок не возникает.
Вложение 35884
На ПЛК в данный момент проверить не могу - но на виртуальном контроллере и СПК таких предупреждений не возникает.
Если оно не приводит ни к каким последствиям, то просто игнорируйте его.
ПЛК304. Месяц бьюсь с ModbusTCP_Slave. Работает очень не стабильно. SCADA постоянно отваливается, причём как-то странно, сначала начинает жутко тормозить - реакция на какое-нибудь включение в визуализации SCADA доходит до 10-ков секунд, иногда реакция мгновенная, при этом, когда тормозит, SCADA на секунды отваливается, потом восстанавливается. Через несколько минут работы на ModbusTCP_Slave появляется красный треугольник. Перезагрузка по питанию помогает не всегда, иногда даже вредит - во время инициализации в переменные проекта, я так понимаю, по сети, "залетает" какой-то мусор (смотрю значения переменных и массивов). Помогает сброс из среды программирования. Не уверен, но такое ощущение что проблемы и глюки с портом "набирают отбороты" т.к. первое время всё работало более-менее нормально, но заметил периодически, при загрузке проекта в ПЛК, начала слетать SCADA. Сейчас это уже не привязано к загрузке... Причём программа контроллера продолжает работать нормально.