А чего ты так суетишься, если тебе это не нужно. Человек выложил бесплатно что-то полезное. Это второй значимый случай со времён Владимира Ситникова. Побольше бы таких толковых бессеребренников.
Вид для печати
IVM потому что если человек пишет сам, уже многое написано и работает, осталось добавить плюшку, другим меньше работы :)
я тоже пишу и в том числе бесплатно выкладываю, но на все тупо не хватает времени. Где-то разработчик scada прислушивается и дорабатывает по просьбам, надеюсь еще одни ребята прислушаются. Но опять же, на все это требуется масса времени, которого всегда не хватает.
Вопрпос странный, ответ простой: МОЖНОЦитата:
В СПТ962 кривой модбас рту протокол, а именно:
1 регистр (4 байта)
2 регистр (4 байта) адрес именно 2, а не 3
У вас такое можно провернуть?
Какой адрес задали, тот и будет считан. Сколько регистров надо, столько и будет считано. Например, можно считать int64 (8 регистров), начиная с 0, 1, 2,3,4 и т.д. адреса. Никаких ограничений. Если ПЛК/девайс такую адресацию не поймет - будет выведено сообщение об ошибке, все по правилам.
Вопрос может и странный, но ситуация интересная.
Т.е. 1,2,3,4,5,6,7,8 байты у данного прибора, если смотреть по порядку, это 1ый флоат, а 2,3,4,5,6,7,8,9, это уже 2ой флоат. И групповой запрос тут неприменим, я вот к чему.
Это не только не очевидно, но и, судя по вашим словам, не верно!
Мастер что-то просит и получает, а затем интерпретирует полученное для показа в человекочитаемом виде. Где тут слейв? Слейв кончился, когда выдал байты.
Слейв нужен, когда, например, у вас есть СКАДА-проект, но нет ПЛК с исполняемым кодом, который бы что-то в СКАДу выдавал. Вот тут вы и берете имитатор слейва, заставляя его что-то выдавать, прикидываясь ПЛК. Или в процессе разработки проекта ПЛК нужны для отладки модули ввода-вывода, а их физически нет - тут тоже нужен слейв-имитатор модуля, чтобюы там ошибки формировать или значения...
У меня была мысль сделать и продвинутого слейва, чтобы можно было даже скрипты запускать по принятым запросам... Типа имитировать работу реальной программы ПЛК. Но я так для себя и не решил, насколько это востребовано и будет ли удобно для конечного пользователя, ведь скрипт - это программирование, а многие ли "простые киповцы" любят/умеют программировать?! И оно им надо?!
Поэтому проект слейва дальше этих размышлений не сдвинулся.
Смотрите: в Modbus Guru концептуально вы видите ПЕРЕМЕННЫЕ, а не регистры. Если вы назначили переменной адрес 0 и размер переменной 4 байта - будет считано 2 регистра групповым запросом. Если вы сделали еще одну переменную с адреса 1 и задали её размер 8 байт - будет другой групповой запрос с соответствующего адреса на соответствующее количество регистров. И так далее.
Но если вы сделали 10 однорегистровых (или там 5 двухрегистровых) переменных с последовательными адресами, они все будут считаны одним запросом - для оптимизации запросов
Я не знаю, что там у вас за устройство, но 2 разных флоата должны иметь возможность их независимого считывания, т.е. не хочу первого читать - читаю только второй, и ничего не должно ломаться. Если так и есть - проблем нет, Modbus Guru разберется.
Забодай тебя комар Hardella IDE. но вам это не грозит, IVM ошибся :)
еще раз, чтение из прибора по ДРУГИМ командам Modbus, которые большинство scada или OPC не понимают.Цитата:
Это не только не очевидно, но и, судя по вашим словам, не верно!
Надо их считать, и перенести в обычные регистры Inputs или Holdings, чтобы те, кто не умеют эти регистры читать могли получить данные.
Ведь когда у людей MasterScada, купленная за ХХХ бабла, никто не будет ее менять ради одного прибора. И такая плюшка в виде вашего ПО очень бы помогла.
з.ы. ну по общению я уже понял, придется в итоге писать самому, когда появится время. Сейчас я модернизю драйвер счетчиков Меркурий, попросили добавить возможность задавать дату поверки прибора прямо в драйвер...
imaex да там Логика примудрила, типа задает в запросе адрес памяти, потом вычитывает... Вроде же тогда с МихаилГл разбирались с этим. В общем не важно. В общем плюшкой в программе могло бы быть зеркалирование нестандартных опросов в обычные регистры Modbus чтобы это могли понять все.
Да я это понимаю, но это все равно запрос регистра, расчитанного по формуле. Да понятно, что там виртуальная карта регистров, которая на каждый запрос кидает ответ, но начиная я запрошенной ячейки. Групповые уже не применишь, а если читать каждый, это получается время опроса увеличивается. Не интересный прибор, руки в одно место бы этим разработчикам...
Да ничего они там не перемудрили. Просто "прислонили" протокол Modbus к своей собственной схеме адресации параметров.
Забодай тебя комар да. Собственно если OPC сложнее, то и фиг бы с ним, тем более программа Виндовая. Но раз там Modbus, и код весь под протокол, то возможно не так страшен черт сделать и slave?
Вон МихаилГл вам подскажет с нюансами Логики к примеру. я поищу доки на приборы, где по другим командам запросы идут и скринами накидаю как хотелось бы. На счет доступа к приборам, нет у меня таких к сожалению, но можно сделать имитацию на обычных запросах по Холдингам или Инпутам, а потом просто подменить на другую функцию.
Ну, некий конвертер modbus-modbus, пожалуй, сделать можно... Но хотелось бы небезвозмездно, ибоОдно дело помочь собрату-инженеру, другое дело решить проблему коммерческой организацииЦитата:
у людей MasterScada, купленная за ХХХ бабла, никто не будет ее менять ради одного прибора
Забодай тебя комар так никто же не спорит, что плюшка в функционале может быть платной.
я например тоже планирую чтение архивов в приборах сделать платным функционалом. среди тех, что делал бесплатными. ибо нефик, тратишь на это массу времени потому что.
То есть халява это то, что вы сделали, аналог ModPoll, Геркулес и т.д. А вот чтение менее распространенных функций Modbus и проброс в обычные регистры можно и за денюжку...
Поверьте, когда людям деваться некуда, будут пользоваться, хоть и редко.
Теория мне понятна. Мне непонятна практическая реализация этого функционала "за копеечку". Все защиты ломаются, поскольку у меня нет этих экзотических приборов, сам я ничего не отлажу, а пользоваться услугами "посредников" означает добровольно "допустить утечку"... Как в таких условиях заработать - не понимаю. Так что готов просто на заказ что-то разработать хоть для вас, хоть для кого еще. И это будет в итоге непубличный продукт.
Забодай тебя комар на заказ, это какой-то один прибор (пример). не особо интересно в принципе.
Вы не можете сделать защиту на часть функционала? ну вот пример с архивами ТВ7...
Ну и кроме этого, все что не относится к функциям 0х01, 0х02, 0х03, 0х04, 0х05, 0х06, 0х10 сделать платным.Цитата:
Функция Modbus 72 (0x48) «Расширенная запись и чтение регистров с нумерацией» (Extended Preset And Read Multiple Regs With Numbers)
ПРИМЕЧАНИЕ! Данная функция является нестандартной функцией Modbus, предназначена для увеличения эффективности и надежности обмена данными. Отличается от стандартной функции Modbus 23 (0x17) Read/Write Multiple registers: 1) возможностью работы с буфером данных большего размера; 2) возможностью контроля порядкового номера запроса в серии
На счет отладки, надо подумать. посмотреть можно ли написать на функциях 0х04 например в процессе отладки, а потом заменить на 20, 17 и т.д.
Или придется для отладки писать какой-то эмулятор, чтобы именно на нужные функции отвечал ?
з.ы. защита она как правило для честных людей :)
У ТВ7 архивы вполне себе и стандартными функциями читаются.
imaex не изучал, там либо текущие данные, либо последний архив (часто так делают)..
Могу еще поискать доки на другие приборы, где не общепринятые команды Modbus используются.
вот скришот
Вложение 84128
Бывают моменты когда прям нужен чтобы прикидывался модулем, чтобы разобраться в сети в которой есть мастер, и посмотреть что эта зараза шлет на модуль. Несколько раз уже сталкивался.
А тут милое дело, прописал адресацию и регистры - и опа, вся инфа. (Тут рассматривается вариант когда не ты делал, а сделано до тебя и доступа к программе ПЛК нет)
Не могу.
Все "самодельные" защиты студентом-первокурсником факультета, где преподают программирование, снимаются за 15 минут. Все "фирменные" защиты стоят дорого, но всё равно снимаются, хоть уже и не за 15 минут и не первокурсником...
Честность определяется только жабой на груди: любая единожды проданная программа становится бесплатной, если она продана не очень жадному человеку...
Поэтому только на заказ и не за 5 рублей. Найдите клиента - сделаю, и % ваш :D
Для таких целей нужен какой-то хитрый инструмент. Если вы сделали карту регистров слейва, а ПЛК шлет что-то непонятное, то что вы там увидеть надеетесь? Слейв будет игнорить все непонятное. Значит, нужен не просто слейв, а логгер с расширенной информацией: какой пакет получил отлуп, по какой причине... И все это должно быть "красиво", а не просто дамп HEX-кодов, в котором задолбаешься разбираться, особено если он сыплет каждые 100 мс запросы (про еще чаще вообще молчу)... В общем, нужно для начала понимать, что требуется, а уж потом думать, как это сделать...
Здесь определяющее, сколько вы собрались брать за доп функционал. Если 1-2 тысячи, то думаю что никто не будет заморачиваться со взломом.Цитата:
Все "самодельные" защиты студентом-первокурсником факультета, где преподают программирование, снимаются за 15 минут. Все "фирменные" защиты стоят дорого, но всё равно снимаются, хоть уже и не за 15 минут и не первокурсником...
Опять же не знаю, насколько можно защитить Паскаль, C# практически невозможно, но потратить Х дней, чтобы избавиться от дотфускации, чтобы это запустилось будет стоить дороже, чем отдать 2 т.р.
Если же вы собрались брать десятки тысяч, то да, нет смысла ни защищать платными вещами, ни собственноручными, да и вообще нет смысла не только защищать, но и писать тогда.
Ну, тогда пусть потратившие XXXX рублей за дорогой софт и приборы продолжают кушать кактус... У меня час рабочего времени больше 2 тыр стоит, а сделать программу и отладить её это не три дня работы даже...
Забодай тебя комар а как же имидж ? :) слово Гуру в названии ПО лишнее :)
На все ваше есть один ответ - хочите дальше....
Причина проста, интеграторы и т.д. ищут на рынке готовые решения в 98% случаев, и только потом что-то заказывают в разработку, если никакого решения не найдено, а очень надо.
Часто проще заменить прибор по времени и цене на самом деле...
я от вас тоже ничего не хочу на самом деле :) я предложил вам вариант, когда ваше ПО может оказаться востребованным многими, но увы, вы выбрали нишу и другой путь...
как недавно кто-то выразился - о, еще одна scada? зачем она нужна?
у вас все точно так же, только применительно к утилите для Modbus.
сканера нет, дополнительной плюшки нет - зачем? чиста поржать? :)
А разве Modpoll платный ? чего-то я не помню этого. Или он платный в каких то моментах опять же?
К тому же вам про Геркулес еще намекнули.
Вообще с точки зрения Modbus - как-то одинаковые утилиты и не впились... Просто настолько езъезженный протокол, что и не требуется простых вещей. OPC, Scada многие позволяют работать с этим протоколом, что отдельно взятой утилиты и не требуется. Ну разве что у людей Scada платная, или платный OPC используется.
:D Очень характерный вопрос. Для трофейщика.
Вот давайте сделайте в modbus poll параллельный опрос нескольких устройств с разнотипными данными. Вам не надо, понятно. Значит - никому не надо.
Что такое Геркулес - я лично не знаю. Но, это не значит, что он никому не нужен.
imaex просто практически не пользую, и забыл уже :)
я выше писал, у это делаю средствами scada системы. и параллельно и последовательно и с логированием.Цитата:
Вот давайте сделайте в modbus poll параллельный опрос нескольких устройств с разнотипными данными
даже если надо просто посмотреть. Просто со своего бука настраиваю и подключаюсь, все. Ну если кому-то нужны красивые картинки, то да, в scada этого нет.
не смотрел еще, вот логи посылок и ответов есть там ? Возможность выделить лог и тут же посмотреть что есть что там есть ?
Каждый кулик своё болото хвалит... Но некоторые коллеги тестировали и отметили, что Modbus Guru справляется с опросом каждые 20 мс (TCP), что многим не по зубам (я лично не проверял, повторяю чужие слова).
Забодай тебя комар ну про кулика - поставил и с ходу - смысл в массиве REAL, если я не могу указать из каких регистров это читать? добавляй по одному Уася...
дальше стало лень. Почему массив ТОЛЬКО Holding ? как сменить не нашел
Давайте зайдем с другой стороны: а зачем вам массив?
Массив - это экзотика по просьбе одного из пользователей, у которого тоже какой-то дурной девайс настройки сохраняет одним запросом, причем в начале идет пароль для сохранения... Кстати - вот к чему ведет реализация "странных" хотелок - к тому, что пользователю не интуитивно всё понятно...