scadapascal modbus: как читать не ячейку, а область памяти?

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

Ответить
balbes_spb
незнакомец
Сообщения: 5
Зарегистрирован: 26.09.2018 15:32:31
Откуда: Санкт-Петербург

scadapascal modbus: как читать не ячейку, а область памяти?

Сообщение balbes_spb »

Для чтения ячеки памяти устройства использую TPLCTagNumber.
Чтение одной ячсейки проходит без проблем.

Но хотелось бы за один пакет читать не одну ячейку памяти, а сразу область памяти.
Как это сделать?
Какие поля TPLCTagNumber нужно для этого использовать?

Спасибо.
serg_iv
постоялец
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Сообщение serg_iv »

вместо PLCTagNumber использовать PLCBlock, у которого в свою очередь имеется свойство size (отвечающее за количество ожидаемых байт)
в этой теме еще глянь, может что пригодится: http://freepascal.ru/forum/viewtopic.php?f=6&t=8029
balbes_spb
незнакомец
Сообщения: 5
Зарегистрирован: 26.09.2018 15:32:31
Откуда: Санкт-Петербург

Сообщение balbes_spb »

serg_iv писал(а):вместо PLCTagNumber использовать PLCBlock, у которого в свою очередь имеется свойство size (отвечающее за количество ожидаемых байт)
в этой теме еще глянь, может что пригодится: http://freepascal.ru/forum/viewtopic.php?f=6&t=8029


Спасибо, работает.

Инициализация чтения:

Код: Выделить всё

      self.PLCBlock1.MemReadFunction:=3; // номер функции modbus rtu
      self.PLCBlock1.PLCStation:=1; // номер узла  modbus rtu
      self.PLCBlock1.MemAddress:=0; // начальный адрес памяти узла modbus
      self.PLCBlock1.Size:=100; // количество, я думаю именно 16 битных регистров памяти узла сети Modbus, а не байт
      self.PLCBlock1.AutoRead:=true; // авточтение


чтение данных:

Код: Выделить всё

length(self.PLCBlock1.ValuesRaw); // количество регистров чтения
self.PLCBlock1.ValuesRaw[i]; // чтение данных


P.S. Я думаю статью надо дополнить этой инфой или добавить в FAQ по pascalscada ссылку на данную тему. Т.к. чтение областей памяти в Modbus очень важно. Это в CAN пакеты мелкие...
Ответить