Автор Тема: «Задержка» - время "молчания"  (Прочитано 37023 раз)

Оффлайн Voldemus

  • Newbie
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #45 : 24.11.2017, 22:42:18 pm »
Межбайтовый интервал у меня 0 стоит и его трогать не надо. Таймаут я увеличивал, не помогает. Малое число регистров читается отлично. Я так полагаю, что это ОС рвет обмен при длинном пакете отклике, Т.к. Windows не является ОС реального времени, то она в любой момент может приостановить выполнение программы пользователя для выполнения системных программ.

Оффлайн Айрат

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 324
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #46 : 24.11.2017, 22:50:51 pm »
Это не OPC сервер, это устройство рвет пакеты. А межбайтовый интервал выставлять надо обязательно, т.к. даже в спецификации Modbus сказано что гарантированным окончанием передачи является тишина 1,5 символа, что для скорости 9600 примерно 1,5 мс, я бы порекомендовал 2 или 4.
И дело не в Windows, вы правы что работа программ может быть приостановлена, но драйвер COM порта работает в нулевом кольце, т.е. имеет приоритет выше чем программы прикладного уровня.

Айрат

Оффлайн Voldemus

  • Newbie
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #47 : 24.11.2017, 22:53:34 pm »
Что драйвер COM порта имеет наивысший приоритет и его работу никто не может прервать ?

Оффлайн Voldemus

  • Newbie
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #48 : 24.11.2017, 22:55:34 pm »
Почему тогда короткие пакеты отклики передаются без проблем. Там то же межбайтовый интервал 0.

Оффлайн Айрат

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 324
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #49 : 24.11.2017, 23:04:41 pm »
Работу драйвер может прервать только другой драйвер. А функции драйвера работаю очень короткое время, соответственно времени хватает и обычным программам.
Что бы передать короткий пакет (ответ на чтение 1 регистра) на скорости к примеру 9600 необходимо примерно 7 мс, это без интервала тишины. За это время работу драйвера последовательного порта в контроллере может никто и не прерывает, вероятность маленькая. А что бы ответить на запрос чтения 50 регистров необходимо уже 105 мс, это много, за это время может сработать прерывание и алгоритм его отрабатывающий может занять к примеру 2 или 3 мс, на это время ответ приостановился, а драйверу COM порта этого достаточно что бы решить что прием завершен.

Оффлайн Voldemus

  • Newbie
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #50 : 24.11.2017, 23:20:53 pm »
Нет у меня в основной программе ПЛК никаких прерываний.

Оффлайн Айрат

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 324
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #51 : 24.11.2017, 23:34:13 pm »
А все длинные пакеты рвутся или только часть?

P.S. По вашему предыдущему замечанию, обновили OPC сервер, можно скачать с сайта.

Оффлайн Айрат

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 324
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #52 : 24.11.2017, 23:35:46 pm »
Забыл, вы писали уже что  иногда.

Оффлайн Айрат

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 324
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #53 : 24.11.2017, 23:40:57 pm »
Есть отличная утилита, Portmon (https://technet.microsoft.com/ru-ru/sysinternals/portmon.aspx)
Позволяет "прослушивать" COM порты, с помощью ее можно посмотреть обмен между OPC сервером и ПЛК.
Своеобразный арбитр, эта утилита сразу покажет, в ком проблема.

Айрат

Оффлайн Voldemus

  • Newbie
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #54 : 25.11.2017, 12:54:18 pm »
Есть отличная утилита, Portmon (https://technet.microsoft.com/ru-ru/sysinternals/portmon.aspx)
Позволяет "прослушивать" COM порты, с помощью ее можно посмотреть обмен между OPC сервером и ПЛК.
Своеобразный арбитр, эта утилита сразу покажет, в ком проблема.

Айрат

Спасибо, попробую все о чем вы писали.

Ваш бесплатный OPC сервер какие ограничения имеет ?

Оффлайн Айрат

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 324
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #55 : 25.11.2017, 17:05:01 pm »
Здравствуйте.

Неограниченное время для конфигураций до 32 тегов или два часа работы при превышении этого количества.

Айрат

Оффлайн Voldemus

  • Newbie
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #56 : 25.11.2017, 17:41:33 pm »
Здравствуйте.

Неограниченное время для конфигураций до 32 тегов или два часа работы при превышении этого количества.

Айрат

Если я читаю 50 регистров, то это 50 тегов ?

Оффлайн Айрат

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 324
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #57 : 25.11.2017, 19:29:26 pm »
Смотря как вы их настроили. Если вы для них выбрали тип данных Double, то в этом случае это будет 200 регистров.

Айрат

Оффлайн Voldemus

  • Newbie
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #58 : 25.11.2017, 20:04:19 pm »
Смотря как вы их настроили. Если вы для них выбрали тип данных Double, то в этом случае это будет 200 регистров.

Айрат

Вы хотели сказать 200 тегов ? Нет у меня регистр состоит из двух байт. Значит это будет 100 тегов ?

Оффлайн Айрат

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 324
    • Просмотр профиля
Re: «Задержка» - время "молчания"
« Ответ #59 : 25.11.2017, 20:52:49 pm »
Нет.
Теги и регистры это разные вещи. Один тег может состоять из 1, 2, 3, 4 и т.д. регистров.
Тег это экземпляр информации не зависящий от внутреннего представления в устройстве, контроллере.
Под тегом понимается например: температура газов на выкиде из котла, состояние насоса, команда управления частотником и т.д. Не важно, сколько необходимо регистров для того что бы получить состояние тега.
OPC сервер считает теги, он не считает регистры. Если вы обратили внимание, в OPC сервере реализованы алгоритмы работы с другими устройствами: электросчетчики, частотники, устройства работающие по DCON протоколу, в них вообще нет понятия регистра или адреса, просто тег и все.

Как я вам говорил ранее, если вы у тега зададите тип данных Double или Int64, этот тег в пространстве Modbus устройства будет занимать 4 регистра или 8 байт, но для OPC сервера это будет 1 тег и вы сможете спокойно добавить еще 31 такой же в конфигурацию.

Айрат