LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

RT Restart Target.vi - what is the communication protocol?

We would like to use a Linux machine to remotely restart our cRIO chassis.

 

Under Windows, there is a handy utility called "RT Restart Target.vi" that works great. However, it does not exist under Linux.

 

I have used WireShark to eavesdrop on the communications between a Windows machine and a cRIO controller, and used RT Restart Target.vi configured for a MAC address input. There are UDP messages that go back and forth that seem to be associated with a restart command.My hope is to replicate this under Linux using the UDP utilities.

 

From WireShark, it looks like port 44515 on the cRIO controller is used.

 

I am getting the following sent from the Windows machine, in binary:

 

4544 F200 0002 0000 0000 0000 0000 0080 2F12 9305 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4E49

 

where the MAC address of the cRIO controller is 0080 2F12 9305

 

which seems to be the command to restart the cRIO controller.

 

However, when I try to do this by using the UDP utilities (under Windows, for now), it doesn't cause a restart. I can't find any documentation on-line for the communication details involved in a restart command. Does any one out there have any information on the protocol?

 

Many thanks for looking into this.

 

Chris

0 Kudos
Message 1 of 19
(5,935 Views)

Some suggestion. You may want to look at what the cRIO expects to receive.   Windows and Linux have different syntax. One example would be the "/" and "\".  Once you know what cRIO expects, then you can modify your linux command to match cRIOs.

 

Hope this helps.

J

0 Kudos
Message 2 of 19
(5,928 Views)

My question *is* about what the cRIO expects to receive. There is no (public) documentation on the protocol for remotely asserting a restart command. I am looking for this protocol so that I can implement it under Linux.

0 Kudos
Message 3 of 19
(5,919 Views)

Hello,

 

I will look into a work-around for this and follow up with you.

 

Regards,

Patricia B.

National Instruments
Applications Engineer
0 Kudos
Message 4 of 19
(5,898 Views)

Was there any more information about this?  I want to restart an RT platform from labview 64bit which is also not supported by the Restart Target.vi

 

Thanks!
Josh

G Systems

Certified LabVIEW Architect 

0 Kudos
Message 5 of 19
(5,840 Views)

Hello,

 

Just for clarification, are you programming in 64 bit LabVIEW or just trying to restart your VI in 64 bit LabVIEW? Also, would you mind elaborating on why you are unable to use the RT Restart VI?

 

Perhaps you could use the Watchdog Configure VI, let the time elapse and configure the action to reset the controller. Here is some more information on the Watch dog:


Watchdog Configure VI

http://zone.ni.com/reference/en-XX/help/370622J-01/lvrtvihelp/watchdog_configure/

 

Regards, 

Patricia B.

National Instruments
Applications Engineer
0 Kudos
Message 6 of 19
(5,837 Views)

Patricia,

 

I have a customer trying to restart a RT PXI system remotely from a Labview 2011 64 bit application.  He said he tried using the restart target.vi and it isn't supported in the 64 bit version of LabVIEW.

 

This thread caught my attention b/c I thought I might be able to just send a packet to restart it.

 

We could easily put the Restart target.vi (self) variant on the RT, but he said he usually is restarting the system b/c it has become unresponsive to commands (which means you wouldn't be able to send the variable for the RT restart).

 

Does this help?

 

Thanks so much for your response!

Josh

0 Kudos
Message 7 of 19
(5,835 Views)

Hello,

 

You could modify your code in 32-bit LabVIEW and resave it in 64-bit LabVIEW so you could have access to the Watchdog functions which would automatically reboot the RT target once the hardware counter goes to zero and a software failure prevents the application from resetting the timer.

 

You have access to a LabVIEW 32-bit with your 64-bit license.

 

LabVIEW download

http://www.ni.com/trylabview/

 

More info on the watch timer from the LabVIEW help: 

 

Using Watchdog Hardware to Recover from Embedded Software Failures (RT Module)

http://zone.ni.com/reference/en-XX/help/370622H-01/lvrtconcepts/rt_watchdog/

 

A watchdog timer is a hardware counter that interfaces with the embedded software application to detect and recover from software failures. During normal operation, the software application initiates the hardware timer to count down from a specific number at a known increment and defines the action to take if the timer reaches zero. After the application starts the watchdog timer, it periodically resets the timer to ensure that the timer never reaches zero, as shown in the illustration below.

If a software failure prevents the application from resetting the timer, the timeout eventually expires because the hardware counter is independent of the software and thus continues to count down until it reaches zero. When the watchdog timer expires, the hardware triggers the recovery procedure, as shown in the illustration below.

 

Here is also is an example of how to use the watchdog VI to reboot the controller.

 

Reset cRIO using Watchdog Timer

https://decibel.ni.com/content/docs/DOC-7082

 

Regards,

Patricia B.

National Instruments
Applications Engineer
0 Kudos
Message 8 of 19
(5,830 Views)

Patricia,

 

I discussed this with my customer and he said it would not work for his application.  He said he could envision a situation where the RT system could lose communication with the UI (host) but still update the watchdog timer and he is not comfortable with the RT just randomly restarting.

 

Is there any other way to send a reset command other than the reset target.vi?

 

Thanks again!

Josh

0 Kudos
Message 9 of 19
(5,827 Views)

I think this may help: I received the attached zip file from Justin Parker at NI. It is Python code that remotely reboots a cRIO chassis, and can run on a Linux system. To use it, use the System Exec.vi, and wire into it the string "python reboot.py <ip address>", and also wire into it the path to the script. Unfortunately, we can't specify the *type* of reboot (normal or noapp, like what you can do with the Windows-only Reboot functions) but at least it does the normal reboot. Also, I wish I could do it in pure LabVIEW, but as I am not a Python expert, I can't do it myself.

 

Josh :Hopefully this will help. If you know Python, and can modify it to specify the reboot mode or can convert it to pure LabView, please post it.

 

NI: is there some reason why you folks won't let us users know what the communication protocol is? The Windows-only Reboot function clearly sends some kind of message out on the Ethernet, and we just want to know how to format it.

 

0 Kudos
Message 10 of 19
(5,811 Views)