Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Modbus на Pascal

 Ответить Ответить Страница  12>
Автор
Сообщение
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Modbus на Pascal
    Опубликовано: 22 Март 2007 12:54

Добрый день

Есть необходимость сделать реализацию протокола Modbus на языке Pascal для CPU188. Если кто-нибудь таким занимался - пожалуйста откликнитесь.

Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Март 2007 18:56

Почему именно  Pascal ?

Наверх
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Март 2007 09:31
Потому что во-1, уже есть 2 проекта, написанные на Паскале, а этот проект является продолжением одного из них, а во-2, с Паскалем я знаком гораздо лучше, чем с Си. :) Но если вы делали что-то подобное на Си - это не помеха, Си я тоже знаю. Хотелось бы обсудить некоторые моменты в реализации этого протокола.
Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Март 2007 10:21

Первоначально опубликовано Phenix

.. Хотелось бы обсудить некоторые моменты в реализации этого протокола.

А какие именно? Немного писал, правда давненько...

Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Март 2007 19:44

Значит дело вобщем то в самом MODBUS-е, а не столько в языке ? А что, предыдущие проекты не работали с протоколом ?

Ну вобщем то, можно подогнать описание протокола.  А какая у вас версия используется -  MODBUS-ASCII  или  MODBUS-RTU ?

С уважением, SAN

 

Наверх
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 25 Апрель 2007 12:12

Дело в самом протоколе. Предыдущим проектам он просто был не нужен, а теперь понадобился.

Первый  вопрос: как передавать данные различных типов? Если  принять  за  основу  описание протокола,  которое  у меня есть, там говорится, что на каждый регистр отводится 2 байта. Но OPC-сервер, работающий у заказчика, поддерживает передачу  по  протоколу  не только 2-байтовых целых величин. Возникает логичный  вопрос: как передавать данные других типов? Если я правильно понял, то на значение в ответе может отводится не обязательно 2 байта, а  столько,  сколько  занимает  регистр  (для  длинных  целых - 4, для вещественных - 8, для строковых - столько, сколько символов в строке). Или я не правильно представляю себе работу с другими типами данных?

Второй вопрос. Как передавать данные различных типов в одном запросе (функции группового чтения и записи)? Или устройство, которое   получает   ответ,   само  будет  разбираться,  сколько  байт соответствует  каждому  регистру?

Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 25 Апрель 2007 12:22

регистры всегда 2 байта. переменные могут занимать 1, 2, 4 регистров. просто вычитываете их как несколько регистров и разбираете, что же там есть. тоже самое с записью таких переменных - пишете нужные байты в несколько регистров.

Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 25 Апрель 2007 12:29

регистры - это всего лишь типа координатной сетки для адресации и размера данных.

Наверх
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 25 Апрель 2007 17:09
Уточните пожалуйста: обязательно 1,2,4 или может быть, скажем, 3 или 6? А также как быть, если захочется завести строку длиной 50 байт, например, под какое-нибудь имя устройства? Она займет 25 регистров?
Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 25 Апрель 2007 23:57

Первоначально опубликовано Phenix

Уточните пожалуйста: обязательно 1,2,4 или может быть, скажем, 3 или 6? А также как быть, если захочется завести строку длиной 50 байт, например, под какое-нибудь имя устройства? Она займет 25 регистров?

Переменная может быть и 3 и 6 и байтов и регистров. Строка в 50 байт действительно займет 25 регистров. Читаете 25 регистров за один или за несколько приемов, из полученного содержимого регистров составляете строку. Ну или, наоборот, пишете.

Наверх
 Ответить Ответить Страница  12>

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz