Диагностика работы с устройством Mercury

<< Click to Display Table of Contents >>

Navigation:  Проект в MasterSCADA 4D > Дерево системы > Получение и отправка данных > Дополнительные протоколы > Mercury > Рекомендации по настройке протокола Mercury >

Диагностика работы с устройством Mercury

Если при опросе одного параметра (времени) или всех параметров прибора возникают проблемы, то можно получить лог-файл и проанализировать обмен с устройством.

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

Чтобы в лог-файлы записывались запросы от устройств, необходимо активировать расширенный режим записи логов. Для этого, в панели свойств узла, для настройки Параметры запуска RT нужно установить значение /t :

diagnostika_raboti_s_ustroistvom_Mercury

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

В случае если используется исполнительная система, входящая в состав среды разработки, файлы, по умолчанию, хранятся в папке: С:\Users\[имя пользователя]\AppData\Roaming\MPSSoft\MasterSCADA4D[номер версии]\ProjectsServiceData\[имя проекта]\Debug\[имя узла]\PLC\logs\log_[дата формирования файла].txt

В случае если используется исполнительная система, установленная как независимое приложение, то информацию о получении лог-файлов смотрите в соответствующем разделе.

Откройте лог-файл при помощи Блокнота или специальным ПО для просмотра логов (например LogViewer).

Так как в лог-файлах фиксируется полная информация от системы, то необходимо выделить сообщения, связанные непосредственно с протоколом. Диагностические сообщения от протокола можно определить по начальному тексту Mercury driver.

Пример:

Mercury driver. Read start

Mercury driver. Start init session

11443677 |15740|:res=11 err=0 Task=0 iTimeout=500 len=11: 2B 01 01 01 01 01 01 01 01 9D 70  -> (task=0 dt=43 c=4(4)) 2B 00 1F 40  

Mercury driver. Session is init

11443721 |15740|:res=5 err=0 Task=0 iTimeout=500 len=5: 2B 08 12 86 05  -> (task=0 dt=44 c=9(9)) 2B 64 64 44 B7 5F 49 A5 3E  

11443763 |15740|:res=5 err=0 Task=0 iTimeout=500 len=5: 2B 08 02 87 C9  -> (task=0 dt=42 c=7(7)) 2B 00 01 00 01 90 06  

11443806 |15740|:res=5 err=0 Task=0 iTimeout=500 len=5: 2B 04 00 03 08  -> (task=0 dt=43 c=11(11)) 2B 31 58 17 03 30 08 23 01 EA 09  

Mercury driver. Current time=2023.08.30 17:58:31

Mercury driver. READ CURRENT TAGS

11443848 |15740|:res=5 err=0 Task=0 iTimeout=500 len=5: 2B 08 00 06 08  -> (task=0 dt=42 c=10(10)) 2B 14 0E 46 2B 1D 08 0E C0 A6  

11443891 |15740|:res=5 err=0 Task=0 iTimeout=500 len=5: 2B 04 00 03 08  -> (task=0 dt=43 c=11(11)) 2B 31 58 17 03 30 08 23 01 EA 09  

Mercury driver. Current time=2023.08.30 17:58:31

Mercury driver. Close session

11443926 |15740|:res=4 err=0 Task=0 iTimeout=500 len=4: 2B 02 9E 81  -> (task=0 dt=35 c=4(4)) 2B 00 1F 40  

Mercury driver. Read done

В данном примере выполняется следующая последовательность действий:

1.Устанавливается сессия;

2.Происходит считывание параметров счетчика и текущего времени;

3.Сессия завершается.

Параметры счетчика, такие как серийный номер и коэффициенты трансформации, считываются единожды при запуске, независимо от того, будут ли они включены в дерево или нет. Что касается времени, оно считывается дважды: в начале для работы с архивами и в конце, чтобы убедиться, что время внутри канала ближе к текущему моменту времени.

Если в устройстве присутствуют текущие каналы, то их считывание выполняется после строки Mercury driver. READ CURRENT TAGS.

Пример:

Mercury driver. READ CURRENT TAGS

11618819 |27272|:res=5 err=0 Task=0 iTimeout=500 len=5: 2B 08 00 06 08  -> (task=0 dt=42 c=10(10)) 2B 14 0E 46 2B 1D 08 0E C0 A6  

11618858 |27272|:res=6 err=0 Task=0 iTimeout=500 len=6: 2B 08 11 11 44 5E  -> (task=0 dt=39 c=6(6)) 2B 00 11 00 05 90  

11618899 |27272|:res=6 err=0 Task=0 iTimeout=500 len=6: 2B 08 11 12 04 5F  -> (task=0 dt=41 c=6(6)) 2B 00 5C 05 F0 C3  

11618938 |27272|:res=6 err=0 Task=0 iTimeout=500 len=6: 2B 08 11 13 C5 9F  -> (task=0 dt=39 c=6(6)) 2B 00 EA 55 86 9F  

11618977 |27272|:res=6 err=0 Task=0 iTimeout=500 len=6: 2B 08 11 21 44 4A  -> (task=0 dt=39 c=6(6)) 2B 00 00 00 09 C0  

11619016 |27272|:res=6 err=0 Task=0 iTimeout=500 len=6: 2B 08 11 22 04 4B  -> (task=0 dt=39 c=6(6)) 2B 00 00 00 09 C0

Если в устройстве есть архивные каналы накопленных энергий, то они опрашиваются поочередно.

Пример:

Mercury driver. Read Arr 0x3 tariff 0 month 10

12003196 |15380|:res=6 err=0 Task=0 iTimeout=500 len=6: 2B 05 3A 00 0B 61  -> (task=0 dt=54 c=19(19)) 2B 00 00 12 00 00 00 00 00 00 00 00 00 00 00 09 00 0A CA  

Mercury driver. Value=0.018000

Mercury driver. Value=0.000000

Mercury driver. Value=20221001

Mercury driver. WriteValues: Time=2022.10.01 00:00 Pp=0.018000,Pm=0.000000,Qp=0.000000,Qm=0.009000,Pointer=20221001

В данном случае осуществляется чтение следующих данных: массив 0x3, который содержит значения за месяц, с учетом нулевого тарифа (сумма всех тарифов), за последние 10 месяцев. Также производится чтение архива 0xB, который содержит значения на начало каждого месяца. Значения энергии из архива читаются один раз при запуске, после чего они записываются в архив, и последнее значение считывается при каждой смене месяца/суток. А энергетические показания, не являющиеся архивными, считываются как текущие значения.

Чтение профиля мощности начинается со строки Mercury driver. READ ARCHIVE MODULE.

Пример:

Mercury driver. READ ARCHIVE MODULE 1

12003739 |15380|:res=5 err=0 Task=0 iTimeout=500 len=5: 2B 08 13 47 C5  -> (task=0 dt=46 c=12(12)) 2B 0C 5F 09 18 00 30 08 23 3C 1D CF  

Mercury driver. Current pointer: Time=2023.08.30 18:00 address=50672

Mercury driver. Read address 50688  

12003797 |15380|:res=8 err=0 Task=0 iTimeout=500 len=8: 2B 06 03 C6 00 0F 2E 7D  -> (task=0 dt=58 c=18(18)) 2B 09 11 00 23 09 22 3C 00 00 00 00 00 00 00 00 32 8E  

Mercury driver. Value=0.000000

Mercury driver. Value=0.000000

Mercury driver. WriteValues: Time=2022.09.23 12:00 Pp=0.000000,Pm=0.000000,Qp=0.000000,Qm=0.000000

Mercury driver. Value=50688

Архив начинает читаться с самой старой записи. В каждом цикле опроса считывается количество записей, установленное в настройках модуля, и полученные значения сохраняются в архиве. В параметр Pointer записывается указатель на последнюю успешно считанную запись. В случае перезапуска системы, процесс чтения начнется с момента, который соответствует последней успешно считанной записи, сохраненной в параметре Pointer.

Смотрите также: