ProtoLink developed a multithreaded OPC Server to gather data from Ishida statistical weigher models RLC, S, Z, RZ, NZ, M,
and R. The server is capable of communicating with the machines over both ARCnet and Ethernet networks.
The application dedicates three threads for each ARCnet board or USB device configured for use. One thread
sends messages while a second waits for asynchronous inbound messages and then queues them for processing by
a third thread. Unsolicited messages are readily supported using this approach.
The application dedicates a minimum of six threads for each Ethernet channel to be used. One thread
is responsible for initialization tasks related to asyncyhronous sockets communication, including the
creation of an I/O Completion Port and at least two worker threads tasked with removing queued messages
from the I/O Completion Port. An inactivity timeout detection thread is used to determine those sockets
that were once established by the application but are no longer required. Finally, as with ARCnet,
Ethenet channels utilize separate threads for sending messages and for processing received messages.
Three additional threads play important roles in the function of the Ishida OPC Server. One handles
the user interface and the OPC interface. The second additional thread updates application performance
counters which may be viewed using the Performance Monitor application that ships with Windows. The
third additional thread processes diagnostic messages queued by other threads and writes them to a
file which can be viewed by a separate ProtoLink-developed log viewing application.
The Ishida OPC Server user interface supports run-time switching between the English and French languages.
It allows the user to configure communication channels, weighers, poll groups, and polling schedules.
Visual feedback is provided in the event that any weighers are improperly configured. The user
interface displays communication statistics for all communication channels and statistical weighers.
It also shows current OPC item values for all configured weighers.