Коллеги! Я тут волею случая поменял профессиональную ориентацию, теперь занимаюсь (ну, то есть, осваиваю) программированием ПЛК. И мне показалось, что для отладки Modbus-сетей крайне мало бесплатных инструментов, если не ошибаюсь, только крякнутый Modbus Poll и есть... Не долго думая, решил сделать свой инструмент, и предлагаю всем погруженным в тематику протестировать, что вышло. По сути стремился сделать не хуже Modbus Poll, но бесплатно, более наглядно, более удобно, по-русски и т.п.
P.S. Поскольку программа работает в том числе и по IP, ей надо разрешить сетевую активность в брандмауэре Windows.
P.P.S. Возможно, я поторопился, утверждая, что бесплатных инструментов мало - тогда просветите, какие есть достойные, я что-то не нашел подходящих: либо слишком навороченные и неудобные, либо узконацеленные...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Полезное дело ! Как вернусь из отпуска, обязательно попробую. Нормальных инструментов действительно мало, но что-то всё таки имеется. Например ModLook (идёт вместе с эмулятором контроллера от создателей SoloScada. Есть ещё QModBus, Termite. Если сфера применения близка к энергетике, то возможно подойдут специализированные инструменты типа Spy485 от Прософт, Axon Test или Vinci protocol analyzer. Тут Modbus не самое тяжкое, на много хуже дела обстоят с более редкими протоколами (типа МЭК 870-5-101, -104, МЭК 61850). Вот по ним действительно почти ничего нет.
Сфера применения пока что очень простая (по задумке): дать возможность удобно и просто пообщаться с ПЛК или иным устройством Modbus, например, модулем дискретного вывода или ввода, чтобы убедиться в правильности монтажа подключений датчиков, реле и т.п. Чтобы в программе управления всякий раз не ковыряться.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Некоторые наблюдения по программе. Всё ИМХО. 1. Почему-то нельзя сменить тип уже созданной переменной. 2. Двойным щелчком по имени, адресу или значению переменной можно войти в режим редактирования данного параметра. Но для имени и адреса в добавок к этому ещё открывается окно свойств. Наверно надо либо режим редактирования, либо окно свойств. Выход из режима редактирования параметра только по щелчку в заполненную часть таблицы, т.е. по другим строкам, а более интуитивно щёлкнуть для выхода в пустое место таблицы или вообще мимо окна. 3. Float лучше выводить не с огромным количеством знаков после запятой, а в научном формате (123.456E-7). 4. При установке галки Hex в адресе хорошо бы в поле ввода перед числом для наглядности дописывать "0x". 5. Хорошо бы добавить для переменной вариант "без автоматического опроса" с кнопкой прям в таблице "опросить". Или галку в таблице "не опрашивать автоматически". 6. Статус последней операции Ok/Error имеет смысл только для группы, для переменной в этом столбце таблицы лучше выводить количество чтений. 7. Выделять цветом факт обновления переменной наверное лучше не само значение, а значок типа или в колонке статуса. 8. Лучше компилить программу под x86, для того, чтобы можно было её запускать на старых ноутбуках, которых много и которые прям очень хорошо подходят на роль таких вот простеньких управлялок для ПЛК.
Есть хотелка по функционалу для устранения проблем в чужих сетях. Для этого очень не помешал бы режим мониторинга. В нём программа сама ни чего не запрашивает, а только слушает порт. Все переменные от слэйвов, добавляет в таблицу и обновляет их значения там при повторах. В таблице колонки: кто запрашивал, от кого переменная, её тип, адрес и значение.
Спасибо за отзыв! Почти все вписал в план исправлений/улучшений, кроме: - статус ок/Error актуален именно для каждой отдельной переменной, т.к. часто из-за ошибок в адресации и/или номере функции чтения/записи обращение к переменной не работает, и тогда "групповая" информация об ошибке никак не поможет. - реализовать режим прослушки представляется мне невозможным в рамках выбранной концепции. Да и я вряд ли смогу в принципе... - Выделение цветом, имхо, принципиально делать на значении, чтобы глазами не бегать по строке.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
- статус ок/Error актуален именно для каждой отдельной переменной, т.к. часто из-за ошибок в адресации и/или номере функции чтения/записи обращение к переменной не работает,
В этом случае просто не будет происходить инкремента счетчика удачных чтений переменной. В некоторых девайсах адреса всех переменных доступны на чтение и на запись, естественно физически их нет и запись в них не оказывает ни какого влияния, но и не вызывает ошибки. Поэтому для полноценного флага ошибки переменной потребуется добавить ещё некое условие на ожидаемое значение.
Тут ещё мысль пришла. Таблицу вширь можно ведь легко увеличить, почему бы не разделить поле принимаемых данных и поле передаваемых данных (+ кнопка "Отправить")? Если при этом сделать сохранение в файле конфигурации передаваемых значений и общую кнопку "Записать все", то очень удобно будет конфигурировать ПЛК на потоке. Открыл файл конфигурации с требуемыми значениями, подключил новый ПЛК, нажал кнопку - записал требуемые значения, проконтролировал запись, подключил следующий ПЛК, и т.д. Многие ПЛК имеют огромное количество переменных, в этом случае тоже будет удобно подготавливать полную конфигурацию не за один заход, а за несколько раз постепенно. Если ПЛК расположен в труднодоступных условиях (в полях), можно будет заблаговременно, вообще без доступа к ПЛК, подготавливать несколько вариантов конфигураций, а потом быстро, за раз, проверить эти варианты.
На то и оператор, чтобы не добавлять в конфигурацию несуществующие, но не вызывающие ошибки, адреса. Вывести счетчик нет проблем, есть большие сомнения в целесообразности этого.
По поводу "однокнопочной записи кучи переменных" я подумаю. Пока видится поле переменной "по умолчанию", и отдельная кнопка "установить значения по умолчанию". Значения по умолчанию будут храниться в файле конфигурации. Пожалуй, еще нужна кнопка "сделать текущие значения значениями по умолчанию", чтобы считывать из "эталона" и потом тиражировать значения...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
это зачем? если просто в двоичном формате выводить - это легко, но воспринимать отдельные биты сложно все равно. если каждый бит в виде отдельной переменной - так это BOOL... если сразу 16 добавлять BOOL, но извлекаемых/упаковываемых в один UINT - это сложнее сделать, а необходимость что-то кажется сомнительной...
оно надо на самом деле?
Andrey_B писал(а):
два символа Ascii.
и что с ними делать? добавлять меню с кучей вариантов кодировок символов, тянуть шрифты для их поддержки? а смысл?
Andrey_B писал(а):
символ Unicode.
почти то же самое - зачем?
Andrey_B писал(а):
возможность изменения порядка следования строк переменных вручную
я подумаю
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Andrey_B писал(а): - BIN UINT. это зачем? если просто в двоичном формате выводить - это легко, но воспринимать отдельные биты сложно все равно. если каждый бит в виде отдельной переменной - так это BOOL... если сразу 16 добавлять BOOL, но извлекаемых/упаковываемых в один UINT - это сложнее сделать, а необходимость что-то кажется сомнительной...
оно надо на самом деле?
Надо. Вот буквально вчера смотрел настройку параметров обмена, так там скорость, чётность и количество стоп-бит упакованы в один регистр.
если просто в двоичном формате выводить - это легко,
Да, просто выводить в двоичном формате моноширинным шрифтом. И соответственно ввод в поле отправки тоже в двоичном формате (цифрами или прям галками). Иногда элементы конфигурации ПЛК задаются битами в переменой, и для простой установки одного бита приходится переводить переменную из hex в bin, ставить бит, переводить назад. Это долго и неудобно.
добавлять меню с кучей вариантов кодировок символов, тянуть шрифты для их поддержки? а смысл?
Некоторые ПЛК имеют текстовые идентификаторы названий, версий ПО и т.д. Поддержка кодов 127...255 может и не нужна, достаточно стандартных символов 32...126. Шрифт пофиг.
Юникод, честно говоря, пока не встречал, но от китайцев всего можно ожидать, сделать ведь не сложно.
Уже практически реализовал кучу новшеств (от битовых полей переменных до изменения типа переменной), как обнаружился боооольшой баг в стороннем компоненте моего проекта... В связи с чем проект замораживается на неопределённый срок.
Разморожу, как только решу проблему с чужой проблемой.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Спешу поделиться новостью: готова новая, сильно улучшенная версия программы! Скачивание инсталлятора по ссылке: https://cloud.mail.ru/public/XwdS/GZTyy5DY2 Все другие ссылки в теме более не актуальны.
В этой версии все сильно иначе, чем было, много нового, и даже, как мне кажется, уникального! Например, битовые поля для переменных - когда можно выбрать любое (до 16) количество битов из переменной (в любом порядке!) и из них составить новое значение, которое будет выглядеть, как отдельная переменная с возможностью менять её значение, и оно распределится по исходным битам переменной само!
Ну и много по мелочи...
С нетерпением жду, что кто-нибудь потестирует и отпишется... Сам я тестировал Modbus-TCP с реальным устройством в локальной сети и с симулятором SLAVE на localhost - вроде бы всё работало, как часы.
По прежней ссылке обновлен установщик. В новой версии я постарался исправить проблему с масштабированием шрифтов и дисплея, ну и с портами тоже, естественно.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
1. Сбивает с толку название пункта меню "Протокол обмена...". Заменить бы на "Лог обмена" или "История обмена". Понимаю, что изначально термин "протокол" интерпретируется как "запись всего происходившего", но в этой программе, с её спецификой, этот термин большинством скорее будет пониматься как "набор соглашений интерфейса, которые определяют правила обмена".
2. После старта отключённого на какое-то время, опрашиваемого устройства, надпись "Таймаут, мс" напротив подключения не пропадает. Только если передёрнуть его вручную.
3. В окне свойств, редактирование параметров происходит по двойному щелчку. Так и задумано? Для раскрывающихся списков это наверно нормально, но установка/снятие галки двойным щелчком выглядит как-то странно.
4. При физическом отключение моста USB-COM программа виснет намертво.
5. Пару раз вылетало окно с ошибкой из-за не остановленного процесса опроса. Четко понять условия так и не смог, вылетать перестало. Но при закрытии программы тогда вылетело такое окно: 6. Самый верхний элемент иерархии в дереве "Modbus Guru v2" в общем бесполезен. Или планируете в будущем кроме Modbus, добавить в программу поддержку ещё каких-то протоколов?
Отвечу по пунктам. 1. Log - это "журнал (регистрационный журнал)" по-английски, по-русски "лог" - это что-то такое ландшафтно-географическое. потому - протокол, ибо регистрация данных. возможно, надо перевести именно как "журнал" - это легко сделать. 2. не наблюдаю такого. более четко изложите последовательность действий для фиксации ситуации 3. да, так задумано, чтобы исключить ошибочное изменение 4. вечером проверю 5. странно. по идее такое окно не должно было появляться в принципе - это окно отладочной сборки, а выкладываю я релизную... но проверю. 6. самый верхний элемент иерархии нужен, как глобальный комментарий, чтобы не гадать, что именно мы тут видим. добавление чего-то иного не планируется.
спасибо за тестирование!
Добавлено after 6 minutes 58 seconds: да, в догонку: в концепции программы протокол = подключение, так что поддержка других протоколов, ежели будет такое решение принято, будет сделана путем добавления новых типов подключений.
кстати, вопрос: Теоретически, я могу добавить в программу поддержку подключений по таким протоколам:
- ISOTCP (вроде SIEMENS)
- MELSEC TCP (вроде Mitsubishi)
- Ibox
- WEST ASCII
Поскольку я пока слабо разбираюсь в многообразии ПЛК, я не знаю, что это за звери и с чем их едят, насколько это может быть востребованным и вообще, сочетается ли оно с концепцией программы.
Отсюда вопрос: добавлять или нет особого смысла?
Смысл в том, что тестировать это кто-то должен же... я точно не смогу.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
2. не наблюдаю такого. более четко изложите последовательность действий для фиксации ситуации
Старт опроса, пошло обновление переменной, выключаем modbus-девайс (USB-мост включен), появляются надписи красным напротив переменной и напротив подключения, подаём питание на modbus-девайс, обновление переменной возобновляется, красная надпись напротив переменной пропадает, напротив подключения - нет.
6. самый верхний элемент иерархии нужен, как глобальный комментарий, чтобы не гадать, что именно мы тут видим. добавление чего-то иного не планируется.
По идее в заголовке окна и так это видно. Может быть дать имя этому элементу как у текущего конфигурационного файла, а в программе предусмотреть возможность отображения в дереве нескольких таких файлов одновременно. Работать они будут по очереди или даже одновременно, хотя не уверен, что последнее может понадобится.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения