|
mono-Modbus:an Open Framework for Modbus Access |
The mono-Modbus project will provide a set of open-source software tools for data acquisition and supervisory control of Modbus devices, such as process controllers and dataloggers.
This research and development project will result in the design of a software architecture and a downloadable implementation.
The software architecture is intended to allow for modular development of open SCADA applications based on the Modbus protocol. Documentation for this architecture will include:
The downloadable implementation should be able to communicate with popular Modbus devices like process controllers and dataloggers. The basic release will include, at least, the following features:
All released software should be designed so that it supports future extensions, like an external configuration GUI and support for the other versions of Modbus Protocol (ASCII and TCP).
1. modbus#: Modbus main API. An object-oriented implementation for the Modbus protocol, packaged as a set of dynamic link libraries, allowing for quick development of local SCADA application.
2. Modbus distributed services: A set of standards-based remote bindings for the main API, for use in a language-independent distributed programming environment.
3. Osmox: A data aqcuisition system based on the main API and the remote bindings, which will provide publish-subscribe functionality built on the OPC Foundation's XML-DA standard. This system shall be easily portable to different operating systems, and provide interoperability with existing free and comercial software.
This project must follow the Modbus standard guidelines, as published in the MODBUS Protocol Specification. The first version of the main API will implement the Master side of the Modbus RTU protocol as defined in the Modbus Serial Line Implementation Guide V1.0.
The "remote bindings" for our Modbus protocol implementation must follow an open framework for distributed objects. The use of Web Services is recommended, since it allows for language-independent and platform-independent design of distributed applications, having some advantages over CORBA and other distributed frameworks. Web Services are based on HTTP and SOAP, having the ability to pass through firewalls on the Internet. It is very well supported in modern programming languages, and has a softer learning curve than CORBA.
Compatibility with commercial, "off-the-shelf" SCADA and HMI packages is highly desired. The international standard for interoperability in Control and Automation is OPC Foundation's OLE for Process Control (OPC). Our project should implement an OPC server based on the XML-DA specification. XML-DA is a Web Services-based standard for Data Acquisition from Control and Automation equipment; it is released for members of the OPC Foundation's web site. Using XML-DA, automation software and equipment from different manufacturers can "talk" over the Internet in a standard way.
The .NET framework is suggested for deployment of our solution. The .NET framework was chosen for a number reasons: it provides binary compatibility to many different operating systems; it provides uniform access to serial ports in both Windows and Linux (using Mono); and it has great support for developing distributed applications based on Web Services. Another important reason is the existence of OpenDA, an open-source tool used for the development of OPC XML-DA servers, which is already being written using the .NET framework.
Our project will be developed using C#, a very powerful language for working with the .NET framework. Mono, a free implementation of the .NET framework, is the recommended development platform. Mono gives excellent portability and comes with good programming tools (a compiler, base class libraries and an IDE with built-in support for Unit Testing).