Вверх ↑
Ответов: 165
Рейтинг: 7
#1: 2018-09-14 14:37:00 ЛС | профиль | цитата
Здравствуй Krendeleev
Ну как, работа за 3 месяца продвинулась?
-по поводу затруднений опроса и ожидания
я писал на специфические протоколы ,profibus,fc-drive,ppi и ничего более умного чем последовательный опрос всех устройств не придумано.
-broadcoast сообщения есть во всех протоколах, но привязываться думаю будет неправильно,разве что на стадии начальной инициализации.
я могу сбросить тебе как у меня реализовано но требуется пояснение
-по профибасу небольшая преамбула
профибас синхронный протокол, и ни какие хищрения с программной реализацией опроса не помогали,ведомые ус-ва все равно отваливались по времени.
Помогла реализация цикла опроса записи-чтения вынесенная в dll, работает по принципу зеркалирования памяти от ведомых ус-в. Таким способом удалось держать синхрон на 187.5/500/1м.
Так как библиотека запускается при старте- ей нужны параметры: адреса слейвов, адреса переменных,таймауты итд. Все это запихано в текстовом файле .GSD как требует того стандарт 10220(EN или DIN не помню).
Конечно цикл можно сделать в теле программы потоком, но удобнее что-бы в хайасм было всего 3 модуля: ini,read,write.

[ini] имеет 2 входа doOpen,doClose параметров не имеет.
При старте основной формы -> ini(doOpen) ->dll ->[чтение .GSD]->[распределение памяти]->[пуск потока]->[вечный цикл опроса].
При закрытии формы ->ini(doClose) ->dll ->[стоп потока].

[read] имеет 3 входа Type,Slave,Address,одна нижняя точка Result и выход onRead.
Type - бит (V), байт (VB), word (VW), word (VD), real (32bit)
Slave - адрес ведомого для чтения
Address - адрес переменной внутри ведомого Slave
Result - легитимность данных (ответ/неответ)
onRead - выход данных.
При работе read(Type)(Slave)(Address])->dll->[чтение зеркала памяти по адресу()()()] ->Result

write имеет 3 входа Type,Slave,Address,одна верхняя точка Data и выход onWrite.
все то-же что при чтении + вход данных сверху.

по поводу модбаса помню этот "ужасный" полином a002.
Если не бросил затею, выложу тут с пустым циклом и исходники.
И еще - библиотека ориентирована на чипы FTDI, то-есть работает непосредственно с драйверами
FTDI, не с ком портами!, благо преобразователей масса да-же на телефоны.
карма: 1

0