RevPi Virtual Device wrong data handling for Inputs

Post Reply
beusterh
Posts: 11
Joined: 17 May 2023, 11:33

RevPi Virtual Device wrong data handling for Inputs

Post by beusterh »

Hello community,
I am trying to exchange some data between a Codesys solution with a RevPi_Virtual device and a Python script that accesses the virtual device's process image via "f = open("/dev/piControl0", "wb+",0);", thinking this is one of the virtual device's intentions. I couldn't run it, so I decided to investigate the problem.

It shows the same behavior when I use "piTest -w ..." on the command line, as you can see in the attached images. When I write into the first byte of the device, all the other bytes are also set. When writing into the other bytes, nothing happens.
From there I don't know if I'm doing something wrong or if the connection (data processing) between Codesysruntime and RevPi is not working?
Can anyone confirm the behavior or give advice on how to do it right?
Attachments
set0.png
set0.png (54.82 KiB) Viewed 15295 times
set1.png
set1.png (61.48 KiB) Viewed 15295 times
u.biakoup
KUNBUS
Posts: 207
Joined: 14 Apr 2022, 13:04

Re: RevPi Virtual Device wrong data handling for Inputs

Post by u.biakoup »

Hello beusterh,
I want to let you know that CODESYS override the configuration of PiCtory. CODESYS writes all 32 bytes of Virtual outputs cyclically. Two applications cannot have write access to those virtual bytes address space, and they would be overwritten by CODESYS application. Could you please post here the device Tree of your System in CODESYS?
Make sure you are running your application on a suitable system. For that, please have a look at the CODESYS checklist.
I recommand you an easier way to access to the Process Image with python Using RevPiModIODriver from the Framework RevPiModIO.

In help file of Revolution Pi Library for CODESYS V1.3.0.0 (ID: 9721) is a note under chapter                                                                            

How to Configure RevPi Virtual Device
Note: The outputs of the RevPi Virtual device in CODESYS are written to the virtual inputs (Input_11_1 to Input_11_32) of the RevPi process image. External applications can write to virtual outputs (Output_1 to Output_32). These are then available as inputs of the RevPi Virtual device in CODESYS.<<
The python script should not write to address space where CODESYS writes all 32 bytes. It can write to aread of 32 bytes which CODESYS reads 

Best Regards

Ulrich Kouatang Biakoup | Technical Support
beusterh
Posts: 11
Joined: 17 May 2023, 11:33

Re: RevPi Virtual Device wrong data handling for Inputs

Post by beusterh »

Hello,
and thank you very much for your support.

My configuration followed exactly all the guidelines and I understand the swapping of inputs and outputs. But in the end, only using the following versions of all software components gave the desired success:

CODESYS Runtime 3.5.17
CODESYS Controller for Raspberry Pi MC SL - 4.6.0.0
Revolution Pi library for CODESYS RevolutionPiBridge V1.2.1.0
2022-07-28-revpi-buster.img

I don't know if there is another solution, but I think this should be marked as a bug in the current versions and fixed.

With kind regards
HB
u.biakoup
KUNBUS
Posts: 207
Joined: 14 Apr 2022, 13:04

Re: RevPi Virtual Device wrong data handling for Inputs

Post by u.biakoup »

Hello,
I recommend you this:
- CODESYS Controller for Raspberry Pi MC SL - 4.6.0.0
- CODESYS Runtime 3.5.18
-Revolution Pi Library for CODESYS V1.3.0.0 (ID: 9721)

CODESYS Runtime 3.5.17 is incompatible with CODESYS Controller for Raspberry Pi MC SL - 4.6.0.0

Best Regards

Ulrich Kouatang Biakoup | Technical Support
Post Reply