Кто нибудь встречал библиотеку ModBus Slave для CDS 2.3?
Что то я не нашел.
Вид для печати
Кто нибудь встречал библиотеку ModBus Slave для CDS 2.3?
Что то я не нашел.
ModBus Slave RTU реализовать неполучицо в виду устройства протокола, а вот ModBus Slave ASCII можно запилить на библиотеке ModBus.lib c помощью входящих в нее функций MB_ASCII_RX и MB_ASCII_TX.
не знаю что там может не получиться с рту, но такой бибки официально не существует, её придется самостоятельно написать
А ещё подробнее можно?Цитата:
проблемы с определением начала и конца пакетов
У протокола несколько уровней. прикладной, канальный и физический. На канальном уровне признаком конца/начала пакета(кадра) считается пауза или тишина продолжительностью не менее 3,5 шестнадцатеричных символов (14 бит). Знакомые буквы находятся уровнем выше который собственно и доступен программисту ПЛК. Если есть возможность распознавать кадры по паузе из пользовательской программы с удовольствием выслушаю )
я собственно делал слейв модбас рту, всё работало, бибку не выкладывал ни где. У Вас очень много теории и это Вам мешает понять, что слейв не инициирует обмен, пауза не пауза его не волнует, его интересует любой принятый байт, если он принял некий байт похожий на его адрес он переходит к последующему байту, тогда он узнает либо сразу размер всего пакета по номеру функции, либо потребуется прочесть еще один байт, после принятия нужного количества он приступает к анализу контрольной суммы пришедьшей и того что принял, после сравнения приходит к выводу какой ответ послать или не послать
мне просто интересно для трмок кто по Вашему слейвы написал люди или боги?
Точно так же как и мастер определяет пакет. Или предполагаете что он каким-то другим волшебным образом вычленяет пакеты ?
В этом как раз вся собака и зарыта )
Я думаю если б все было так просто то в существующей бибке слейв был бы реализован. Я тож писал слейв рту, и он тож "работал", но при определенных условиях. и как только в сети появлялись еще слейвы начиналась жопа (для программирования). Я спорить особо не хочу на эту тему и идею со слейвом рту забросил так как в нем нет особой нужды, точнее гемор при написании кода гораздо больше профита )
разбирать приходящие запросы и анализировать послать ответ или нет и еще дополнительно подготовить данные требуется как можно быстрее, чтоб мастер не устал ждать и переходить к другим устройствам, в мастере тоже требовалось произвести настройки, чтоб слейвы др.друга не затыкали
Мастер после отправки запроса слушает эфир, выцепляет кусок мусора который почему-то закончился подходящим интервалом и после этого начинает проверку этого мусора на предмет похожести на нужный ответ.
Слейв постоянно слушает эфир, выцепляет кусок мусора который почему-то закончился подходящим интервалом и после этого начинает проверку этого мусора на предмет похожести на нужный запрос
Найдите хоть одно отличие в выделенном
Код в студию как говорицо. как корабли бороздят пространства окиянов мы все и так знаем )
Кстати библиотека Modbus RTU slave есть для контроллеров Beckhoff. Правда не знаю, насколько она закрытая и плюс она может еще использовать какие-то нюансы их контроллеров на предмет в ней покопаться.
Вот бибку от Beckhoff глянул бы...
а в Modbus.lib никто "в мусоре" ничего не ищет. пакет от слейва появляецо после запроса и кончаецо потому что в линии кроме ответа от одного слейва больше ничего быть не может и мастер это знает. проверяецо CRC И если все гуд сверяюцо первые байты принятого пакета. адрес там... колво байт... и все. а вот у слейва в линии все что угодно может быть. и обрывки пакетов от мастера и обрывки пакетов от других слейвов (т.к. включицо он может позже чем мастер) ну и энти пакеты целиком где конец одного и начало другого он не знает и иксать в этом свой адрес потом команду и прочее... ну-ну )
Синхронизироваться можно по байту с взведенным девятым битом.
:D да еще в modbus RTU нет рукопожатий и подтверждений от центра выдачи времных ключей в том чтобы убедиться что ответил нам именно вот тот частотник а не злоумышленник (Петька с modbus slave софтом) У всех все работает - это протокол мастер слейв ... 1 мастер много слейвов ... и да 1 сломанный слейв может повесить всю шину.
так и Вы хвастались что что то делали и где этот код? Почему мы должны показывать первые
берешь твинкат ставишь, бибку ModbusRTU.lib там есть слейв... для ПК в том числе который работает через обычный UART (те через SysComLib)... если не разберешься готов помочь (стучи в личку)
Ну понятно, берешь... ставишь...
Тож хочу предложить домашнее задание из разряда сказок. Составить такой пакет, легальный ответ какого нибудь слейва, который будучи принятым другим слейвом не сначала (в виду того, что он включился на несколько миллисекунд позже чем другие участники обмена) будет расценен им как команду на запись какого-либо числа (например ноля) в какойнить свой регистр. Для того чтобы главной новостью утренних газет стало: "Деление на ноль убило человека" ;)
Например библиотеки Modbus от ABB запаролены, возможно тоже и с TwinCat. Нету под рукой чтобы ставить и смотреть, да и не надо.
В 3-м CDS есть библиотеки Modbus как мастер так и слейв.
обычно ловится в принимаемом потоке адрес (за ним все по протоколу и проверяем контрольную сумму, если не совпало ищем следующий адрес как у устройств (в потоке и тд) и все работает.. (в некоторых протоколах есть и разделитель фреймов каконить заданный символ, но тут такая же ситуация что и с адресом в самих данных может быть и символ разделитель фреймов :) )
а если надо бьютефул пользуй Profibus - там все вплоть до коннекторов и проводов стандартизировано и все всегда работает. (и на вопрос я взял штекер не стандартный а самодельный и у меня не чего не работает - тебе даже отвечать не кто не будет)
Ну если хочешь из модбаса сделать бьютифул - копай либы, доки, экспериментируй.. . Сам.
Тогда и никаких супер коннектеров и проводов не потребуется. Легко соединишься и простым пвс-ом.
murdemon поделитесь заветными цифрами и как именно открыть код, опробую в понедельник.
скинь бибку сюда... или в скайпе... там просто в открытом виде по определенному смещению нумберок :)
Проще было смещение указать. Гляньте, откроется, нет ?
Судя по размеру это пустышка, от которой толк будет только на родном для неё контроллере.
SST_TS_KB2 , но в этой бибки от абб все реализовано либо на уровне ОС либо на железном уровне (там протокол не расписан)... у ваги точно для SysLibCom.. такая же бибка
вот для бекова тож для SysLibCom TS6255-PLC-Modbus-RTU.exe (я бы даже поставил бы TwinCat2 но он Codesys2 ломает... так что только по спец запросу :))
Там у АББ несколько бибок связанных с Modbus, я только одну выложил.
Объясните, как вы нашли код, что-то не могу найти его в файле.
это магия... не какого мошенничества :D
Ну тогда тексты библиотек так же останутся магией...