The GOcontroll Moduline III and IV are standard pre-programmed with Node-RED. Node-RED is a well maintained, open source graphical programming environment which enables the user to program their control algorithms with the help of nodes.
Node-RED comes with so called core nodes for most common interfaces and functions. Since the project is open, a lot of contributes have made specific nodes for interfacing and control. Simply adding these nodes, extent the possibility for the GOcontroll Moduline.
GOcontroll developed several nodes to interface the optional plugin modules and the on-board features. Without the knowledge of programming, users are able to build, customize, monitor and maintain their control algorithms.
The Node-RED environment.
The complete Node-RED environment is installed on top of Linux and is running on the Moduline controller. No external software IDE’s or compilers are needed to start building your algorithm.
Node-RED can be accessed as a web-service using a browser. A connection with the controller is mandatory and can be established using the on-board WLAN, configured as acces point, or using the wired ethernet connection. Pointing to the web-service from within the browser will provide acces to the development environment.
The environment provides a clear, intuitive platform with on the left a node library (palette) in the center the control algorithms, build by the user, (flow) and on the right side a information and configuration overview.
For more information, have a look at the Node-RED website
GOcontroll created several nodes to use directly inside the Node-RED development environment. These nodes interface the modules plugged in to the controller, and the on-board features. When dragging and dropping nodes into the environment, the user is able to configure a specific feature according user demands by just selecting options.
For more information about the GOcontroll nodes, please visit the Wiki environment where a brief description of the nodes can be found.
Each node that is dragged and dropped into the environment has some configuration options. On the right, an example is given for the input module. When an input module is plugged into the controller, this node can be used to configure the specific behavior of the module.
On the right example:
- Slot on which the module is physically plugged in.
- Sample time which determines the update frequency of the signals.
- Signal name which is pushed out the node.
- Signal type that is retrieved by the module.
- Expected input voltage.
- Pull up and pull down selection.
An extended explanation of each node can be found in the right column inside the Node-RED environment. If modules are updated, new feature explanations are also updated on the information tab.
Flow based programming.
The nodes used in the control algorithm get and send their data in form of data flows (streams) these flows can have multiple parameters including parameter key’s and meta data in JSON-object format.
The input module e.g. retrieves the value from a corresponding input pin (from the controller) and convert it to the value that is expected by the user. The signal key describes the meaning of this signal so it can be used in the environment. If a temperature signal is expected on input 1 from the input module, e.g. the signal key could be defined as engineTemp. This way, the parameter can be used in an easy way in the project.
Node-RED and Matlab Simulink.
Beside the Node-RED environment, the GOcontroll Moduline can also be programmed with Matlab Simulink. Simulink modeling enables the user to use a high end block library to build high end algorithms for e.g. closed loop and real time applications. To combine the strengths of each environment, GOcontroll developed function nodes for both Node-RED and Simulink to exchange data between the two environments.
The nodes create a virtual connection between the two platforms to exchange data. For example, in this way Simulink can be used to build the real time control application and Node-RED takes care of the internet communication for remote monitoring.
The Simulink blockset available for the GOcontroll Moduline is based on the HANcoder blockset initiated by HAN Automotive Research. More information and software requirements can be found on: openmbd