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

Modbus ASCII

 Ответить Ответить
Автор
Сообщение
Roman Chernov Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 06 Октябрь 2010
Online Status: Offline
Публикации: 2
Свойства публикации Свойства публикации   Ответить, цитируя автора - Roman Chernov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Modbus ASCII
    Опубликовано: 08 Октябрь 2010 10:27
Приветствую.

Описание задачи:
    Имеется Slave устройство, которым необходимо управлять по Modbus-ASCII через Simatic CP341, который этот режим изначально поддерживает. Прочитал документацию по данному протоколу и выяснилось каким образом нужно формировать пакет. Пакет формируется с использованием кодов символов таблицы ASCII, причем в один байт укладывается 2 символа по 4 бита. Плюс необходимо формировать контрольную сумму LRC.
    Я так понимаю обратную операцию мне придется проделывать после передачи ответа Slave устройством, т.е. каждый ответный пакет, состоящий из кодов символов ASCII преобразовывать в необходимый числовой формат для дальнейшего анализа данных.
    Нашел документ "Loadable Driver for CP 341 Modbus ASCII Master with 32-Bit Extensions", в котором описывается загружаемый драйвер Modbus-ASCII. Но по заказному номеру 6ES7870-1CA00-0YA0 в каталоге Siemens CA-01 2010 ничего не нашел.

Вопросы:
1. Кто может поделиться самописным драйвером Modbus-ASCII?
2. Насколько упрощает работу загружаемый драйвер Modbus-ASCII?
3. Почему его нет в каталоге CA-01 2010?
4. Ваше мнения по описанной задачи.
Наверх
Semelenov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 15 Октябрь 2003
Категория: Belarus
Online Status: Offline
Публикации: 141
Свойства публикации Свойства публикации   Ответить, цитируя автора - Semelenov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Апрель 2011 18:28
"причем в один байт укладывается 2 символа по 4 бита"
- не понял я этого... в АСКИ-протоколе идёт передача байта символами.
например: байт 3D передаётся как два АСКИ-символа "3" и "D"
- расчёт CRC:
    procedure CalcLRC;
    var
      Y : byte;
      H : LongInt;
      T : byte;
    begin
      H := Request[1];
      for Y:=2 To 12 do
        H := H + Request[Y];

      T := (255-H+1) AND $FF;

      Request[14] := ByteToChar(T and $0F);
      Request[13] := ByteToChar(T shr 4);
    end;

вроде всё

P.S. насколько я помню - байты передаются наоборот, т.е. сначала младший, потом старший (но точно не помню)
Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Апрель 2011 21:45

http://www.modbus.org/specs.php

Посмотрите команды 3, 4 и 16  и 7 пункт в Modbus Application protocol V1 1 b
И документ Modbus Over Serial Line
 
 К сожалению по  ascii особо не подскажу, то что написано в спецификации довольно специфично , одно требование 7 битных посылок чего стоит. Мы пользуем  RTU.
 
При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
 Ответить Ответить

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

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