FPGA Control on CompactRIO Sample Project Documentation

advertisement
FPGA Control on CompactRIO Sample Project Documentation
Publish Date: Apr 15, 2015
Overview
The FPGA Control on CompactRIO sample project implements deterministic, hardware-based control of a plant. The control
algorithm, which was written with the LabVIEW FPGA Module, runs on the FPGA inside the CompactRIO device. You send
commands and setpoint changes to the FPGA from the user interface, running on a desktop computer, by way of the real-time
controller in the device. This controller also monitors the status of the application, such as CPU load and memory usage.
Table of Contents
1.
2.
3.
4.
5.
6.
7.
8.
Developer Walkthrough
Features
Basis
System Requirements
Overview
Running this Sample Project
Modifying this Sample Project
Additional Resources
1. Developer Walkthrough
See a developer walkthrough (http://zone.ni.com/wv/app/doc/p/id/wv-3378) of the RIO sample projects.
2. Features
High-performance control—The control loop can run faster than 10 kHz and features four control algorithms operating in
parallel, all with minimal jitter.
Hardware-based control—Running the control algorithm and safety logic on the FPGA provides maximum reliability.
User interface with headless option—The user interface VI interacts with the CompactRIO device and displays data. This VI
can connect and disconnect from the device at any time without affecting the control loop.
Error handling—The application reports and logs all errors from the CompactRIO device, shutting down on any critical error.
3. Basis
This sample project is based on the Simple State Machine (http://www.ni.com/white-paper/14120/en) and Queued Message
Handler templates (http://www.ni.com/white-paper/14119/en). Refer to the Simple State Machine and Queued Message Handle
templates and their documentation, available from the Create Project dialog box, for information about how these templates w
4. System Requirements
Development System
LabVIEW Full or Professional Development System
LabVIEW FPGA Module
LabVIEW Real-Time Module
NI-RIO device driver software
NI CompactRIO Device in FPGA Interface Mode
This sample project is designed for an NI cRIO-9074 with the following components:
Software:
LabVIEW Real-Time
Network Streams
Network Variable Engine
NI System Configuration
NI-RIO
NI-Watchdog
I/O modules:
NI C Series analog input module. This sample project is designed to read four channels of analog input from an NI 9201
module in slot 1.
NI C Series analog output module. This sample project is designed to write four channels of analog output to an NI 9263
module in slot 2.
5. Overview
This sample project consists of nine parallel loops across three execution targets. The following loops run in parallel on the
desktop computer:
Handling events from the user interface (UI Main.vi - Event Handling Loop)—Produces messages to the UI Message Loop
based on front panel events.
Handling messages from the user interface and the real-time controller (UI Main.vi - UI Message Loop)—Receives and
responds to messages from the Event Handling Loop and, using network streams, the RT Message Handling Loop.
Displaying messages and data from the CompactRIO device (UI Main.vi - Monitoring Loop)—Displays the latest values of
information acquired from RT Loop - System Health and FPGA Monitoring.vi.
The following loops run in parallel on the real-time controller:
Handling commands from the user interface (RT Loop - UI Commands.vi)—Reads commands that are sent from UI Main.vi,
using network streams, and produces the appropriate messages.
Handling messages from all loops on the real-time controller (RT Main.vi - Message Handling Loop)—Consumes messages
1/4
www.ni.com
Handling messages from all loops on the real-time controller (RT Main.vi - Message Handling Loop)—Consumes messages
from all loops that run on the real-time controller.
Ensuring the FPGA can communicate with the real-time controller (RT Loop - Watchdog.vi)—Pets the watchdog, which tells
FPGA that the RT controller still is running, by asserting a register on the FPGA.
Monitoring diagnostic information from the real-time controller and data from the FPGA (RT Loop - System Health and FPGA
Monitoring.vi)—Monitors CPU and memory usage of the real-time controller and data from FPGA Main.vi. This information is
written to network-published shared variables and appears on the Data Monitoring and System Monitoring tabs of UI
Main.vi.
The following loops run in parallel on the FPGA:
Controlling the plant (FPGA Main.vi - Control Loop)—Reads from the NI 9201 inputs, applies a control algorithm to each
channel, and writes to the NI 9263 outputs. The control algorithm uses setpoint data and PID gains sent from the user
interface.
Ensuring the FPGA can communicate with the real-time controller (FPGA Main.vi - Watchdog Loop)—Checks the watchdog
register, set by RT Loop - Watchdog.vi, to ensure the real-time controller is communicating with the FPGA. If communication
cannot be established, the Watchdog Loop sets the FPGA to a safe state and reboots the device.
General sequence of steps:
1. A user changes the value of a setpoint; for example, changing the Channel 0 Setpoint control from 0 to 3. This change cau
LabVIEW to register an event.
2. The Event structure in the User Interface Event Handling Loop triggers the appropriate message diagram, which produces th
Update Setpoints message to the message queue. The values of all four setpoint controls, including the changed value, are
enqueued as data along with the message.
3. The UI Message Handling Loop consumes the message and data, dequeuing it and executing the corresponding message
diagram.
4. The message diagram contains code that writes the Update Setpoints message and data to a network stream.
5. On the real-time controller, the UI Commands loop reads the message and the data from the network stream.
6. The UI Commands loop relays the same Update Setpoints message and data to the RT Message Handling Loop that is also
running on the real-time controller.
7. The RT Message Handling Loop consumes the message and data, dequeueing it and executing the corresponding messag
diagram.
8. The message diagram contains code that writes the data to the front panel of the FPGA VI, using the Read/Write Control
function.
9. On the FPGA, the Control Loop uses the data in its control algorithm.
6. Running this Sample Project
1. Adapt the sample project to your hardware.
2. In the Project Explorer window, run RT CompactRIO Target»RT Main.vi. This VI initializes the FPGA and runs FPGA
Main.vi.
3. Open and run My Computer»UI Main.vi.
4. Enter the IP address of the CompactRIO device in the Controller Address text box and click Connect.
5. After you are connected, click either Run Control (on the Control Settings page) or Run Manual (on the Manual Settings
page).
6. Adjust the channel values as necessary and view the outputs on the Data Monitoring page. Until you define a control
algorithm, all Output Values will read 0.
7. Click Exit to exit the application.
7. Modifying this Sample Project
Adapting the Sample Project to Your Hardware
The FPGA VI in this sample project is compiled for specific FPGA and I/O hardware. If you have a different FPGA or different C
Series modules, you must adapt this sample project to your hardware. The following steps refer to NI CompactRIO devices, bu
you also can adapt this sample project to an NI Single-Board RIO device.
1. Ensure all devices are configured and connected to the same network as the development computer.
2. In the Project Explorer window, add or discover your RT CompactRIO target to the to the top-level project item.
3. Add or discover your CompactRIO chassis to the RT Compact RIO target you added in the previous step. Ensure the chass
set to LabVIEW FPGA Interface mode.
4. Add or discover your FPGA target to the CompactRIO chassis you added in the previous step. When prompted to deploy
settings, click Deploy Later.
5. Add or discover your C Series input and output modules to the FPGA target you added in the previous step.
6. Drag the following project items from the default RT CompactRIO target to the one you added in step 2:
Error Handlers folder
Globals folder
Support VIs folder
RT Loops folder
Type Definitions folder
Shared Variables.lvlib
RT Main.vi
7. Drag the following project items from the default FPGA target to the one you added in step 4:
Support VIs folder
Type Definitions folder
FPGA Main.vi
Variable References.ctl
8. Delete the default RT CompactRIO Target project item that no longer has any VIs associated with it.
9. Re-establish the link between RT Main.vi and the bitfile:
1. Open Initialize and Run FPGA VI.vi, located in the Support VIs folder on the RT CompactRIO Target.
2/4
www.ni.com
9.
1. Open Initialize and Run FPGA VI.vi, located in the Support VIs folder on the RT CompactRIO Target.
2. Drag FPGA Main.vi from the Project Explorer window to the Open FPGA VI Reference VI function.
10. Open FPGA Main.vi and ensure the FPGA I/O Nodes use the input and output channels you want. For example, you may w
an FPGA I/O Node to read from Mod2/AI5 instead of Mod1/AI2. The actual channels you read from and write to depend on
your application.
By default, the FPGA I/O Nodes in this VI read from Mod1/AI0–3 and write to Mod2/AO0–3.
11. To minimize time spent compiling, make necessary changes, such as defining a control algorithm and defining a safe state,
now. You can compile and run the FPGA before making these changes; however, you will have to compile the FPGA VI aga
afterwards.
Defining a Control Algorithm
Locate the Control (PID) subdiagram of the Case Structure in FPGA Main.vi and modify this subdiagram to apply a control
algorithm. This sample project is designed to implement a PID algorithm. By default, this algorithm returns a constant value of 0
all output channels. You can perform a different algorithm on each individual channel
Defining Safe Values for Hardware Connected to the C Series Modules
Modify the Safe State, Default subdiagram of the Case structure in FPGA Main.vi to write safe values to the output channels. T
values you write here should be ones that you know the connected hardware can safely handle. By default, this subdiagram wr
a value of 0 to all output channels.
This subdiagram executes in the following situations:
When FPGA Main.vi first runs
The watchdog algorithm times out
An error occurs while reading from or writing to an FPGA I/O channel
A "Critical" or "Non-Critical" error occurs on the desktop computer or real-time controller
You click the Switch Target to Safe State, Stop Control, Stop Manual, or Exit button in UI Main.vi
Configuring the Application
In the Project Explorer window, open My Computer»Globals»Global - Configuration Options.vi. Use this VI to configure th
following settings:
If you are programming or testing the application, leave Debugging as TRUE. If you are building an application for deploym
set Debugging to FALSE.
To change how the often the control algorithm executes, change the Control Period (ticks). The default is 40000 ticks of th
FPGA clock.
To change the time period during which both endpoints of a network stream must be established, change the Network Stre
Connect Timeout (ms). The default is 5000 ms.
To change how often the real-time controller polls the user interface for commands, change the Network Stream Polling
Timeout (ms). The default is 500 ms.
To change how often the real-time controller pets the watchdog, change the Watchdog Pet Rate (ms).The default is 100 m
To change how long the FPGA has to respond to a watchdog pet, change the Timeout Period (ticks). The default is 40000
ticks of the FPGA clock.
To change how often the user interface updates with monitoring and health information from the CompactRIO device, chang
the Monitoring Loop Rate (ms). The default is 200 ms.
To change the time period during which identical errors are considered duplicates, change the Error Log Duplicate Interva
(ms). This control defines the interval of time during which only the first in a series of identical errors will be logged. For
example, if an error occurs after 2000 ms have elapsed and occurs again after 5000 ms have elapsed, and Error Log
Duplicate Interval (ms) is 6000 ms, the second occurrence is considered a duplicate and not logged. Only 3000 ms have
elapsed, not the 6000 ms required to treat the second error as unique.
The default is 5000 ms.
To change the names of the network streams, modify the UI Stream Name or RT Stream Name controls. These names affe
the endpoint URLs but otherwise have no impact on the application.
To change the location of the error log file, set the RT Error Log control. The default is c:\logs\logs.txt.
To change the maximum size of the error log, change the Error Log Max Size (bytes) control. The default is 100000 bytes.
8. Additional Resources
LabVIEW FPGA Control Sample Project Detailed Documentation (https://decibel.ni.com/content/docs/DOC-23262)
Copyright
© 2012 National Instruments. All rights reserved.
For copyright notices, conditions, and disclaimers, including information regarding certain third-party components used in
LabVIEW, refer to the Copyright topic of the LabVIEW Help.
Trademarks
LabVIEW, National Instruments, NI, ni.com, LabVIEW, the National Instruments corporate logo, and the Eagle logo are tradema
of National Instruments Corporation. Refer to the Trademark Information at ni.com/trademarks (http://www.ni.com/trademarks)
other National Instruments trademarks.
Patents
For patents covering the National Instruments products/technology, refer to the appropriate location: Help»Patents in your
software, the patents.txt file on your media, or the National Instruments Patent Notice at ni.com/patents (http://www.ni.com/pate
).
3/4
www.ni.com
PRODUCT
SUPPORT
COMPANY
Order status and history (http://www.ni.com/status/) Submit a service request (
https://sine.ni.com/srm/app/myServiceRequests)
Order by part number (
http://sine.ni.com/apps/utf8/nios.store?action=purchase_form
Manuals (http://www.ni.com/manuals/)
)
Drivers (http://www.ni.com/downloads/drivers/)
Activate a product (
http://sine.ni.com/myproducts/app/main.xhtml?lang=en
Alliance Partners (http://www.ni.com/alliance/)
)
About National Instruments (
http://www.ni.com/company/)
Events (http://www.ni.com/events/)
Careers (http://www.ni.com/careers/)
Order and payment information (
http://www.ni.com/how-to-buy/)
MISSION
NI equips engineers and scientists with systems
that accelerate productivity, innovation, and
discovery.
(http://twitter.com/niglobal)
(
http://www.facebook.com/NationalInstruments)
(
http://www.linkedin.com/company/3433?trk=tyah)
(http://www.ni.com/rss/)
(
http://www.youtube.com/nationalinstruments)
Contact Us (http://www.ni.com/contact-us/)
(http://privacy.truste.com/privacy-seal/National-Instruments-Corporation/validation?rid=bc6daa8f-7051-4eea-b7b5-fb24dcd96d95)
Legal (http://www.ni.com/legal/) | © National Instruments. All rights reserved. | Site map (
http://www.ni.com/help/map.htm)
4/4
www.ni.com
Download