| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Прибор, RS-485, Modbus-ASCII |
| Автор: Cergiy 15.4.2008, 11:23 |
| Приветствую всех! Из названия темы понятно что имеется: прибор, интерфейс RS-485, протокол Modbus-ASCII. Нужно например записать данные в регистр. (на самом деле много чего нужно) Но видите ли, я туповат и не догоняю. Допустим пользователь вводит число которое нужно записать (допустим это число будет 100). Я сначала должен в своей программе сформировать строчку в шестнадцатеричной системе 3A010601730064—0D0A, где 3A – начало посылки, 01 – сетевой адрес устройства, 0173 – нужный мне регистр, 0064(100d) - записываемые данные, потом должна быть контрольная сумма из 2-х символов(xxxx) о которой http://forum.vingrad.ru/forum/topic-206446.html и потом два символа конца посылки 0D и 0A (если я правильно понимаю это не 3338d, а именно 13d10d, записанные вместе). И вот, эту строчку мне надо переслать через COM-порт по RS-485, если я все правильно понимаю. И я не догоняю как это сделать. То есть как мне послать эту строчку так, чтобы прибор правильно ее обработал, ну что вот сначала пришел символ(3А) начала посылки, потом пошло «тело», а потом и 2 символа означающие конец посылки. Заранее благодарю за помощь! Я весь во внимании (я правда не знал в каком разделе лучше это спросить) |
| Автор: xvr 15.4.2008, 14:03 | ||
Знатная каша
|
| Автор: Cergiy 15.4.2008, 18:47 |
| Ой, я так и думал, что написал как попало, но уж как-то лучше не получилось. Вот за код благодарю, но вот как бы етот код представить на делфи? ИТ некоторые моменты не понятны - я с С никогда не работал. ну :0106 все понятно, а вот что дальше началось? К тому же, раз у меня этот 485 то нужно то включить RTS, потом время подождать и отключить RTS, да?! Кстате, может вы подскажите что непонятно, я по-понятнее объясню, ну чтобы и другие поняли. ) |
| Автор: xvr 15.4.2008, 19:08 | ||||||
Почти также - там тоже есть форматная печать, подробностей не знаю - с Делбфи не работал
|
| Автор: Cergiy 15.4.2008, 19:16 |
| Благодарю! Хорошо, я попробую написать то что вы предложили на делфи. Там же ведь чтоб работать с ком портами пришлось искать компоненты (некогда самому писать), а там все своеобразно реализовано... Ну да ладно, если у кого есть еще какие идеи слушаю внимательно. |
| Автор: Felan 16.4.2008, 07:44 |
| Кстати, если у тебя переходник с Эхом, то вот класс для отправки сообщений, который использует указанный выше класс для работы с портом. |
| Автор: xvr 16.4.2008, 07:56 | ||
У Modbus-RTU очень жесткие времянки, на Windows бес плясок с бубном выдержать практически невозможно, так что ASCII его разновидности тоже имеют право на жизнь Но в общем и целом бинарные протоколы для работы с железом выглядят предпочтительней. |
| Автор: Cergiy 16.4.2008, 08:08 |
| Люди Вот я прикрепляю файл который мне выслал производитель. Полюбуйтесь. "Не виноватая я". Добавлено @ 08:15 Но тогда я что-то не могу понять что мне делать с РС-485?! У нас вообще виртуальный COM порт потому как подключение через USB, "переходник" АС4 фирмы "Овен". Добавлено @ 08:18 Да и еще, есть рабочая прога от производителя которая свободно распространяется. Просто она не реализует некоторые моменты которые мне и поручили сделать, это типа, мой диплом и будет Она вообще работает нормально, просто выбираешь COM порт и все, все опрашивается регулируется. Ну это я так, мало ли, может это что-то прояснит. |
| Автор: xvr 16.4.2008, 11:26 | ||||
Нормальное описание
|
| Автор: Cergiy 16.4.2008, 12:30 |
Не спорю, это я к тому, что, вобщем-то, ASCII не моя идея. Хотя и написано, что поддерживается и RTU. АС4: Назначение Предназначен для взаимного преобразования сигналов интерфейсов USB и RS-485. Позволяет подключать к промышленной информационной сети RS-485 персональный компьютер, имеющий USB-порт. Основные функции * Взаимное преобразование сигналов интерфейсов RS-485 и USB * Автоматическое определение направления передачи данных * Гальваническая изоляция входов * Создание виртуального СОМ-порта при подключении прибора к ПК, что позволяет без дополнительной адаптации использовать информационные системы (SCADA, конфигураторы), работающие с аппаратным СОМ-портом * Питание от шины USB * Встроенные согласующие резисторы То есть я так понимаю мне о RS даже и думать не надо, а писать "как обычно"?! |
| Автор: xvr 16.4.2008, 13:52 | ||
Судя по тому, что написано - да. |
| Автор: Felan 16.4.2008, 14:27 | ||||
Почему нельзя? Какие именно времянки ты имеешь ввиду? Если время, когда надо дергать RTS, то это драйвер и сам может делать. А если преходник тупой, с эхом, то там вообще все четко, только надо эхо ловить. У меня все замечательно работало. По мне, так сомнительно это все
Тоже сомнительно. Когда пишешь программу, все равно делаешь отладочные логи, так что смысла в том, что бы тр№;"ся с текстом не вижу... Но это дело вкуса конечно +1 |
| Автор: xvr 16.4.2008, 16:36 | ||||||||||
Я имею в виду что в Modbus RTU используются интервалы между передачей символов в RS для разделения фреймов и прочего, причем эти интервалы относительно короткие - менее 4 символов. При приеме все еще хуже - эти интервалы придется измерять, на Windows это вообще швах
|
| Автор: Felan 17.4.2008, 07:13 | ||||
Не знаю, как там у вас, но вот у нас интервалы между символами выставлялись в настройках драйвера. И были они стабильные и четкие. Т.к. после того, как в буфер драйвера данные положены, драйвер сам их отправляет. И следит за этими интервалами. И все хорошо и замечательно работает. При приеме тоже самое.
Это, он, драйвер, кстати делает. Просто его надо настроить. А если это делалось на делфи, так там ошибка в константах. Их надо ручками из MSDN взять. Покрайней мере у нас сам драйвер очень даже правильно дергал сигнал. Сам, после того, как все уйдет именно из буфера... Я вот только точно не помню, какой именно мы делали, то ли RTS, толи DTR. Я к тому времени уже увольнялся. Хм... пять раз прочитал эту фразу... Сначала думал - шутка юмора... Потом подумал, что издеваешься... Потом вспомнил, что в эту тему попал через другую... Посмотрел раздел, где она находится.... Блин. Все, что я здесь писал, я писал с точки зрения программиста на делфи, который пишет программу для компьютера, которая работает с контроллером. Из первого поста мне показалось, что надо именно это. Тут всегда есть куда лог писать Так что извиняюсь, если мимо тазика |
| Автор: xvr 17.4.2008, 07:59 | ||||||||||||||||||
Да ну? И где же они выставляются? Особено интересует как сделать паузу в 3 символа при передаче.
То, что у вас оно работало это еще ничего не значит, вам просто сильно повезло - фреймы шли отдельно друг от друга, поток фреймов ваша реализация не отловила бы.
PS. По поводу Modbus RTU был очень длинный топик на electronix.ru (не могу дать ссылку - он сейчас лежит) |
| Автор: Felan 17.4.2008, 11:16 | ||||||||||
В MSDN написано, что эти таймауты выставить можно. Оснований недоверять MSDN у меня нет. Я ставил. Это работало.
Какой код? Функция SetCommTimeouts. Вот и весь код. Я незнаю, что она там гарантирует (кстати, Windows не является системой реального времени, так что требовать от нее гарантий соблюдения каких-либо временных интервалов вообще, мягко говоря, некорректно), но то, что ReadFile возвращала управление если они не соблюдались, это было. А по поводу мониторинга среды, что бы выделить из нее пакет, это я не знаю как сделать... возможно на событиях можно.... которые драйвер САМ возбуждает. Но я не знаю. У нас работа была только с одним устройством одновременно. Фреймы действительно шли отдельно. Но это не умаляет того, что таймауты выдерживались. Код я уже давал. Работало все с тем классом, ссылку на который я давал.
Незнаю, причем тут паяльник, ничего не понимаю в чипах и паяльниках. Но в MSDN написано, что драйвер может автоматически устанавливать(или сбрасывать я точно не понмю, помню, что проблемы были в том, что драйвер мог только одно делать, а у нас переходники были на другое настроены. Пришлось электронщикам переходник перепаять, что бы там наоборот было).
А что именно вы пытались сделать? Как я понял, хотели отлавливать кадры по таймингам? Этого сделать скорее всего не получится. Только если использовать, как я уже гвоорил, события. И то, я не знаю, будет ли это работать. А в общем случае, компорт не предназначен для того, что бы анализировать среду. Если я прав, и вы хотели сделать именно это, все понятно. Молтком сложно вскапать огород.
Сложно тут что-то ответить. Есть вообще масса разного народа. Я говорю за себя. В нашем частном случае, когда пакеты шли поочереди и на шине было только одно устройство все работало прекрасно.
Потому что давно было, потому и плохо помню. Еще раз. Было организовано взаимодействие одного устройства на базе МК и компьютера через RS485, с использованием переходника RS232<>RS485, который возвращал эхо. После этого, было обнаружено, что в делфи неправильно объявлены константы для настройки драйвера порта. Константы управлением DTR/RTS были исправлены и драйвер настроен так, что бы сигнал (DTR или RTS я сейчас не помню, который именно использовали наши электронщики) изменял свое состояние в зависимости от наличия/отсутсвия байт в буфере порта. Смотрели на осциллографе. Все работало. Ссылку не надо, т.к. давно этим не занимаюсь. Просто хотел поделиться тем, что когда-то делал. И у меня, допускаю что по странному везению |
| Автор: xvr 17.4.2008, 11:40 | ||||||||||||||||||||||||||
То, что написано в MSDN не может поменять АППАРАТУРУ в компьютере. Эта АППАРАТУРА не позволяет отлавливать timeout'ы на уровне отдельных символов в входном и выходном потоке. Любой timeout, поставленный через SetCommTimeouts будет округлен в большую сторону до величины тика системного таймера. MSDN по этому поводу молчит.
Собственно зачем я весь этот разговор завел. Это касалось вашего заявления, что Modbus ASCII нафиг не нужен, а везде вместо него имеет смысл применять Modbus RTU. Я заявляю, что ПОЛНОЦЕННЫЙ (полностью соотвествующий стандарту) Modbus RTU на ЛЮБОЙ PC без специальной дополнительной аппаратурой реализовать НЕВОЗМОЖНО. В отличии от Modbus ASCII, который реализовать МОЖНО. |
| Автор: Felan 17.4.2008, 12:36 | ||||||||||||
Я не говорил такого. Я сказал:
И вы меня в этом не разубедили. То, что текстовые протоколы в частных случаях бывают полезны, я не отрицаю. Здесь же все исключительно ИМХО. Требует. Но он писан для взаимодействия MK<>MK. А для PC надо использовать другие методы. Наш метод, в нашем частном случае работал и не знал проблем.
Нет, настолько досконально я не проверял. Не было нужды, т.к. все работало.
Я нигде не говорил, что реализовал полноценный MUDBU RTU, да еще и дословно по спецификации. Я сказал, что было сделано так-то и так-то и это работало.
Справедливо. Особенно для разных осей... У нас все это работало только под XP. У XP наверно везде один драйвер порта... во всяком случае я не слышал, что кому-то пришло в голову его поменять. Но может быть и разный. С чего? С того, что я не электронщик? Я нигде этого не говорил.
Полностью согласен. Еще раз. Спецификация MODBUS писана для MK<>MK. Для PC нужно использовать ДРУГИЕ МЕХАНИЗМЫ. Тем более, что в данном конкретном случае кадры как два пальца определяются по размеру. По крайней мере я лично их определял именно так. И все было хорошо. |
| Автор: xvr 17.4.2008, 13:14 | ||||||||||||||||||||
Ок. Если под железом понимается связь 2х и более спец. устройств, то полностью согласен. Если же это железо собирается подключаться к PC, то текстовый формат обмена может быть полезен (правда при условии, что его можно использовать с обычного терминала, без ручного подсчета всяких контрольных сумм и пр). И довольно много железок используют такой формат (например вся продукция фирмы Extron). Некоторые железки используют оба формата, например видеокоммутатор от системы видеонаблюдения фирмы Philips использует текстовые команды для управления (они документированны) и отдельный бинарный протокол (недокументированный) для обмена со своим софтом на PC. С другой стороны текстовые протоколы более трудоемки для реализации в железе и обычно на это идут неохотно Текстовый протокол позволяет посылать железке ПРОИЗВОЛЬНЫЕ команды из обычного терминала не имея специального софта, тем более что обычно в таком специальном софте не предусматривается возможность отослать железке ПРОИЗВОЛЬНУЮ команду.
Кстати, по поводу текстовых и бинарных форматов и специального софта: У меня был один проект, где PC взаимодействовал с внешней железкой. Взаимодействие происходило по RS232 или по сети (TCP), использовался бинарный формат. В процессе отладки всей системы мне ПРИШЛОСЬ в софте со стороны PC реализовать отправку в железку введенных (в виде hex дампа) пользователем пакетов, иначе было очень трудно ее (железку) отлаживать. |
| Автор: Felan 17.4.2008, 14:29 | ||||||||||
Эх Я искренне не понимаю, что такое "ПРОИЗВОЛЬНАЯ КОМАНДА". И зачем ее посылать устройству, если оно ее все равно не поймет?
Я имел ввиду, что спецификация модбаса создавалась для промышленных сетей, и для промышленной автоматики. И там ни разу не учитывалось, что надо будет обеспечить взаимодействие с компьютером да еще и именно из под Windows. Ибо Windows не есть реал-тайм система, и она не может использоваться в серьезных автоматических системах без специальных надстроек, которые обеспечивают псевдо-реал-тайм среду. Даже среда и протокол для модбаса называются RS485, а не RS232. Следовательно не подразумевалось никаких СТАНДАРТНЫХ РЕШЕНИЙ ДЛЯ ИХ СОПРЯЖЕНИЯ. А все что делает через переходники и пр. это есть шаманство. То, что текстовый имеет свои особенности, и, в данном случае, может быть действительно удобнее, я не спорю. Но, мы делали бинарный и у нас все работало. Это все что я декларирую
Могут. Но они все равно должны обеспечивать работу драйвера и его спецификацию. Наверняка, что есть случаи, когда это не так, и ты прав. Я с ними не встречался Не иначе, как сегодня небо упадет на землю! Понятное дело. Просто мне кажется что это надо понимать, и учитывать при проектировании системы изначально.
Могут. И даже скорее всего будут. Но у нас такого не было. У нас по проще условия были. Но, уверен, что это то же решаемо. Хотя я не представляю себе как символ может потерятся... Ну исказиться еще ладно, а потеряться... Кусок кабеля разве что с ним украдут Даже если пакет придет не полностью, это будет обнаружено на уровне CRC, и можно проанализировать буфер, для того, чтобы найти начало следующего. Это конечно то же шаманство, ну а как по другому?
И что это дало? Как были цифры так и остались, только в другом представлении |
| Автор: Cergiy 17.4.2008, 15:26 |
| Товарищи, а оно заработало!!! Точнее заработало пока только запись, а вот чтение не получается, он мне постоянно показывает что буфер пустой. Но я вообще-то не могу даже разобраться с командой чтения 03h. В файле что я присоединил написано какой она имеет вид, и что там подразумевается под "количество запрашиваемых (передаваемых) параметров", когда я просто хочу считать текущую температуру, не понятно. |
| Автор: xvr 17.4.2008, 16:27 | ||||||||||||||||||
Текстовый лучше тогда, когда невозможна отладка со стороны PC. Например - твой девайс стоит на объекте, там нет ни Delphi ни вообще какого либо компилятора. Текстов твоей программы для связи с железкой тоже нет (хотя они и нафиг не нужны без компилятора). Есть только PC с последней версией управляющей программы и терминалом. Выясняется, что все вместе не работает и логов, встроенных в программу, оказалось недостаточно, что бы понять причину. Что делать? Или хотя бы для начала разобраться кто виновать - железка или программа?
|
| Автор: Felan 18.4.2008, 07:59 | ||||||||||||
Cergiy, Ты бы хоть код привел. Сказал, что пользуешь, мои классы или нет. А так - ошибка в 17-ой строке
Я не понял, почему невозможна отладка на PC? Отладка программы контроллера очень даже возможна. А отладкой управляющей программы надо было раньше заниматься Понятно, что ошибки могут потом всплыть, но опять же перекомпилировать ее ты же не будешь на объекте? Следовательно перекомпилят ее там где писали. Если логов встроенных в программу недостаточно то это проблема программы, надо делать достаточные логи Но если программа хороманогая по своей задумке, сути и реализации... то лучше ее вообще не использовать, лучше сразу терминалом
Я не понял, что это за управляющая программа, которая реализует не все команды? Ну допустим в этом есть высокий смысл, непонятный мне. Но тогда эта программа уж точно не предназначена для отладки. Еще раз, отладку чего ты хочешь делать т.о.? Найти ошибки в УП? Это да. Но овчинка выделки не стоит. Найти ошибки в МК? Для этого не нужен текстовый протокол. Достаточно нормального лога.
Ну в серьезных системах показометры тоже должны быть серьезными. А серьезному показометру не зазорно сделать маленький контроллер, который будет работать адаптером. Я думаю что это будет правильно во всех смыслах. Во например: Канал передачи - лес. Показометр - глаз. Днем все видно хорошо. Вечером хуже, но приемлемо. Ночью - нифига не видно. При полной луне что-то можно увидеть. Что бы видеть ночью используют спец. технику предназначенную специально для этого. Почему бы не использовать спец. заточенный конвертер на базе еще одного МК который будет переводить сплошной поток кадров, которые вообще передаются на конкурирующей основе, в четко разделенные последовательности с которыми можно без проблем работать PC? Это идеологически правильное решение. А текстовый протокол это шаманство. Просто его добавили, наверно (я незнаю историю модбаса) после того, как столкнулись проблемами о которых ты говоришь.
Да понятно, что среда любая. Но мы говорим про конкретную. Вот видишь, есть железные конверторы Начальство придумало, что мы должны разработать. Начальство поменьше подумало и решило, что надо RS485 (ну, надо сказать, что это было оправдано), електроньщики почесали рему и сказали, что надо переходники, каждый стоит... незнаю $10 например. Начальство поменьше сказало, дороговато, поищите еще что-нибудь, а то начальство завернет. Начальство посмотрело... переобуть свой новый лексус не получится, если столько денег отвалить... Давайте ищите варианты дешевле. Ну и вкрячили дешевый, с эхом, по $1 за переходник. А разработчики должны тр№;ся, но сделать что б работало, причем не через полгода, а вчера. Не знаю как там "у вас", но у нас, в частной лавочке было именно так Я к чему это все завел... К тому, что надо делать правильно. А правильно дорого. Вот и появляются всякие разные "дешевые" решения
Наверно да.... С ходу ничего в голову не приходит. А то, что попрощаться, это безусловно Но, подобную фигню, мне кажется, можно реализовать на эвентах. Можно пробовать... Если кто-нибудь нормально профинансировал бы, я бы может попробовал, в свободное от работы время поковыряться
Ну убей меня об стенку, зачем для этого ТЕКСТОВЫЙ ПРОТОКОЛ? Ну сделал в программе отправку любой последовательности, и все ЗЫЖ Вобщем, единственное, в чем я теперь стобой соглашусь полностью, это то, что текстовый протокол, который имее маркер конца кадра, позволяет избежать проблем связанных с выделение этих кадров из потока. |
| Автор: xvr 18.4.2008, 10:54 | ||||||||||||||||||||||||||||||
Потому что ты сидишь на объекте и на PC, который там есть ничего нет
С другой стороны, даже если управляющая программа и читает все регистры, она это делает по своей собственной инициативе и скорее всего невозможно заставить ее читать их так (и в том порядке) как хочет пользователь/разработчик. (Вариант с правкой сорцов и перекомпиляцией мы не рассматриваем - на объекте нет ни сорцов ни компилятора)
Увы я видел только 2 таких программы - одну я уже упоминал, а вторая была среда програмирования контролеров фирмы AMX (контроллеры для 'Умных домов'), она позволяла отправить любую команду любому устройству, включенному в ее сеть.
|
| Автор: Felan 18.4.2008, 12:25 | ||||||||||||||||||
Я прекрасно понимаю, что это очень реальный расклад. Но в таких случаях у нас ВСЕГДА предусматривался спец. режим для отладки.
Легко! Для этого обычно пишут заглушку, т.е. эмулятор, который реализует интерфейс системы. Мне кажется, что это настолько очевидно, что тех, кто так не делаешь, я пожалуй не назвал бы профессионалами.
Зачем каждую строчку то логировать? Достаточно писать в лог только то, что нужно. Нет в этом ничего такого страшного, а есть такой паттерн проектирования "Команда", очень он способствует всяким удобствам в разработке подобного ПО.
Блин, уел. Ладно. Просто мне, как человеку разрабатывавшему подобный софт не пришла голову простая до безобразия мысль, что у команды чтения регистра не может быть параметра, который указывает какой именно регистр надо прочитать. А так же не пришло в голову, что в целях отладки этот параметр нельзя изменить... Отсутствие отладочного режима тоже... Ты сам не находишь сдесь противоречия? Сделать что-то, чем-то, что для делания этого не предназначено?
Вариант 2. Еще раз, то, что по не позволят элементарно проверить свою работу, т.е. работу команд, которые оно должно выполнять, но не выполняет, это значит, что плохое ПО. Протокол здесь НИ ПРИЧЕМ! Причем здесь посторонние команды, я тоже не понимаю. Ну увидит он, что у него не читается еще и остальные 99, что это кардинально изменит?
Как не видишь смысла!? Ты же сам сказал, что сделать штатными средствами НЕВОЗМОЖНО! Да, тут выкрутились, оказалось, что есть текстовый протокол, а если бы его не было? Как можно сделать, когда ты сам вчера говорил, что ЧИП ПОРТА И ЕГО УПРАВЛЯЮЩЕЕ ПО НЕ ПОЗВОЛЯЕТ ДЕЛАТЬ "ЭТО" В ПРИНЦИПЕ??? Я отказываюсь понимать твою логику
Ну вот видишь, по твоим же словам, была спецификация, налетели не грабли, под шаманили
Я так и сделал, полтора года назад.
Вот и я про то, что не самоцель. И что реализовывать его обосновывая тем, что "читать удобнее", считаю глупостью. Если в этом есть РЕАЛЬНАЯ НЕОБХОДИМОСТЬ - да пожалуйста, сам первый и реализую Ладно. Я сдаюсь |
| Автор: xvr 18.4.2008, 13:35 | ||||||||||||||||||||||||||||||
Значит ваше ПО уникальное - практически ни в одном ПО, распространяемым с железками, такого режима нет (по крайней мере мне не попадалось, за редким исключением)
|
| Автор: Felan 18.4.2008, 14:32 |
| Ну поскольку мы ПО для себя писали, то мы и предусматривали. Раз про "удобство чтения" аргументов не было, значит с остальным согласен |
| Автор: Cergiy 18.4.2008, 18:16 | ||
У меня там солянка, но вообще мне порекомендовали dll-ху и с ней все заработало очень быстро, пример кода что-то типа sio_write (3, @buf, 17), то есть пишем в COM-3 из массива buf типа char, 17 символов Но я не могу в логике MODBUSA разобраться, сейчас процитирую. Для команд 03h либо 04h(кстати, чем они отличаются, в мануале написано что они обе для того чтобы читать несколько параметров) существует следущая форма запроса: :1 Adr 2 Fc 2 PAdr 4 PNum 4 LRC 2 CRLF 2(цифры обозначают количество байт), где 1) Adr – сетевой адрес устройства, 2 знака 2) Fc – код функции, 2 знака 3) PAdr – адрес параметра, 4 знака 4) PNum – количество запрашиваемых (передаваемых) параметров от PAdr включительно, 4 знака итд. Так вот мне не понятно откуда я должен узнать PNum? Я раньше подцеплял мануал по своему прибору Термодат-17КЗ (можете посмотреть). Мне нужно считывать текущее значение температуры, то есть я адрес параметра там посмотрел - 0170h, ну а про количество параметров там ничего не сказано. То есть я вообще не понимаю о чем речь. Может мне кто помочь? |
| Автор: xvr 18.4.2008, 20:17 | ||
Количество параметров - 1 (количество подряд идущих регистров) Команды 03 и 04 отличаются набором регистров, которые они читают. 03 - Holding Registers, 04 - Input Registers. Что понимается под Holding и Input Registers определяет устройство. В вашем случае это одно и тоже. Вообще Modbus оперирует понятиями, которые давно не имеют физического соотвествия с какой либо реальной аппаратурой |
| Автор: Cergiy 18.4.2008, 20:46 |
Ну а вы сможите написать команду? то есть: :01030170(0001) или как-то по другому, то есть я вообще не понимаю, что должно быть написано и как. Поэтому в принципе написал на официальный сайт, но это у них долго: в прошлый раз дней 5 высылали мануал. Но мне в принципе интересн и какой например может прийти ответ. |
| Автор: xvr 19.4.2008, 17:26 | ||
Команда - чтение регистра 0170 (температура): :0103017000018A Ответ (20 С, содержимое регистра 200 или 00C8) :0103000200C832 |
| Автор: Cergiy 18.5.2008, 20:36 |
| Всх благодарю! Почти все работает. Неудалось только одно: чтобы все было автоматически. Ну то есть я написал, что и гарфик строится и датчики опрашиваются, но при нажатии на кнопку это делается один раз. А нужно-то сделать, чтобы вот нажал на кнопки и датчики опрашиваются, пока этот процесс не остановить. Чего только не пытался делать: программа просто тупо зависает, незнаю что делать, может кто писал про непрерывный опрос прибора подскажет в чем проблема? |
| Автор: smalcom 23.5.2008, 09:25 |
| используй таймера |