https://adroittech.co.za/adroit-maps-protocol-drivers/
ну как бы Modbus оно умеет, а так же есть OPC клиенты. Все как бы зависит от лицензий и прочего.
https://adroittech.co.za/adroit-maps-protocol-drivers/
ну как бы Modbus оно умеет, а так же есть OPC клиенты. Все как бы зависит от лицензий и прочего.
Сами ставим вот это если нужно передать Modbus TCP/RTU в МЭК-104:
https://enip2.ru/production/rtu/encm-3/
Ставится полноценный роутер iRZ RL21w например, сверху ставится софт, который преобразует Modbus TCP в МЭК 60870-5-104
https://www.cea-energo.ru/ru/product/irzr2
https://www.radiofid.ru/catalog/kont...y-asu-tp-info/
Снова здравствуйте, дорогие пользователи!
не хочу плодить кучу тем, поэтому продолжу свой вопрос тут, да и в принципе вопрос - продолжение темы
Ситуация на текущий момент такая: с плк110 по modbus tcp идёт информация на устройство сбора данных ЭНКМ-3, он в свою очередь преобразует в 104 протокол и отправляет на верх уже.
Все значения WORD вычитываются и записываются без каких-либо проблем.
А вот битовые значения (такие как например NSD_TR, LS4_AL и т.д., все необходимые биты которые вычитывал находятся с 57 по 101 адреса, и некоторые из них должны иметь функцию записи например P1_START/STOP... - пуск/стоп насоса и т.д.) выдавали ошибку.
Я решил вычитать эти регистры напрямую у плк через Modbus (пытался вычитать 01 функцией если я правильно помню). И мне писало ошибку что-то на подобие "illegal addres..." (я точно не помню как она звучала, а поискать её сразу забыл).
Если я правильно понял (нашёл похожую проблему по записи бит https://owen.ru/forum/showthread.php?t=30342), то нужно использовать библиотеку Modbus.
Хотя при этом же другие биты, которые идут в самых начальных адресах идут для панельки СП307, а там всё хорошо читается и задаётся
В ощем, надеюсь на Вашу помощь, надеюсь камнями сильно кидаться не будете
прикреплю проект с которым были трудности
Функцией 0х01 вы можете читать каждый бит по отдельности. Так никто не делает, упаковываете по 16 бит в Маску WORD и читаете как регистры, функцией 0х03.
Тем более что с WORD у вас нет проблем. То же самое и с записью, получили маску бит, извлекли биты.
На языке ST, биты упаковываются ( Mask.0 :=b0; ) и распаковываются через точку, например ( b1:= Mask.1; )
Последний раз редактировалось kondor3000; 25.03.2024 в 14:18.
особенность в том, что запись будет происходить через скаду
а в скаде заказчика есть условные кнопки, которые либо посылают по 0 или 1 на определённый бит, и менять внешний вид я не могу скады и они не будут
чтение, как я написал выше, чтение будет по 0х03 функции просто через маску, как посоветовали)
но запись вариант оставить только по отдельному биту. поэтому выход для меня это 0х05 функция
Последний раз редактировалось high_roll; 27.03.2024 в 14:52.
Если вы для чтения регистра используете функцию модбас 3, то это регистр хранения. И функция 5 к нему не применима в принципе.
Что касается SCADA, то я не очень понимаю - а зачем мне вообще знать, какие функции она использует для чтения и записи? Ну, т.е. знать как бы полезно. Для общего развития, так сказать. А так - об этом должен драйвер протокола позаботится.