Просмотр полной версии : Протокол BSAP
Vladlen95
19.01.2021, 13:13
Добрый день.
Столкнулся с проблемой реализации протокола BSAP. Данный протокол используется в ПЛК Control Wave (Emerson).
Для реализации я использую ПЛК110 и соответственно возник вопрос, может быть кто-нибудь сталкивался с этим редким протоколом? Или реализовал?! Или работал с самим Control Wave!
Буду признателен любой помощи и советам по поводу этой темы.
К неравнодушным в долгу не останусь)
alex_sstu
19.01.2021, 13:35
Добрый день! Тоже сталкивался с проблемой реализации данного протокола в CODESYS 3.5. Было бы интересно посмотреть комментарии людей которые с ним работали.
Vladlen95
19.01.2021, 14:24
capzap, конечно же я видел данный драйвер и цену на него.
Вопрос же состоит не в покупке данного драйвера, его аналогов или преобразователей, а в его реализации, программистами данного форума.
Эта тема создана для обсуждения подводных камней, с которыми придется столкнуться и оказания дельных советов от людей имеющих опыт работы с BSAP.
Vladlen95
19.01.2021, 15:24
так может спросить на форумах где обсуждают контроллеры от емерсон
Уважаемый capzap, я понимаю, что писать очевидные вещи проще всего, но вероятно Вы могли догадываться, что я приложил некоторые усилия в поиске решения на просторах интернета. К сожалению не нашел данной информации.
К Вашему сведению, протокол Bsap в контроллерах Emerson работает "из коробки". А мне интересно его реализовать на других контроллерах, в том числе для дальнейшего бесплатного пользования другими разработчиками, столкнувшихся с данной проблемой и не платить 233 280 р. за ИнСАТовский драйвер.
Newcomer
19.01.2021, 17:50
Уважаемый capzap, я понимаю, что писать очевидные вещи проще всего, но вероятно Вы могли догадываться, что я приложил некоторые усилия в поиске решения на просторах интернета. К сожалению не нашел данной информации.
К Вашему сведению, протокол Bsap в контроллерах Emerson работает "из коробки". А мне интересно его реализовать на других контроллерах, в том числе для дальнейшего бесплатного пользования другими разработчиками, столкнувшихся с данной проблемой и не платить 233 280 р. за ИнСАТовский драйвер.
Безумству храбрых поём мы песню.
Если протокол закрыт, то беЗплатно вы его не реализуете. Есть описание протокола? или его можно купить только за денюжку, как типа BACNet и т.д. ?
http://www.documentation.emersonprocess.com/groups/public/documents/instruction_manuals/d301401x012.pdf
Автор, это оно?
Очень похож на DF1 от AllenBradley, и наверняка тут тоже куча заморочек. По опыту с DF1 без устройства и логирования приема передачи хрен у вас что получится, без обид. над DF1 я месяца четыре пыхтел имея на руках ПЛК.
Глянул мельком, и шальная мысль, а не перелицованные ли у Emerson ПЛК от AllenBradley ? :)
Vladlen95
20.01.2021, 07:15
melky, да, протокол открытый и документация в свободном доступе, Ваша ссылка правильная.
ПЛК Emerson имеется в наличии, поэтому тестировать проблем не составит.
Вот как раз таки из-за заморочек я и создал эту тему, протокол неунифицированный, не просто со старта понять что к чему.
Сходство немного имеется в отливке корпусов, но по аппаратке их насколько знаю нет.
capzap, Newcomer, я могу понять скептецизм некоторых людей, которых видимо страшит или смешит сложная задача, но тем не менее задача стоит и её предстоит решать.
Убедительная просьба, если Вы хотите написать бесполезный комментарий, то не утруждайте себя бить по клавишам и других пользователей читать Ваш бред, чтобы не разводить мусор в этой теме. Спасибо.
alex_sstu
20.01.2021, 07:19
Столько сообщений, а по делу только от melky. Если это так сложно реализовать, возможно нужно добавить 3 звено в систему, скажем ПЛК от Emerson, который примет информацию от ПЛК Owen по доступному протоколу, а дальше по протоколу Bsap передаст информацию на другое устройство поддерживающие только этот протокол.
Отлично, тогда давайте в две руки так сказать :)
1. Определитесь с кодом расчета CRC, там два варианта при беглом взгляде как и у AllenBradley - CRC и CRC1, CRC2 то есть ПЛК настраивается на одну из них (скорее всего, так как в зависимости от ответов и запросов прыгать то с однобайтовой CRC на двухбайтовую это надо быть идиотом)
Если CRC считается так же, как и у Алена, то код на C# у меня есть, хотя по заказу такие вещи меняются на раз и вот вам другой протокол.
2. В зависимости от типа CRC в расчет попадают разные блоки данных, была у Алена такая пакость
3. DLE, STX, ETX спецсимволы например DLE = 0x10 если попадается в блоке данных, он удваивается и при этом удвоение не участвует в расчете CRC
4. из-за удвоения DLE неизвестна длина ответа, так что тут указанием буфера для приема не обойтись, либо брать его заведомо больше и потом искать окончание посылки и принимать решение, в любом случае вы попадаете на timeout
з.ы. вообще наверное проще в личку перейти. От вас будет нужно видео работы с программой, где там переменные для передачи, как это настраивается и т.д. чтобы понять, насколько это близко к AllenBradley и смогу ли я помочь. з.ы. на ПЛК я протокол не писал, делал для RapidScada и там помог разработчик, доработав код остановки по массиву байт при чтении и плюс потом дочитывал 1 или 2 байта CRC. Можно ли такое реализовать в ПЛК даже не представляю...
melky, да, протокол открытый и документация в свободном доступе, Ваша ссылка правильная.
ПЛК Emerson имеется в наличии, поэтому тестировать проблем не составит.
Вот как раз таки из-за заморочек я и создал эту тему, протокол неунифицированный, не просто со старта понять что к чему.
Сходство немного имеется в отливке корпусов, но по аппаратке их насколько знаю нет.
capzap, Newcomer, я могу понять скептецизм некоторых людей, которых видимо страшит или смешит сложная задача, но тем не менее задача стоит и её предстоит решать.
Убедительная просьба, если Вы хотите написать бесполезный комментарий, то не утруждайте себя бить по клавишам и других пользователей читать Ваш бред, чтобы не разводить мусор в этой теме. Спасибо.
Привет. Есть успехи? У меня есть кое-что потестировать, если у вас ещё остался ПЛК Emerson
Ax3 автор потерялся еще тогда, так что даже близко к тестированию не подобрались.
Привет. Есть успехи? У меня есть кое-что потестировать, если у вас ещё остался ПЛК Emerson
И что вы сделали для тестирования ?
Отлично, тогда давайте в две руки так сказать :)
1. Определитесь с кодом расчета CRC, там два варианта при беглом взгляде как и у AllenBradley - CRC и CRC1, CRC2 то есть ПЛК настраивается на одну из них (скорее всего, так как в зависимости от ответов и запросов прыгать то с однобайтовой CRC на двухбайтовую это надо быть идиотом)
Если CRC считается так же, как и у Алена, то код на C# у меня есть, хотя по заказу такие вещи меняются на раз и вот вам другой протокол.
2. В зависимости от типа CRC в расчет попадают разные блоки данных, была у Алена такая пакость
3. DLE, STX, ETX спецсимволы например DLE = 0x10 если попадается в блоке данных, он удваивается и при этом удвоение не участвует в расчете CRC
4. из-за удвоения DLE неизвестна длина ответа, так что тут указанием буфера для приема не обойтись, либо брать его заведомо больше и потом искать окончание посылки и принимать решение, в любом случае вы попадаете на timeout
з.ы. вообще наверное проще в личку перейти. От вас будет нужно видео работы с программой, где там переменные для передачи, как это настраивается и т.д. чтобы понять, насколько это близко к AllenBradley и смогу ли я помочь. з.ы. на ПЛК я протокол не писал, делал для RapidScada и там помог разработчик, доработав код остановки по массиву байт при чтении и плюс потом дочитывал 1 или 2 байта CRC. Можно ли такое реализовать в ПЛК даже не представляю...
В RapidScada реализована какая-то часть протокола?
Там (в BSAP) есть как минимум RBD, RBE, Alarm, PTP и куча всякой всячины типа аудита.
Или же там (rapidscada) реализована программа верхнего уровня, которая опрашивает контроллеры?
tpiat, с какого бы там что-то было реализовано?
Человек тогда пропал совсем, а теперь только за деньги :)
"з.ы. на ПЛК я протокол не писал, делал для RapidScada"
Меня заинтересовал этот фрагмент
Вчера скачал RapidScada, про bsap ничего не нашёл
Да мне все равно, что вас заинтересовало. Берете шашки (исходники и VisialStudio) в руки и пишите.
з.ы. а по прочитанному выше непонятно, что даже до попыток реализации дело не дошло?
In_Da_Cher_A
01.09.2025, 10:04
некоторые слишком впечатлились сериалами про бескорыстные стартапы программистов и решили ломануть брендовый протокол? вопрос только один - нахуа? чтобы условный "Сечин-Потанин" стал ещё богаче?
Протоколы открыты, ломать не требуется, только получить понимание и программировать. Это без заинтересованности просто неинтересно.
Драйвер для DF1 я писал по одной причине, светил проект, не случился правда. Писать под basp читать выше почему не интересно.
Да мне все равно, что вас заинтересовало. Берете шашки (исходники и VisialStudio) в руки и пишите.
з.ы. а по прочитанному выше непонятно, что даже до попыток реализации дело не дошло?
Спасибо за вежливый корректный ответ.
Мне Ваш совет не пригодится, уже реализовал, правда, не на Visual C++, а на QT+ gcc.
Реализовал ту часть, которая в контроллере. Думал, есть в скаде та часть, которая в Winlows или Linux этим рулит.
Нет -- значит нет. Сажусь писать.
Всем удачи.
tpiat если нужны будут подсказки в части реализации механизмов для RapidScada, обращайтесь. Найдете мою почту в некоторых драйверах под нее. Меркурий, МЭК61107, Овен Cloud и других.
Пишите. Если это то же, что и протокол DF1 (я не вдавался в подробности в виду отсутствия возможности подключения к ПЛК), можете попробовать его. Там только две функции реализовано (чтение и запись).
Как надо контролировать и останавливать опрос, как считать CRC, этим поделюсь без проблем. (если там все схоже с DF1)
Ну и в Рапиде не C++, там C#
Да собственно на самом деле я уже глянул на Рапиду. Там интересующего меня куска нет.
А так у меня мои контроллеры вперемешку с ControlWave по BSAP работают, сижу пишу манагера верхнего уровня.
tpiat ну если написать манагера верхнего уровня для вас проще, чем просто драйвер, а в качестве манагера бы выступала scada со всем своим функционалом, тоды да, наверное проще.
Ну в любом случае, я сказал "а" :) частью кода могу поделиться, который использовал. Самое фиговое там, если оно прям похоже на DF1, это то, что надо добавлять стафф символы в пакеты, но при этом они не участвуют в расчете CRC.
При этом в зависимости от типа CS или CRC (1-но или 2-х байтная контролька) разный набор данных надо запихивать для расчета.
Так я собственно и пишу скаду. :-)
Драйвер УЖЕ пашет.
CRC уже корректно считаю, символ DLE добавляю, тоже норм. Проверяю на родных emerson.
Программа работает на любой позиции.
Но верхушка должна быть от emerson. Сейчас это OpenBSI Alarm manager, NetView и CatchRBE.
Сейчас решил и верхушку свою поставить.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot