Realizer Virtual Machine

RVM helps you to separate the application software from the systems software in an industrial control system. Just like an operating system, it helps you keeping your focus onto the application and away from the PC-hardware details.

RV-Code generated by Realizer

The target module with the name RVM is essentially a code generator for the dedicated RVM virtual machine. This virtual machine is available for Actum Solutions.
At run-time, all you need is:

  • Basic system software (h/w initialization, I/O drivers, etc.)
  • Realizer Virtual Machine (RV-machine) loaded into code memory
  • RV-Code (the application) loaded into (data-) memory
A run-time environement with several demo-applications is available from this website.

RVM overview

The RVM runs in the following environment:

Sample code

In essence, the RV-code is loaded into the data memory space. After that the following sample code is enough to let it run:

  • int rvmThread(void)
  • {
    • u32 rTick = 0;
    • u32 rPrevTick = 0;
    • int progSize =
          • swapLong(vmHeader->progSize);
      • initHardware();
      • realizerVMInit(
          • progCodeHandle,
          • varHandle,
          • inputHandle,
          • outputHandle,
          • progSize);
      • while(1)
      • {
        • getInputs(inputHandle);
        • rTick = rtcRead();
        • realizerVMRun(
          • progCodeHandle, // RVM-code
          • varHandle, // application data
          • inputHandle, // available inputs
          • outputHandle, // necessary outputs
          • rTick - rPrevTick, // elapsed time
          • progSize);
        • rPrevTick = rTick;
        • refreshOutputs(outputHandle);
      • }
  • }

This is an example of the code delivered with the RVM Target Module. It represents the code needed to implement the part designated as RVM Control panel in the diagram above.