Remote Laboratory Java Server Based on JACOB Project

—Remote laboratories play an important role in the educational process of engineers. This paper deals with the structure of remote laboratories. The principle of the proposed remote laboratory structure is based on the Java server application that communicates with Matlab through the COM technology for the data exchange under the Windows operating system. Java does not support COM directly so the results of the JACOB project are used and modified to cope with this problem. In laboratories for control engineering education a control algorithm usually runs on a PC with Matlab that really controls the real plant. This is the server side described in the paper in details. To demonstrate the possibilities of a remote control a Java client server application is also introduced. It covers communication and offers a user friendly interface for the control of a remote plant and visualization of measured data.


I. INTRODUCTION
Influenced by the growth of the Internet the online education has become the regular part of the educational process. In the education of engineers laboratory exercises create the essential part of learning where students can compare theoretical knowledge with practical skills. In the online education classical laboratories are being replaced by remote laboratories [8]. Although using the remote laboratories could not be fully compared with the stay in classical laboratories it can significantly improve the process of getting familiar with the laboratory environment (e.g., virtual tour) as well as it enables acquiring measured data and their processing. Remote laboratories differ from virtual laboratories as they provide students with real data. Virtual laboratories rely on simulations so the data are not real (Fig. 1).
There are several ways how to supply data to remote users. Very often a client server architecture is used for the exchange of data between remote sites. This paper is focused on the server side of a client server application. The structure of the server side can be very different with respect to the services that should be provided to remote clients. This contribution describes the server that is based on the Java programming language and the COM technology for the data exchange. Similar structures have already been described [2][3][4][5][6] but the novelty of this approach consists in the usage of JACOB project results and their modification. This allows to avoid the necessity of using Microsoft Java Virtual Machine (MS JVM) as it was the case in the previous our solutions. For the future this is important also for that fact that from the year 2009 MS JVM is no more supported by Microsoft and so it is very hard to implement it in new Windows operating systems.
II. REMOTE LABORATORY BASIC ELEMENTS First review basic elements that create a remote laboratory. As it is depicted in the Fig. 1 the remote laboratory consists from a client side and a server side that are interconnected through the Internet. The server side includes the server with its hardware, software, and additional equipment that represents a real system. The basic task of the remote laboratory is to provide clients with possibilities to operate with remote real systems. Sometimes it means only to monitor how the real system behaves or measure its characteristics. But in different cases remote users can interact with the real system and see its responses. This time remote users can actively influence the behavior of the real systems or in other words they can control it. The precondition is that it is possible to control the real system by a computer (local control at the server side). If this is fulfilled then the server must manage the data flow between the client and the real system to enable the remote laboratory will operate correctly. III. JAVA SERVER BASED ON JACOB PROJECT As it was mentioned above the server mediates the communication between clients and the real system. Usually it transfers client's commands to the real system and returns the response data to the client. By this way it operates like a proxy server. But the server can also perform additional tasks, e.g., administration of user accounts and control of a remote laboratory approach. In the following we will discuss the basic functionality of the server and describe the process of the data exchange in details. We will not concentrate on the standard TCP/IP communication between the server and the client that is iJOE -Volume 7, Issue 1, February 2011 realized through the Internet. But we will focus on the data flow between the server and the application that directly communicates with the real system. In our case it is the Matlab application. This means that all our real systems are locally controlled by the Matlab.
Using the Matlab under the Windows operating system we have several possibilities to communicate with other applications. If we choose that Java will be the server programming language then these possibilities are limited to few ones.
The old technology of the data exchange called Dynamic Data Exchange (DDE) is no more developing from the Matlab version 5.1. The following technology called Component object model (COM) is well supported in Matlab but not supported in Java. On the other hand the platform independent technology Common Object Request Broker Architecture (CORBA) is supported by Java but not by Matlab. To find the solution of the data exchange between Matlab and Java we have had to look for additional software that would enable this kind of communication. We found the JACOB project that serves for the interconnection of Java and COM technology as it is written in the full title of this project: Java COM Bridge. This determines that from the above mentioned possibilities the COM technology has been finally chosen for the data exchange.

