Карта памяти

Top  Previous  Next

При обращении к слейву устройство-мастер должно знать, в какой области памяти этого "слейва" находится переменная, которую необходимо прочитать или записать.  Поэтому, при настройке, мастеру необходимо сообщить, по какому адресу в слейве данная переменная находится. Источником таких данных в Modbus является карта памяти, документ, который описывает адреса и типы переменных слейва.

Организация памяти

Память контроллера разделена на 4 банка.

Input Status
Coil
Input Register
Holding Register

Названия соответствуют названиям банков памяти в протоколе Modbus.

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

Базовый адрес - адрес начала банка.

Существуют 2 типа адресации:

"старая"
"новая"

 

Адресация "старого" типа

В этом случае базовый адрес совпадает с адресом в памяти (ОЗУ) контроллера и не может быть изменён.

Название банка

Базовый адрес

Размер банка

Input Status

14336 (3800hex)

1024 байта

Coils

15360 (3C00hex)

1024 байта

Input Registers

40960 (A000hex)

2048 байта

Holding Registers

41984 (A400hex)

2048 байта

Важно. При адресации такого типа размер банков фиксированный, т.е. не зависит от количества переменных.

 

 

Адресация "нового" типа

В этом случае базовый адрес может быть любым (в том числе и одинаковым для всех банков) и не зависит от адреса в памяти (ОЗУ) контроллера.

Важно. При адресации такого типа размер банков зависит только от количества переменных. Таким образом экономится память контроллера.

 

Создание карты памяти

Создать карту памяти можно двумя способами:

1. Используя диалог Сетевые переменные

2. В текстовом виде

 

Диалог "Сетевые переменные"

Диалог предназначен для настройки свойств Modbus переменных.

Вызвать диалог можно через главное меню Опции > Переменные MODBUS или по комбинации клавиш CTRL+M.

 

Рис.1 - Диалог "Переменные"

Рис.1 - Диалог "Переменные"

1. Банк памяти. Название банка памяти.

2. Фиксация банка. Управляет фиксацией всех переменных банка.

3. Базовый адрес. Базовый адрес банка памяти. Изменить базовый адрес можно только при наличии в банке нефиксированных переменных и снятом флаге Старая карта. При изменении базового адреса, все нефиксированные переменные меняют свои адреса и занимают все свободные значения после базового.

 

Нельзя задать базовый адрес больше минимального фиксированного.

 

Если переменные одного типа все фиксированы, базовый адрес всегда будет равен минимальному.

 

4. Размер банка памяти. При адресации "старого" типа размер банков фиксированный. адресаци "нового" типа размер банков зависит только от количества используемых переменных.

5. > При двойном клике  рабочее поле перемещается к блоку выбранной переменной.

6. Имя. Имя блока-переменной, может редактироваться

7. Тип. Тип переменной (bool, integer, float, long), определяется типом входы/выхода FBD блока, к которому она (переменная) подключена.

8. Фиксация. Управление фиксацией адреса переменной. Функция доступна только если не установлен флаг Старая карта.

Если фиксация включена, то

Адрес привязан к определенному месту и может быть изменен только вручную.
Адрес не зависит от наличия свободного места до базового адреса.
Лоджик не может изменить адрес переменной.
Максимальный базовый адрес не может быть больше адреса фиксированной переменной

Если фиксация выключена, то адрес можно изменить, нажав кнопку Пересчитать.

Если у переменной установлена фиксация, то на ее изображении появляется галка как показано на рисунке

 

9. Адрес. Адрес для запроса переменной по протоколу Modbus. Поле может быть изменено, если переменная фиксированная и снят флаг Старая карта.

 

10. Формат адреса. Формат, в котором выводится адрес переменных в списке. Также в этом формате происходит ввод и изменение адресов.

hex - шестнадцатеричный

dec - десятичный

 

11. Пересчитать. Предназначена для перераспределения адресов не фиксированных переменных. Все не фиксированные переменные меняют свои адреса и занимают свободные места после базовый адрес.

 

12. Сохранить. Сохраняет карту запросов в отдельный файл, который можно использовать для добавления слейва в контроллер-мастер или OPC-сервера для SCADA-систем.

13. Справка.

14. Флаг "Старая карта". Переключение между адресацией "нового" и "старого" типа.

Если  флаг установлен, то

невозможно редактировать базовый адрес
невозможно управлять фиксацией переменных
невозможно изменять адреса переменных

При установке этого флага адреса присваиваются начиная от базовых значений принятых для устаревших версий ядра.

 

Создание карты памяти в текстовом виде

Файл карты памяти имеет расширение .map, аналогичное .txt или .log, и его можно просмотреть и отредактировать в любом текстовом редакторе, например в "Блокноте" Microsoft.

Ниже представлен пример файла карты памяти:

;Памятка карты

;Direction - направление: read, read/write
;Type - тип (битовые или регистровые): bit, reg         
;Baudrate - скорость слейва
;Address - адрес слейва в сети RS-485
; Формат переменной:

;   var<N>=<адрес>#<тип>#<символьное имя>#<комментарий>, где N - номер по порядку, начиная с 0
 

 
;№ запроса
[Request0]      
; показывает, что эти данные можно записывать на слейв
Direction=read/write  
; тип данных, соответствует bool в SMLogix
Type=bit       
; скорость порта
Baudrate=115200
; адрес устройства
Address=0
; список переменных, в формате через 
;var№ - переменные по порядку
;    |адрес
;    |   |тип
;    |   |    |имя 
var0=5ff#bool#Enable  
var1=600#bool#Старт        
var2=601#bool#Стрелка вверх  
var3=602#bool#Стрелка вниз
 
 
[Request1]
;read - только чтение
Direction=read 
;reg соответствует Integer в SMLogix    
Type=reg        
Baudrate=115200
Address=0
var0=611#int#Код события
var1=613#int#Порядковый №
var2=615#int#Минуты
var3=617#int#Часы
var4=619#int#Число
var5=61b#int#Месяц
var6=61d#int#Год
 
[Request2]
Direction=read/write
Type=reg
Baudrate=115200
Address=0
var0=d6d#int#Предел

 

 

 

 

См. также:

Замена устройства-слейва стороннего производителя