ISaGRAF. Version 3.4

         

Реализация ISaGRAF


           Доступ к прикладным переменным

Коммуникационное соединение ISaGRAF распознает пять функциональных кодов Modbus:

1

читать N бит

3

читать N слов

5

писать 1 бит

6

писать 1 слово

16

писать N слов

Доступ к переменным приложения ISaGRAF может осуществляться через их “сетевой адрес ”, если конечно они были определены в библиотеке инструментальных средств.

Эти переменные могут быть:

-       Булевыми или Аналоговыми переменными

-       Входными, выходными или терминальными переменными

-       Локальными или глобальными переменными.

Для записи Булевой переменной могут использоваться функции 5, 6 или 16. Значение TRUE для записи является любым ненулевым значением.

Для чтения Булевой переменной могут использоваться функции 1 или 3. Функция 1 возвращает значение в битовое поле, а функция 3 - в байтовое (значение TRUE соответствует значению 0xFFFF).

Для записи Аналоговой переменной могут использованы функции 6 и 16. Значение является 16-ти битовым целым в диапазоне от -32768 до +32768 (целевые переменные ISaGRAF являются 32-х битовыми).

Для чтения Аналоговой переменной может использоваться функция 3. .

Переменные типа Real не доступны по запросам Modbus.

Предупреждение:

Реализация ISaFRAF не управляет такими кодами ошибки как ‘неизвестный адрес modbus’.

Обозначения:

slv

номер подчиненного

nbw

число слов

nbb

число байт

nbi

число бит

addH

Сетевой адрес (старший байт)

addL

сетевой адрес (младший байт)

vH

значение (старший байт)

vL

значение (младший байт)

V

байтовое значение

bfd

битовое поле (nbb байт)

crcH

контрольная сумма (старший байт)

crcL

контрольная сумма (младший байт)

Функция 1: читать n бит

Читает nbi бит (булевских значений), начиная с сетевого адреса addH/addL

Запрос

slv

01

addH

addL

00

nbi

crcH

crcL

<
Ответ

slv

01

nbb

bfd

...

crcH

crcL

                                                               Byte 1               Byte nbb

где bfd является битовым полем длиной nbb байт следующего формата



Бит 1 соответствует значению переменной с сетевым адресом addH/addL.

Бит nbi соответствует значению переменной с сетевым адресом addH/addL+nbi-1.

X означает, что значение не используется

Функция 3: читать n слов

Читает nbw слов, начиная с сетевого адреса addH/addL

Запрос

slv

03

addH

addL

00

nbw

crcH

crcL

Ответ

slv

03

nbb

vH

vL

...

crcH

crcL

где nbb соответствует числу байт во всех парах vH,vL.

Функция 5: записать 1 бит

Записать бит (булевскую переменную) по сетевому адресу addH/addL

Запрос

slv

05

addH

addL

vH

00

crcH

crcL

Ответ

slv

05

addH

addL

vH

00

crcH

crcL

Функция 6: записать 1 слово

Записать слово по сетевому адресу addH/addL

Запрос

slv

06

addH

addL

vH

vL

crcH

crcL

Ответ

slv

06

addH

addL

vH

vL

crcH

crcL

Функция 16: записать N слов

Записать nbw слов, начиная с сетевого адреса addH/addL (nbb=2nbw)

Запрос

slv

10

addH

addL

00

nbw

nbb

vH

vL

...

crcH

crcL

Ответ

slv

10

addH

addL

00

nbw

crcH

crcL

Примеры:

-  Функция 1: прочитать 15 бит, начиная с сетевого адреса 0x1020 на подчиненном 1

Запрос

01

01

10

20

00

0F

79

04

Ответ

01

01

02

00

12

39

F1

считанное значение - 0x0012, что в битовом представлении эквивалентно 00000000 000100101.

В этом примере переменные 0x1029 и 0x102C имеют значение TRUE, остальные - FALSE.

-  Функция 16: записывает 2 слова по адресу 0x2100 на slave 1, записанные значения равняются: 0x1234 и 0x5678.

Запрос

01

10

21

00

00

02

04

12

34

56

78

1C

CA

<


Ответ

01

10

21

00

00

02

4B

F4

       
Перенос файлов

