pascalScada

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

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

Re: pascalScada

Сообщение madlih » 29.10.2012 13:33:26

Существует такая функция modbus 08 (loopback diagnostic, в моем понимании проверка связи)
как ею пользоваться вернее проверять совпадают ли значения, визуально в логе я могу проверить:
Код: Выделить всё
Written:    01 08 00 00 00 00 E0 0B
Received: 01 08 00 00 00 00 E0 0B

Но при обращении к свойству объекта tagnumber.value возвращает случайные значения в моем случае 92 хотя как видно из лога уходит и возвращается 0.
Элемент кода ниже

Код: Выделить всё
function  TForm1.isconnected(adr:integer):boolean;
var
  tval:double;
begin
  tagn1.PLCStation:=adr;
  tagn1.MemReadFunction:=08;
  tval:=tagn1.valueraw;
  tagn1.Read;
  statusbar1.Panels.Items[2].Text:=floattostr(tval);//floattostr(tagn1.Value);
  if tagn1.Value=0 then result:=true else result:=false;
end;     
madlih
новенький
 
Сообщения: 13
Зарегистрирован: 05.10.2012 11:57:04

Re: pascalScada

Сообщение serg_iv » 30.10.2012 11:13:28

вот что нарыл:
2.6.Функция 8: тестовая функция

Запрос.
Данная функция предназначена для проверки коммуникационной системы и не влияет на данные прибора.
Поле информации содержит 2 байта диагностического кода, указывающего SL выполнить определенное действие, и 2 байта необходимой, для данной диагностики, информации.
Таблица 21
Код
Действие
00
Вернуть запрос
01
Сбросить установки связи (без ответа)
02
Вернуть регистр диагностики
03
Изменить символ начала пакета
04
Перевести SL в режим прослушивания линии без посылки ответных сообщений (Listen Only Mode)
05
Сбросить счетчики и регистр диагностики
06
Вернуть счетчик сообщений, полученных с шины MODBUS.
07
Вернуть счетчик сообщений с неправильными контрольными суммами.
08
Вернуть счетчик сообщений, вызвавших исключительную ситуацию.
09
Вернуть счетчик сообщений, адресованных только данному SL.
10
Вернуть счетчик сообщений, адресованных данному SL и оставленных без ответа.
11
Вернуть счетчик сообщений, адресованных данному SL и вызвавшим исключительную ситуацию NACK.
12
Вернуть счетчик сообщений, адресованных данному SL и вызвавшим исключительную ситуацию BUSY.

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

Re: pascalScada

Сообщение madlih » 31.10.2012 12:55:42

Благодарю, за предоставленную информацию, оказалась полезной. Еще назрел один вопрос, просто катастрофически нехватает времени на проработку, может кто знает как в PascalScada отслеживать ошибки связанные с ошибками передачи данных (события такие как таймаут ожидания ответа, нарушение crc суммы и тп). Был бы премного балгодарен
madlih
новенький
 
Сообщения: 13
Зарегистрирован: 05.10.2012 11:57:04

Re: pascalScada

Сообщение serg_iv » 31.10.2012 14:37:15

я слежу за счетчиками, в качестве примера:
Код: Выделить всё
Memo1.Lines[0]:= 'читается байт в секунду ' + inttostr(SerialPortDriver1.RXBytesSecond);
Memo1.Lines[1]:= 'отправляется байт в секунду ' + inttostr(SerialPortDriver1.TXBytesSecond);
Memo1.Lines[2]:= 'всего прочитано байт ' + inttostr(SerialPortDriver1.RXBytes);
Memo1.Lines[3]:= 'всего отравлено байт ' + inttostr(SerialPortDriver1.TXBytes);
Memo1.Lines[4]:= 'Чтение ОК 1 модуль = ' + inttostr(plcTagReadPR110[1].CommReadsOK);
Memo1.Lines[5]:= 'ошибок чтения 1 модуль = ' + inttostr(plcTagReadPR110[1].CommReadErrors);
Memo1.Lines[15]:= 'записано ОК = '+ inttostr(plcTagWritePR110[5].CommWritesOk);
Memo1.Lines[16]:= 'записано err = '+ inttostr(plcTagWritePR110[5].CommWriteErrors);
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: pascalScada

Сообщение madlih » 01.11.2012 11:40:41

Очень полезно, только вытекает следующий вопрос как счетчики эти сбрасывать не используя метод Free.
Код: Выделить всё
plcTagReadPR110[1].CommReadErrors
plcTagReadPR110[1].CommReadsOK

Спасибо за оказанную помощь :)
madlih
новенький
 
Сообщения: 13
Зарегистрирован: 05.10.2012 11:57:04

Re: pascalScada

Сообщение serg_iv » 01.11.2012 12:38:44

Очень полезно, только вытекает следующий вопрос как счетчики эти сбрасывать не используя метод Free

я не сбрасываю, просто отслеживаю количество критичных ошибок за определенный интервал
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: pascalScada

Сообщение mig-31 » 01.11.2012 17:17:16

Детекция ошибки
Код: Выделить всё
  PLCTagNumber1.LastASyncReadStatus
  PLCTagBlock1.LastASyncReadStatus


Это свойство возвращает статус последнего чтения.
Проверено на ModBus RTU, ModBus TCP
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Re: pascalScada

Сообщение madlih » 02.11.2012 10:34:33

mig-31 писал(а):Детекция ошибки
Код: Выделить всё
  PLCTagNumber1.LastASyncReadStatus
  PLCTagBlock1.LastASyncReadStatus


Это свойство возвращает статус последнего чтения.
Проверено на ModBus RTU, ModBus TCP


Не могли бы вы привести пример использования?
madlih
новенький
 
Сообщения: 13
Зарегистрирован: 05.10.2012 11:57:04

Re: pascalScada

Сообщение mig-31 » 05.11.2012 17:20:15

Код: Выделить всё
if PLCTagNumber1.LastASyncReadStatus<>ioOk
  then
     begin
        strError:=GetEnumName(TypeInfo(PLCTagNumber1.LastASyncReadStatus),integer(PLCTagNumber1.LastAReadSyncStatus));
        ShowMessage(strError);     
     end;     
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Re: pascalScada

Сообщение madlih » 21.11.2012 11:31:07

Спасибо огромное. Очень помогло.
На данный момент встал вопрос оптимизации запросов. Дело в том что сейчас мне нужно опрашивать порядка 20 регистров на трех устройствах. Так как познаний в Паскальскада у меня мало я использую элемент tagblock присваиваю ему адрес для чтения регистра читаю, меняю адрес читаю. Считаю подход такой неправильным, но другого пути пока незнаю. В идеале же было бы считать 1 запросом с одного устройства весь набор регистров, но пока не могу реализовать такой подход, курю маны. Если у кого нибудь есть мысли, опыт или наработки прошу помочь
madlih
новенький
 
Сообщения: 13
Зарегистрирован: 05.10.2012 11:57:04

Re: pascalScada

Сообщение Anton156 » 14.12.2012 06:08:13

А кто-нибудь пробовал pascalScada 0.7.3 ? Там вроде реализован OPC
Anton156
незнакомец
 
Сообщения: 1
Зарегистрирован: 12.12.2012 07:12:14

Пред.

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

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

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

Рейтинг@Mail.ru