Немного о скорости!
На один символ в физической линии приходится 11 бит (включая стартовый бит). Поэтому, на прием 100 тегов типа Float, при условии нулевого интервала (такое невозможно) между приемом последовательных символов уйдет примерно времени (идеальные условия):
Передача запроса: 360 * 11 / 115200 = 0,0343 (34.3 миллисекунды) для скорости 115200
Получение данных: 460 * 11 / 115200 = 0,0439 (43.9 миллисекунд) для скорости 115200
Общее время: 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") и вы не тратите дополнительного процессорного времени!
К тому же вы можете в ходе выполнения программы устанавливать или сбрасывать активность групп и тегов (управление опросом). Это значит что Вы определяете, что в данный момент опрашивается, а что нет! (значит определяете и скорость опроса данных)
Также реализован механизм "беззбойного" получения и передачи данных, уменьшающий количество ошибок приема и передачи в реальной линии примерно на 80%-90%. Естественно есть такой параметр как "качество тега".
Почти все функции раализованы в примере использования dll, программе Config_PLCNet.exe (с исходником).
Если Вам важна скорость работы вашей программы и вы сами программируете верхний уровень пишите на мой пейджер.