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

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

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

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

Сообщение balbes_spb » 27.09.2018 14:47:15

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

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

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

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

Сообщение serg_iv » 29.09.2018 13:00:55

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

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

Сообщение balbes_spb » 30.09.2018 22:32:32

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 пакеты мелкие...
balbes_spb
незнакомец
 
Сообщения: 5
Зарегистрирован: 26.09.2018 16:32:31
Откуда: Санкт-Петербург


Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru