Image/Logo1.gif
Image/Logo2.gif

Image/Banner.gif

Image/Logo2.gif





PLC_dll.dll

Общее описание PLC_dll.dll
PLC_dll.dll предназначена для сетевого взаимодействия между контроллером (системой исполнения) или группой контроллеров ADAM 5510, управляющими технологическим процессом, и системой визуализации данных - программы отображения технологического процесса (далее программы) с использованием протокола Plcnet. Количество участников сети может достигать 64 контроллера.

   Данная PLC_dll.dll не является модификацией или аналогом Ultranet.dll из комплекта системы UltraLogik, а создана с нуля на ASM 32 как полностью независимая альтернатива для встраивания в свою программу верхнего уровня.
   Все экспортируемые функции передают и получают параметры по соглашению stdcall и Вы имеете возможность использовать данную dll совместно со своими программами визуализации, созданными с использованием Visual Basic, Visual С++, Delphi. Если не указано явно, то вызываемая функция синхронная!
   PLC_dll.dll работает напрямую с драйвером COM порта, независимо от версии Windows, что позволяет использовать её в ОС Win 98, Win Me, Win 2000, Win XP.

   P.S. Вам необходимо один раз написать шаблон программы верхнего уровня с использованием функций PLC_dll.dll и в дальнейшем вы будете только модифицировать свою программу под текущие потребности. Вам нет необходимости использовать OPC сервер и SCADA. Вы и только Вы определяете как будет работать Ваша система сбора и отображения данных!

Назад
==================================
Основные возможности
  • сетевой обмен по протоколу Plcnet с 64 контроллерами ADAM 5510
  • работа с COM1..COM6. В beta версии только с COM1, COM2
  • до 2500 сетевых переменных (Float, Integer, Boolean, Timer). В beta версии до 200
  • создание, сохранение конфигурации сетевого обмена
  • управление активностью отдельных групп (контроллеров) и отдельных сетевых переменных в группах
  • опрос и передача данных выделены в отдельный поток и не влияют на скорость выполнения вашей программы
  • проверка качества полученных данных, в случае bad данные запрашиваются повторно, это позволяет на порядок уменьшить количество сбоев связи при примерно 10-15% уменьшении скорости передачи
  • запись осуществляется после опроса данных, с подтверждением от контроллера и трехкратной пере отправкой в случаях сбоя в одном цикле опроса, если не записалось, то повторяется в следующем цикле и т.д., что позволяет гарантированно записать данные в контроллер
  • функции для установки адресов ваших переменных для значений тегов, тогда функция опроса контроллеров будет устанавливать значения тегов в вашей программе во время своего цикла опроса и отпадет необходимость в накладных расходах на получение данных
  • реализован таймаут, когда dll не опрашивает контроллеры чаще установленного значения (по умолчанию раз в 500 ms)
Новые возможности в версии 2.0 (в полной версии)
  • поддержка 1 функции обратного вызова (Callback) пользователя. Вызывается после завершения цикла опроса и передачи данных. Реализовано для отображения, обработки данных в программе пользователя
  • поддержка 2 функции обратного вызова (Callback) пользователя. Вызывается сразу после завершения цикла опроса и перед началом цикла записи данных. Реализовано для передачи данных с одного контроллера в другой контроллер (эмуляция удаленных переменных)

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

Назад
==================================
Структурные схемы
Структурная схема, иллюстрирующая взаимодействие программ и потоки данных,
представлена на рис. 1.
взаимодействие программ и потоки данных

Структурная схема, иллюстрирующая работу цикла опроса и передачи данных,
представлена на рис. 2.
работа цикла опроса и передачи данных

Назад
==================================
О скорости
На один символ в физической линии приходится 11 бит (включая стартовый бит).
   Поэтому, на прием 100 тегов типа Float, при условии нулевого интервала между приемом последовательных символов уйдет примерно времени (идеальные условия):

   Передача запроса:
   360 * 11 / 9600 = 0,4125 (412.5 миллисекунд) для скорости 9600
   360 * 11 / 19200 = 0,20625 (206.2 миллисекунд) для скорости 19200
   360 * 11 / 38400 = 0,1031 (103.1 миллисекунд) для скорости 38400
   360 * 11 / 57600 = 0,0687 (68.7 миллисекунд) для скорости 57600
   360 * 11 / 115200 = 0,0343 (34.3 миллисекунды) для скорости 115200

   Получение данных:
   460 * 11 / 9600 = 0,5270 (527 миллисекунд) для скорости 9600
   460 * 11 / 19200 = 0,2635 (263.5 миллисекунд) для скорости 19200
   460 * 11 / 38400 = 0,1317 (131.7 миллисекунд) для скорости 38400
   460 * 11 / 57600 = 0,0878 (87.8 миллисекунд) для скорости 57600
   460 * 11 / 115200 = 0,0439 (43.9 миллисекунд) для скорости 115200

   Общее время:
   412.5 + 527 = 939,5 миллисекунд для скорости 9600
   206.2 + 263.5 = 469,7 миллисекунд для скорости 19200
   103.1 + 131.7 = 234,8 миллисекунд для скорости 38400
   68.7 + 87.8 = 156,5 миллисекунд для скорости 57600
   34.3 + 43.9 = 78,2 миллисекунд для скорости 115200

   Из этого следует, что 2500 тегов в идеальных условия будут считываться минимум 2 секунды, при скорости 115200 и большее количество тегов практически применять нереально!
   На практике 62 тега считываются с контроллера за 65 ms, при этом dll использует процессорное время 3 ms (WinMe P3 - 750)(на Win2000 P4 - 1400 63 ms 1 ms). Dll написана на ASM и скорость обработки данных очень высока.
   На прямое получение значения тега из массива данных функцией ValTegFloatC уходит 2 такта + вызов самой функции. Если вы установите функцией SetAddrValFloat адрес переменной для получения значения тега, то передача значения уже входит в цикл опроса (65 ms "3 ms") и вы не тратите дополнительного процессорного времени!
   К тому же вы можете в ходе выполнения программы устанавливать или сбрасывать активность групп и тегов (управление опросом). Это значит что Вы определяете, что в данный момент опрашивается, а что нет! (значит определяете и скорость опроса данных)

Назад
==================================
Скачать
Архив с PLC_dll.dll и программой (примером с исходником на VB6) конфигуратором и описанием функций:
Plc_Dll.pas - файл описаний функций для Delphi-4 - создатель и разработчик Лунев Игорь!
plcnet32.zip - пример использования PLC_dll.dll для Delphi-4 - создатель и разработчик Лунев Игорь!


Назад
==================================



Сайт оптимизирован для экранного разрешения 800х600
и браузера Inernet Explorer.


Hosted by uCoz