You should be able to do this with a continuous counter pulse generation task using DAQmx on a cDAQ. cRIO shouldn't be necessary.
You'd use one of the chassis counters and route its output to a DO pin. Note that you may need to write both freq *and* duty cycle together to make the duty cycle change "take hold." See this thread for more info.