External Communication Specification SIMO has the possibility for external communication during run-time through various approaches: - User-supplied functions - High Level Architecture (HLA) communication over a Real-Time Interface (RTI) network - MARINTEK Dynamic Positioning (MTDP) communication with dynamic positioning (DP) systems running as an independent processes 1. User-supplied functions 1.1. User-supplied DLLs SIMO enables user-supplied (force) functions supplied as shared libraries, which are called dynamic link libraries (DLLs) in Windows. The supplied modules are directly available during run-time, without linking. Application of DLL is a restricted option and not available as standard SIMO licence contract conditions. A variety of equipment for use in marine operations is introduced on the market. The equipment varies from passive equipment with specially designed response characteristics to automatically controlled equipment. A mathematical model of the actual system to be evaluated may not be available in a form suitable for compilation and linking into the executable SIMO program. There are several reasons for searching other possibilities than linking special models into the executable code. The most important will be: Rapid prototyping is enabled. The user can implement and test new equipment without the SIMO source code and knowledge of the details of the data structure in SIMO. Implementations in SIMO must be performed by MARINTEK. This may be considered to be in conflict with the designer’s need to keep proprietary information within the company. The user chooses the level of QA/QC. For new equipment that is modelled and implemented in SIMO, the code is subjected to the MARINTEK systems for QA/QC with version control, testing, maintenance procedures etc. 1.2. User-supplied Java code SIMO is also capable of running user-supplied control systems written in Java using the feature Generic External Control System (see Generic External Control System for a description of the input). In order to develop a control system, a Java Development Kit (JDK), for example Oracle JDK, is required. It is also recommended to install an Integrated Development Environment (IDE), for example Eclipse, to help developing the java code. For the Java control system to work with SIMO, it needs to be linked with HLALib.jar which can be found in the SIMO installation. More specifically, the class containing the control system must implement the interface no.marintek.generic.control.IController. There are three methods that will be called by SIMO where the user can put the code: init: This method is called before the simulation starts and supplies the time step and user defined parameters step: This method is called once at each substep during the time domain simulation. It supplies data from the simulation to the control system and returns feedback from the control system to SIMO. finish: This method is called once after the time domain simulation Data is sent to and from the external control system in a hierarchical structure with methods available in the Java interface to easily retrieve and return data. For further documentation, see the interface in HLALib.jar. In IDEs like Eclipse, the documentation can be viewed by hovering the mouse over or ctrl-clicking variables and types defined by the interface. Currently the following measurements and feedback are available to a Generic External Control System: 1.2.1. Measurements: Entity Type Component Array length Elements BODY position 3 x, y and z position of body origin in global coordinate system. velocity 6 Velocity in x, y and z and rotational velocity about the x-, y- and z-axis in local body coordinate system. acceleration 6 Acceleration in x, y and z and rotational acceleration about the x-, y- and z-axis in local body coordinate system. T 9 Rotation matrix elements T_11, T_21, T_31, T_12, T_22, T_32, T_13, T_23 and T_33. Ref. `Position vector. Model formulation' in `Equations of motion' in the SIMO Theory Manual. COUPLING end1force 3 x-, y- and z-component of force in end 1 given in coordinate system of body at end 1. end2force 3 x-, y- and z-component of force in end 2 given in coordinate system of body at end 2. 1.2.2. Feedback: Entity Type Component Array length Comment WINCH runSpeed 1 Run speed of winch. For details, see documentation of Coupling Winch. 2. High Level Architecture (HLA) communication SIMO can exchange selected parameters with other programs in a simulator setup. The communication is handled by a Run Time Infrastructure (RTI) bus, which uses a standard TCP/IP network protocol, administered by High Level Architecture (HLA) software. HLA communication is a restricted option and not available as standard SIMO licence contract conditions. 2.1. Main data group for specifying the main data for HLA communication. 2.1.1. 1 identification input line. HLA COMMunication SPECification 2.1.2. HLA hostname specification, 1 input line HOSTNAME HOSTNAME: character(120): Character string describing the name of the central unit for the HLA simulation 2.1.3. HLA host port specification, 1 input line PORT PORT: integer, default: 0: Port number of the central unit for the HLA simulation 2.1.4. HLA federation name specification, 1 input line FONA FONA: character(120): Character string describing the name of the "HLA simulation" 2.1.5. HLA federate name specification, 1 input line FENA FENA: character(120): Character string describing the name of the "SIMO-part" of the HLA simulation 3. MTDP communication SIMO can communicate with external dynamic positioning (DP) systems running as a separate process. 3.1. Main data group for specifying the main data for MTDP communication. 3.1.1. 1 identification input line. MTDP COMMunication SPECification 3.1.2. MTDP host port specification, 1 input line IPORT IPORT: integer, default: 0: Port number of the central unit for the MTDP process