To achieve efficient communication between distributed real-time processes, it is desirable to both choose the best protocol for each communication path and limit variation to improve software portability. These divergent goals can be satisfied through the use of a uniform application programming interface (API) that hides the details of specific protocols from programmers. The Neutral Message Language (NML) is a uniform API to communication functions that includes many popular protocols: interprocess shared memory; interprocessor backplane global memory; and Internet networking. NML implements a mailbox model for communication, with both queued- and non-queued access, blocking- and non-blocking reads and writes, and multiple readers and writers. NML provides language bindings for both C++ and Java. The protocol parameters are contained in configuration files that are read at run time, so that a system's allocation of processes to processors can be deferred as late as desired and modified dynamically. NML handles mutual exclusion for data integrity, and converts between native machine format and neutral data encoding when necessary.NML has been used in a variety of applications, from manufacturing to vehicle control. This paper details how NML works; how NML applications are built, tested, and fielded; and compares NML with other communication mechanisms.
Proceedings Title: Robotics and Applications; Robotic and Manufacturing Systems Recent Results in Research, Development and Applications, International Symposium | 8th | | TSI Press
Conference Dates: June 11-16, 2000
Conference Title: Proceedings of the World Automation Conference
Pub Type: Conferences
C++, communication, distributed control, JAVA, network, NML, RCS, real-time, shared memory