A. COM technology
The COM technology has been developed by Microsoft and so it is limited to Windows operating systems. It defines a binary standard that is language independent and serves for component interoperability. It allows communication between running processes and dynamic creation of objects in programming languages that support this technology (unfortunately, Java does not belong to them). By the use of the COM technology developers and end users can choose application specific components supplied by different producers and integrate them into a complete application solution. The principle of COM consists in a language neutral way of implementing objects. Then these can be used in different environments than they were created in, even across machine boundaries (if we consider DCOM -Distributed COM).
Using the COM technology Matlab can play the role of a controller or be controlled by another component. We will choose the second possibility when the Matlab acts as Figure 2. Matlab as the COM Server object the server (Fig. 2). There are still two ways how to run the Matlab in the server mode. We are not interested in the case when the Matlab runs as the Engine Server. This case is solved by the well-known JMatLink library [7] that also interconnects Java with the Matlab. The disadvantage of this solution is that it does not allow to enter the External Mode of the Matlab that is necessary for compilation of real time algorithms. Therefore we have chosen the second possibility and run the Matlab as the Automation Server that is suitable also for fast real plants with the use of Real Time Workshop.

B. JACOB project
Up to now we have used Microsoft Java in order to approach COM objects [3] but Microsoft finished to support Java in the year 2009 and its software Microsoft Java Virtual Machine has become obsolete. So we have decided to use the JACOB project that offers a possibility to run a Java application in any Java Virtual Machine.
The JACOB project has been developed to create the bridge between Java and COM objects (JACOB -JAva COm Bridge). It enables to call COM Automation components from Java. It uses JNI to make native calls into the COM and Win32 libraries [1]. We have tried to use the results of this project earlier but we have not been successful in getting data from the Matlab workspace. After some time we have discovered that there is a small incompatibility between JACOB and Matlab when arguments of calling methods are misunderstood. After small modification of the JACOB's .dll file we were able to use JACOB libraries and so communicate with the Matlab Automation Server. In the Fig. 3 one can see the structure of the Java server based on the JACOB project. The Fig. 4 shows the server monitor windows during the data transmission.  The problem with the above mentioned incompatibility appeared by the calling the method GetWorkspaceData that serves for the transfer of a one-dimensional variable from the Matlab environment. Matlab required the last parameter should be the reference but references of VARIANT types were not implemented in JACOB and when there was an attempt to use them, the system announced an exception. This problem has been corrected by the modification of the JACOB's .dll file. If the method GetWorkspaceData is called its arguments are modified so that the new VARIANT of the VT_R8 type is created and the original one is overwritten by the type VT_VARIANT+VT_BYREF that points to the newly created VARIANT of the type VT_R8. After calling IDispatch.Invoke and its successful termination the newly created VARIANT is copied to the place of the original one and sent to the Java server for processing. A similar procedure has been applied to correct calls of the GetFullMatrix method that serves for the transfer of arrays.
IV. CLIENT APPLICATION The client application serves as the user interface so it should be designed friendly. First it has to connect to the specified address and port of the server in order to receive data. After the connection is established the data exchange can start. Usually the client sends Matlab commands and waits for responses from the server. The user does not need to know the syntax of Matlab commands. They are mostly hidden under buttons and text boxes of the client application. The responses from the server can be visualized in different forms:  text messages  numerical data  graphs  animations  video clips The client application reads default parameters for each system from a corresponding configuration file (Fig. 5). The configuration file contains information about all systems involved in the remote laboratory and because it is in the textual form it is easy to add a new system by simple copy and past commands to extend the file by a new section. Then it is necessary to modify parameters corresponding to the new system as the name of the system, the Simulink model name, the name of the file with initial Matlab parameters, the desired value, the sampling period, the time of the experiment, the file for saving outputs and the IP address of the server application. Thus the extension and modification of the configuration file provides the flexibility in creation of client applications for new remote laboratories. To demonstrate features of the Java server application based on the JACOB project we have used the universal client application for different real systems. From the control point of view the thermo-optical and the hydraulic systems (Fig. 6, 7) belong to the slow systems (their time constants are big enough so the control algorithm can run with a longer sampling period). The other two systems (the rotational pendulum and the magnetic levitation system - Fig. 8, 9) are fast systems and they require to run the Matlab in the mode of the Automation Server. V. CONCLUSION The newly developed Java server application for the remote laboratories that is based on the results of the JACOB project is no more dependent on the Microsoft Java Virtual Machine. For the future this seems to be very important because Microsoft does not support Java Virtual machine any more. We have to mention that it was necessary to slightly modify the JACOB's files. Finally, we have tested the developed software with several client applications for different real systems and it has been shown that it was stable under different Windows operating systems and different versions of the Matlab software. This means that the classical infrastructure of control engineering laboratories can be converted to the remote laboratories in a convenient way. Students welcome this process as they appreciate visiting remote laboratories very much. AUTHORS P. Bisták