<< Click to Display Table of Contents >> Navigation: Проект в MasterSCADA 4D > Дерево системы > Получение и отправка данных > Дополнительные протоколы > Mercury > Рекомендации по настройке протокола Mercury > Диагностика работы с устройством Mercury |
Если при опросе одного параметра (времени) или всех параметров прибора возникают проблемы, то можно получить лог-файл и проанализировать обмен с устройством.
Важно! Получать лог-файлы обмена с устройством следует всегда на отдельном проекте, с одним устройством и минимумом переменных.
Чтобы в лог-файлы записывались запросы от устройств, необходимо активировать расширенный режим записи логов. Для этого, в панели свойств узла, для настройки Параметры запуска RT нужно установить значение /t :
После этого, запустите проект в режим исполнения, дождитесь возникновения проблемы, затем перейдите на главном меню во вкладку Сервис и выберите Отчет об ошибках. Создайте отчет об ошибке и откройте папку, содержащую отчет.
В случае если используется исполнительная система, входящая в состав среды разработки, файлы, по умолчанию, хранятся в папке: С:\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.
Смотрите также:
Проверка связи с устройством Mercury через конфигуратор