Use the "Ramp Pattern.vi" (ramp by delta is what you are describing) to create an array of ascending points, then either invert and append the array, or use "Ramp Pattern.vi" to create a descending staircase. Merge the two array, then loop through the points. The one drawback to using the "ramp by delta" is that you get end points by default (ramp by samples has an option to omit the end point) so you get 2x the end point in your array. If you don't like that duplication, then just trim the array before merging.
The easiest way is to then execute the measurement with the Keithley 2400 is to use the List Sweep option. You just pre-load all the points into the SMU and it steps along without you needing to set the value and read the value every time.
Here's an example. I'm using the driver from - http://sine.ni.com/apps/utf8/niid_web_display.download_page?p_id_guid=25B255F3AA83660EE0440003BA7CCD...