Breaking News:

Realizer V4.30 build 105 is released Dear Realizer friends, a new version of Realizer V4.30 has been released: build 105. To check...
 

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 web site.

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.