There is no lower level limit on how fast
the I/O server can request data from a driver. Whenever a request
for data arrives at the I/O server from a Citect client or server,
the I/O server will pass it to the driver - as long as there are
some free pending commands. Normally the driver will be busy, so as
soon as the driver replies with the result, the I/O server will
pass the next DCB to the driver. How fast this will occur will
depend on the CPU loading of the computer, but typically it will be
sub 1ms.
Normally the limit with very fast drivers is that the Citect
client will not make request for data fast enough or it will be
limited by network bandwidth when getting requests to the I/O
Server. So as a quick test, I created a small Citect project with a
DISK PLC and 1 tag called INT1. I then executed this Cicode
function:
FUNCTION
Test()
INT temp;
WHILE 1 DO
temp = int1;
ReRead(1); // force a
read of int1 from disk PLC.
END
END
This Cicode function will run flat out requesting to read the
int1 tag. The disk PLC has an artificial delay so you must also set
the parameter [DISKDRV]Delay=0. On my Pentium Pro 200, this caused
4317 reads per second. So Citect was replying in roughly 0.2316423
ms on a PP200. As this is totally CPU bound, the faster the CPU the
shorter the time.
|