Modbus на Pascal |
Ответить | Страница 12> |
Автор | |
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
Опубликовано: 22 Март 2007 12:54 |
Добрый день Есть необходимость сделать реализацию протокола Modbus на языке Pascal для CPU188. Если кто-нибудь таким занимался - пожалуйста откликнитесь. |
|
Действительный член Присоединился: 08 Март 2006 Категория: Russian Federation Online Status: Offline Публикации: 440 |
|
Почему именно Pascal ? |
|
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
|
Потому что во-1, уже есть 2 проекта, написанные на Паскале, а этот проект является продолжением одного из них, а во-2, с Паскалем я знаком гораздо лучше, чем с Си. :) Но если вы делали что-то подобное на Си - это не помеха, Си я тоже знаю. Хотелось бы обсудить некоторые моменты в реализации этого протокола.
|
|
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
|
А какие именно? Немного писал, правда давненько... |
|
Действительный член Присоединился: 08 Март 2006 Категория: Russian Federation Online Status: Offline Публикации: 440 |
|
Значит дело вобщем то в самом MODBUS-е, а не столько в языке ? А что, предыдущие проекты не работали с протоколом ? Ну вобщем то, можно подогнать описание протокола. А какая у вас версия используется - MODBUS-ASCII или MODBUS-RTU ? С уважением, SAN
|
|
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
|
Дело в самом протоколе. Предыдущим проектам он просто был не нужен, а теперь понадобился. Первый вопрос: как передавать данные различных типов? Если принять за основу описание протокола, которое у меня есть, там говорится, что на каждый регистр отводится 2 байта. Но OPC-сервер, работающий у заказчика, поддерживает передачу по протоколу не только 2-байтовых целых величин. Возникает логичный вопрос: как передавать данные других типов? Если я правильно понял, то на значение в ответе может отводится не обязательно 2 байта, а столько, сколько занимает регистр (для длинных целых - 4, для вещественных - 8, для строковых - столько, сколько символов в строке). Или я не правильно представляю себе работу с другими типами данных? Второй вопрос. Как передавать данные различных типов в одном запросе (функции группового чтения и записи)? Или устройство, которое получает ответ, само будет разбираться, сколько байт соответствует каждому регистру? |
|
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
|
регистры всегда 2 байта. переменные могут занимать 1, 2, 4 регистров. просто вычитываете их как несколько регистров и разбираете, что же там есть. тоже самое с записью таких переменных - пишете нужные байты в несколько регистров. |
|
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
|
регистры - это всего лишь типа координатной сетки для адресации и размера данных. |
|
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
|
Уточните пожалуйста: обязательно 1,2,4 или может быть, скажем, 3 или 6? А также как быть, если захочется завести строку длиной 50 байт, например, под какое-нибудь имя устройства? Она займет 25 регистров?
|
|
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
|
Переменная может быть и 3 и 6 и байтов и регистров. Строка в 50 байт действительно займет 25 регистров. Читаете 25 регистров за один или за несколько приемов, из полученного содержимого регистров составляете строку. Ну или, наоборот, пишете. |
|
Ответить | Страница 12> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |