Связанные сообщения
- Обновилась программа Modbus Slave (v8.2.2.1962) _x32_x64/ положил в
upload /лекарство прилагается.2023-07-20
-
- Опробованный надёжный вариант, и Master и Slave можно одновременно и по нескольку штук ANT(1 знак., 20.02.2025 21:44, ссылка)
- если честно меня тоже недавно напрягли. Встроить мой терминал на
какой-то базе в текущую ихнюю сеть. Там у них этот самый ОПЦ
сервер. И они будут у меня пытать по Модбас РТУ. Раньше это я
спрашивал частотники и уровнемеры.. А тут надо самому грамотно
отвечать. Вот и засада. :-((( - Лaгyнoв(20.02.2025 21:02)
- Берёшь freemodbus. Портируешь (там делов на один присест). И всё,
работает. Из не предусмотренного в том коде из коробки, я добавил
состояния удержания линии перед передачей и после передачи на пару
символов, чтобы обеспечить сброс ошибок на приёмниках, если на не
привязанной линии до моей посылки был шум. Ну и светодиод вставил -
включается когда увидел свой адрес и выключается когда переходит в
ожидание следующего кадра. Nikolay_Po(516 знак., 20.02.2025 21:15, ссылка)
- во дают! Даже для моего старого Z8 Encore демо есть. Спасибо, надо смотреть - Лaгyнoв(Вчера, 08:51)
- Спасибо, может тоже получится просто портировать и не ходить по
граблям. - Andreas(20.02.2025 21:49)
- Ну, там всё равно придётся составлять свой обработчик запросов. Стек даёт тебе номер регистра, а как реагировать на команды записи или чтения из/в этот регистр, писать приходится самому. Но, с другой стороны, это очень удобно. Иногда, по обращению к регистрам, действительно нужно не только данные обновить, но и действие выполнить. - Nikolay_Po(20.02.2025 22:02)
- Модбас же простой, как палка! Куда ж там еще и стороннюю либу
пихать? Смысл? Eddy_Em(84 знак., 20.02.2025 21:16)
- А насчёт простой - это да. Только когда ты своё интегрируешь с чужим, ты не можешь контролировать, как оно захочет, запрашивать поштучно или пачкой. Поэтому нужно реализовывать сразу несколько вариантов обращения к регистрам. В этом смысле этот фримодбас - образец как надо. И там (если включить оптимизацию компилятора) нет лишнего. Это не плюсы. Код получается весьма быстрым и компактным. - Nikolay_Po(20.02.2025 21:20)
- Эд, ты на своём месте! А у меня одно неверное движение - и минус несколько десятков тыс. руб. И можно повторять за время операции не раз. - Nikolay_Po(20.02.2025 21:17)
- Берёшь freemodbus. Портируешь (там делов на один присест). И всё,
работает. Из не предусмотренного в том коде из коробки, я добавил
состояния удержания линии перед передачей и после передачи на пару
символов, чтобы обеспечить сброс ошибок на приёмниках, если на не
привязанной линии до моей посылки был шум. Ну и светодиод вставил -
включается когда увидел свой адрес и выключается когда переходит в
ожидание следующего кадра. Nikolay_Po(516 знак., 20.02.2025 21:15, ссылка)
- поддержку с какой стороны? Твой прибор должен опрашивать внешнее
устройство по Modbus? Или наоборот отвечать внешнему? Внешнее
устройство опрашивать - нет проблем. Чем угодно. Я простой
терминальной программой опрашиваю уровнемер Сенсор через
преобразователь RS485-ЛИН. А с компа - китайский USB-RS485. Да, и
если Modbus RTU, то там нет стартового символа. Там первый байт -
адрес устройства. А вот если Modbus ASCII, то дам да, первый байт
всегда ":" - Лaгyнoв(20.02.2025 16:21)
- Я хочу, чтобы моя железка могла подключаться в качестве
подчиненного устройства к верхнему софту по стандартному протоколу
Modbus RTU. - vesago(20.02.2025 17:03)
- ну тут да, Если подчиненное устройство по RTU, то вероятно надо
будет строго с задержками. Для того и придумали Modbus ASCII, чтоб
было проще. - Лaгyнoв(20.02.2025 17:21)
- Modbus ASCII придуман для модемной и (радиомодемной) связи, где у
RTU будут проблемы с паузами, задержками, разрывами фреймов и с
управляющими символами. - reZident(20.02.2025 18:55)
- я общался с частотниками именно по Modbus ASCII. Хотя это было по
RS485. Но признаю, это была нефтебаза. До 200 метров. - Лaгyнoв(20.02.2025 20:53)
- И....? Какой из этого вывод? Я вам про историю, т.с. "генезис" протокола, а не про конкретные устройства. - reZident(20.02.2025 21:28)
- я общался с частотниками именно по Modbus ASCII. Хотя это было по
RS485. Но признаю, это была нефтебаза. До 200 метров. - Лaгyнoв(20.02.2025 20:53)
- Modbus ASCII придуман для модемной и (радиомодемной) связи, где у
RTU будут проблемы с паузами, задержками, разрывами фреймов и с
управляющими символами. - reZident(20.02.2025 18:55)
- ну тут да, Если подчиненное устройство по RTU, то вероятно надо
будет строго с задержками. Для того и придумали Modbus ASCII, чтоб
было проще. - Лaгyнoв(20.02.2025 17:21)
- Я хочу, чтобы моя железка могла подключаться в качестве
подчиненного устройства к верхнему софту по стандартному протоколу
Modbus RTU. - vesago(20.02.2025 17:03)
- Кроме софта просто для работы по протоколу Modbus бывает еще софт конкретно для проверки соответствия, типа такого: AlexG(31 знак., 20.02.2025 16:07, ссылка)
- У дикпика спроси. Такие расхожие вещи должен исчерпывающе
подсказать ... вот без уточняющих вопросов... POV(2330 знак., 20.02.2025 16:01)
- Спасибо! Дипсик реально - сила! Зря я его игнорировал. Много ценного вывалил, что у людей не допытаешь :) - vesago(20.02.2025 17:01)
- Дипсик сила, телеграм бот по нему делаю, очень помогает. Но как узкая конкретика или надо понять почему ошибки лезут, то фсе, он как студент начинает воду лить. Тут уже стековефлоу спасает, не матчасть же изучать.) - Andreas(20.02.2025 16:25)
- Бля, фантастика. Спасибо! Что-то я позабыл про такие новшевства. Ща поспрашаю. - vesago(20.02.2025 16:04)
- Учитывая то, что с компьютера нереально сделать такие паузы,
никакого "эталонного софта" физически существовать не может.
Единственный смысл проверять - если реализуешь мастера и есть
какие-то хитрожопые устройства, которые требуют строгого
соответствия протоколу. Вот на них-то и нужно проверять. Eddy_Em(384 знак., 20.02.2025 15:55)
- IDLE аккурат через 4 символа появляется, кажется так, поэтому все
достаточно точно. - AlexBi(20.02.2025 16:24)
- Не, у STM32 после 10 (или восьми, точно не припомню уже) "молчаливых" бит после стоп-бита. - Eddy_Em(20.02.2025 20:07)
- Почему нереально? У меня где-то валяется PCI-card с 4мя аппаратными RS485/RS422 портами. Там временем удержания трансивера в состоянии
передачи можно было через софтовый драйвер управлять. Кроме того,
если не волнует общая скорость передачи (не битовая!), то паузу 3,5
символа можно выдерживать произвольно длинную, но не менее 3,5 символов. Большей проблемой бывают разрывы данных в пакете
более 1,5 длины символа. По стандарту Modbus RTU такой пакет должен reZident(18 знак., 20.02.2025 16:21)
- Ну, ХЗ, я что-то не припомню сисвызовов, которые бы задержкой рулить позволили. А на уровне ядра однозначно такого нет. - Eddy_Em(20.02.2025 20:09)
- Проблема Tyмблep(858 знак., 20.02.2025 17:31)
- От маздая можно ждать чего угодно. В нормальных же ОС (если, конечно, длина пакета не превышает размер "ядерного" буфера - 4кБ, кажись) гарантируется непрерывная передача пакета. - Eddy_Em(20.02.2025 20:10)
- 1. У виндового драйвера компорта есть свои буфера на приём и передачу, и они заведомо больше максимального размера пакета RTU, который не может быть больше 256 байт. 2. Аппаратный последовательный порт сейчас имеет FIFO буфера на 16 байт, а буфер в преобразователях USB-UART ещё больше. 3. Драйвера исполняются с высоким приоритетом, им эти переключения ЫЫyкпy(131 знак., 20.02.2025 18:38)
- IDLE аккурат через 4 символа появляется, кажется так, поэтому все
достаточно точно. - AlexBi(20.02.2025 16:24)
- Физически мне все понятно, как функционирует. Меня заботит идеология его применения в моем случае. Я прикинул, можно сделать по-разному. 1 - можно схалтурить. Взять в качестве команды зарезервированное за пользователем значение и в тело (PDU) обернуть уже реализованный протокол. Но так, наверное, не красиво. Наверное правильнее использовать стандартные команды и организовывать взаимодействие с устройством через некую виртуальную модель памяти. Где все разбивать на условные vesago(33 знак., 20.02.2025 14:01)
- Присоединяюсь к вопросу, только задать хотел. Самое интересное, чем
проверить можно, каким софтом и дешевым железом, если в ТЗ есть
упоминания о неких номерах регистров, которыми должен управляться
прибор. Какие обязательные команды и ответы? В первый раз
вляпываюсь в него и нет даже понятия, с каким хостом будет девайс
работать. - Andreas(20.02.2025 12:50)
- А вот такие закидоны это нормально? А если несколько приборов в
сети. Andreas(193 знак., 20.02.2025 16:36)
- Это не нормально, на запросы с адресом устройсва 0 ответов быть не
должно (т.к. 0 это широковещательные запросы и будет конфликт при
попытке одновременного доступа к шине, RS-485 это вам не CAN) - AlexG(20.02.2025 17:08)
- Однако, у китайцев это сплошь и рядом. Видимо, надеются, что конкретно этот запрос будет послан лишь когда на шине одно-единственное устройство… Eddy_Em(201 знак., 20.02.2025 20:06)
- Это не нормально, на запросы с адресом устройсва 0 ответов быть не
должно (т.к. 0 это широковещательные запросы и будет конфликт при
попытке одновременного доступа к шине, RS-485 это вам не CAN) - AlexG(20.02.2025 17:08)
- всякие модбас-сканеры или опс-серверы для проверки своих поделий LordN(377 знак., 20.02.2025 13:47)
- Когда нашел Modbus Universal MasterOPC Server от Инсат забыл Лектус
как страшный сон - AlexG(20.02.2025 16:14)
- я так глыбоко не лезу в эту ерунду, мне и лектуса хватает. LordN(3 знак., 20.02.2025 17:31)
- а эти проги с обычным китайским usb-485 работают? - Andreas(20.02.2025 14:44)
- им все равно, лишь бы в системе последовательный порт было видно - AlexG(20.02.2025 16:14)
- да, лишь бы дрова нормальные были и винда бы их считала компортами, без выебонов всяких. - LordN(20.02.2025 17:32)
- им все равно, лишь бы в системе последовательный порт было видно - AlexG(20.02.2025 16:14)
- Эти modbus-сканеры и modbus-мастеры обычно поддерживают только
шесть стандартных команд чтения/записи. ТС хочет унутрь транспорта
Modbus вкрячить свой протокол/данные. - reZident(20.02.2025 14:14)
- Я в принципе пытаюсь прикинуть как лучше. Вкорячить свои данные -
заманчиво. Но это наверное халтура. Правильнее подогнать под
стандартные команды. - vesago(20.02.2025 14:27)
- Если состав ваших данных схож с "идеологией" Modbus (дискретные
входы и выходы, их состояние и управление) и вам нужно втиснуть
свой девайс в какую-то SCADA, которая работает со типовыми
Modbus-устройствами, то можно обойтись и стандартными командами.
Но, если что-то другое, то при попытке изобразить сложное
стандартными командами трудности могут возникнуть на ровном месте.
Например, передача чисел в формате float ;-) - reZident(20.02.2025 16:12)
- модбас ничего не знает, да и не должен знать, о флоатах, интах и
лонгах. LordN(665 знак., 20.02.2025 17:30)
- именно так и происходит в уровнемерах, с которыми я работаю. Они
там сказали, что с 1000 адреса идут показания в виде float32. Я
глянул Бусхундом - реально каждое значение в виде 4 байт и в сумме
флоат. :-) - Лaгyнoв(20.02.2025 20:57)
- Бусхунд это кто? Были у меня частотники импортные, там порядок байт
был описан в инструкциях. А вот к манометру пришлось искать подход
методом научного тыка. Его (манометр) делали знатные олдскулы.
Круглый копус, молотковая эмаль, в протоколе сначала передаются два
байта 0хАА. Но штука годная тем не менее. - Бapбoc(20.02.2025 21:11)
- это по научному - bus analyzer for capturing I/O and protocol from
devices. Лaгyнoв(1 знак., Вчера, 08:57, картинка)
- Интересненькая штука, я уже подумывал, как бы поудобней свой
сделать. Eddy_Em(698 знак., Вчера, 09:31, ссылка)
- Гляньте этот. Наш бедуин уже делал подобное. Довольно гибок и скрипты поддерживает: Nikolay_Po(1 знак., Вчера, 18:13, ссылка)
- логический анализатор? - SciFi(Вчера, 09:16)
- не, чисто программный но может показывать всё. Даже мышки. Лaгyнoв(1 знак., Вчера, 10:01, картинка)
- И меня за КОИ-8 тыкают. А в маздае кодировки мирить друг с другом
так и не научились… ☺ - Eddy_Em(Вчера, 11:32)
- ну да, меня тоже удивляет. Но не заморачиваюсь. :-) - Лaгyнoв(Вчера, 16:41)
- И меня за КОИ-8 тыкают. А в маздае кодировки мирить друг с другом
так и не научились… ☺ - Eddy_Em(Вчера, 11:32)
- не, чисто программный но может показывать всё. Даже мышки. Лaгyнoв(1 знак., Вчера, 10:01, картинка)
- Интересненькая штука, я уже подумывал, как бы поудобней свой
сделать. Eddy_Em(698 знак., Вчера, 09:31, ссылка)
- Меня всегда напрягали протоколы, где данные могут идти непрерывным
потоком, а разделяются лишь одним-двумя "магическими" символами. Eddy_Em(1191 знак., 20.02.2025 21:23)
- Сомнительное признание. На его основе можно предположить, что вы
автомат состояний в программе не умеете реализовывать. - reZident(20.02.2025 21:32)
- Умею. Но сразу предвижу в таких ситуациях возможные проблемы… - Eddy_Em(20.02.2025 22:02)
- Сомнительное признание. На его основе можно предположить, что вы
автомат состояний в программе не умеете реализовывать. - reZident(20.02.2025 21:32)
- это по научному - bus analyzer for capturing I/O and protocol from
devices. Лaгyнoв(1 знак., Вчера, 08:57, картинка)
- Бусхунд это кто? Были у меня частотники импортные, там порядок байт
был описан в инструкциях. А вот к манометру пришлось искать подход
методом научного тыка. Его (манометр) делали знатные олдскулы.
Круглый копус, молотковая эмаль, в протоколе сначала передаются два
байта 0хАА. Но штука годная тем не менее. - Бapбoc(20.02.2025 21:11)
- В Modbus нет стандарта для float, поэтому в зависимости от
big-/little-endian и чредования байт внутри слова может быть четыре варианта упаковки: lLhH или hHlL; HhLl или LlHh. И раз этот момент не
стандартизирован, то SCADA должна знать способ распаковки float для
каждого подключаемого к ней Modbus-устройства. О%ительное счастье, ага?
:-P - reZident(20.02.2025 19:11)
- ну не скада это должна знать и делать, а опс. если скаду грузить
таким гавном - она много не вывезет, быстро им завалится. LordN(167 знак., Вчера, 11:23)
- Угу. Конечно же OPC-сервер, про SCADA это я сильно обобщил. - reZident(Вчера, 11:28)
- ну не скада это должна знать и делать, а опс. если скаду грузить
таким гавном - она много не вывезет, быстро им завалится. LordN(167 знак., Вчера, 11:23)
- Угу, можно разделить, можно соединить, но это не стандартно, надо описывать, примеры готовить (желательно в паре распространнёных софтин), а то вас юзеры залюбят. Лучше сразу продумать и нормальное взаимодействие - symbions(20.02.2025 18:14)
- именно так и происходит в уровнемерах, с которыми я работаю. Они
там сказали, что с 1000 адреса идут показания в виде float32. Я
глянул Бусхундом - реально каждое значение в виде 4 байт и в сумме
флоат. :-) - Лaгyнoв(20.02.2025 20:57)
- модбас ничего не знает, да и не должен знать, о флоатах, интах и
лонгах. LordN(665 знак., 20.02.2025 17:30)
- Если состав ваших данных схож с "идеологией" Modbus (дискретные
входы и выходы, их состояние и управление) и вам нужно втиснуть
свой девайс в какую-то SCADA, которая работает со типовыми
Modbus-устройствами, то можно обойтись и стандартными командами.
Но, если что-то другое, то при попытке изобразить сложное
стандартными командами трудности могут возникнуть на ровном месте.
Например, передача чисел в формате float ;-) - reZident(20.02.2025 16:12)
- Я в принципе пытаюсь прикинуть как лучше. Вкорячить свои данные -
заманчиво. Но это наверное халтура. Правильнее подогнать под
стандартные команды. - vesago(20.02.2025 14:27)
- Когда нашел Modbus Universal MasterOPC Server от Инсат забыл Лектус
как страшный сон - AlexG(20.02.2025 16:14)
- А вот такие закидоны это нормально? А если несколько приборов в
сети. Andreas(193 знак., 20.02.2025 16:36)
- Со описанием стандарта Modbus вы уже ознакомились? В любом случае
будет не бесполезно. reZident(1 знак., 20.02.2025 11:27, ссылка)
- Спасибо, почитаю. - vesago(20.02.2025 11:48)
- И этого бы Автора. Я поддержал мизером. Но скопом бы надо таких поощрять. Дабы были. "Ликбез". Ссыль та забыл. :) bnb62(1 знак., Вчера, 12:17, ссылка)
- Спасибо, почитаю. - vesago(20.02.2025 11:48)