По сравнению с современными индустриальными шинами протокол Modbus обеспечивает очень скромные возможности, если только набор функций не расширен поставщиком.

В нашей ситуации при запуске ISaGRAF имеется два ограничения на протокол Modbus

-   Доступны только переменные ISaGRAF

-   Невозможна быстрая передача больших объемов данных

Имеются причины, по которым ISaGRAF поддерживает набор ‘Modbus-подобных’ запросов для переноса файлов или протокол ‘управления удаленными файлами’:

-  Дистанционная загрузка ASCII и бинарных файлов

-  Подгрузка ASCII и бинарных файлов

-  Динамический обмен данными через виртуальный или физический разделяемый файл

Таким образом, при наличии коммуникационной связи с ISaGRAF любое приложение, независимое от ISaGRAF, может легко связываться с удаленной целевой задачей.

Протокол базируется на следующих понятиях:

-  Файл со стороны целевой задачи ISaGRAF называется удаленным файлом

-  Файл на мастер-компьютере называется локальным файлом

-  Каждый байт в файле имеет 32-битовый базовый адрес

и 16-битовый адрес байта

Имеются запросы выбора имени удаленного файла, выбора базового адреса, считать или записать данные в удаленный файл, используя 16-битовый адрес байта.

Функция 17: записать байты

nbb соответствует числу байт во всех парах vH,vL

Запрос

slv

11

addH

addL

00

nbb

nbb

vH

vL

...

crcH

crcL

Ответ

slv

11

addH

addL

00

nbb

crcH

crcL

Значение этого запроса различается в зависимости от значения адреса addH/addL:

-       0xF000: Инициализировать имя удаленного файла

nbb соответствует числу символов в имени файла, располагающегося в полях vH, vL и т.д. (в этом случае понятия ‘старший’ и ‘младший’ лишены смысла), включая символ \0 окончания строки. Если файл не существует, то он создается с атрибутами writable+readable+executable.



-       0xF002: Изменить базовый адрес на указанное значение

nbb должно равняться 4. Первая пара vH,vL есть значение старшего слова значения адреса. Возможно любое 32-битное значение. Все последующие запросы чтения и записи будут использовать этот базовый адрес. Если запроса изменения базового адреса не делалось, по умолчанию будет использоваться нулевое значение.

-       0xF004: Уничтожить файл

nbb должно равняться 0. Файл будет уничтожен если он существует и если это возможно.

-       Больше 0xF004:

Зарезервировано

-       Меньше 0xF000: Записать байты

Адрес байта, по которому нужно произвести запись указывается в addH/addL. Он должен быть меньше 0xF000. Записываются значения nbb байт, указываемые в полях vH,vL и т.д., в заданном порядке (слева - направо) в удаленный файл, имя которого ранее было выбрано. Запись производится по адресу, который получается сложением ранее установленного базового адреса с указываемым адресом байта. Если результирующий адрес выходит за границу файла, размер файла увеличивается. Невозможно уменьшить размер файла.

Функция 18: читать данные

Запрос

slv

12

addH

addL

00

nbb

crcH

crcL

Ответ

slv

12

nbb

V

V

...

crcH

crcL

Адрес для чтения указывается в addH/addL. Он должен быть меньше F000. Происходит считывание nbb байт из удаленного файла, чье имя ранее было выбрано, начиная с адреса, получаемого добавлением адреса байта addH/addL к ранее установленному базовому адресу. Значения переносятся в порядке как они лежат в файле (слева - направо).

Пример:

Выбрать имя удаленного файла: target.fil.

Запрос

01

11

F0

00

00

0B

0B

74

...

00

25

9F

Ответ

01

11

F0

00

00

0B

8F

0E

Выбрать базовый адрес 0x10000.

Запрос

01

11

F0

02

00

04

04

00

01

00

00

76

11

<


Ответ

01

11

F0

02

00

04

6E

CA

Записать 4 байта: абсолютный адрес - 0x107D0, значения - 01, 02, 03, 04.

Запрос

01

11

07

D0

00

04

04

01

02

03

04

28

6F

Ответ

01

11

07

D0

00

04

FC

87

Считать 4 байта: абсолютный адрес - 0x107D0.

Запрос

01

12

07

D0

00

04

B8

87

Ответ

01

12

04

01

02

03

04

58

7D


Содержание раздела