To calculate actuator travel time, you need to know the total volume of the cylinder. Remember that the cylinder is open on the "power stroke" and has a rod in it on the return stroke. The math is also directly tied to how strong the cylinder is as well. Personally, I'd suggest creating a spreadsheet so you can just drop in numbers to try out different strokes and bores.
Let's say you have a 1" cylinder (bore) with a 12" stroke and a 1/4" rod. First you need to know the surface area of the piston.
Surface Area of a circle = pi times the radius squared
The surface area on the power stroke would be ~.79 sqin
and since you know the rod is .25 diameter, you take it's surface area and subtract it from .79 to get the return stroke surface area of ~.74 sqin
Now that you have the two surface areas, you need to determine the volume of the cylinder for both strokes. To do this, you just multiple area by height.
power stroke volume = 9.42 inches cubed
return stroke volume = 8.84 inches cubed
Now that you know the volume for each stroke you need to determine how long it will take to fill. Sadly, I don't know how to use the CV rating to calculate total air flow over time. I've tried using a variety of calculators and I'm clearly not getting the whole pressure drop thing.
With that said, if you know the flow rate in something like GPM, it's very easy to turn the volume into speed. You have the cylinder volume in cubic inches and turning GPM into cubic inches is just figuring out the number of cubic inches in a gallon (231) and applying time. It looks like this:
(cylinder volume / (flow rate 231)) 60
power stroke travel time @ 3gpm = .82 seconds
return stroke travel time @ 3gpm = .76 seconds
If you time the extension of the cylinder accurately with your solenoids, you can easily back into a GPM based on the tube diameter and length. This would be useful to determine a general GPM for the rest of the system to estimate speeds.
More useful than this though is the POWER of the stroke, and you have almost everything needed to figure that out already. Maximum working pressure on a FRC robot is 60 PSI. That means to calculate power of cylinder, you use piston area * psi. So, that 1" bore piston has power like this:
power stroke strength = ~47.12 lbs
return stroke strength = ~44.18 lbs
The next useful thing to know is how much air you will use to power that cylinder. Let's say you are using a 41 cubic inch tank at 120 psi. Since your working PSI is 60, you can basically take that 120 PSI tank and double it's size since 120 PSI is 2 x 60. So you can treat the tank like it's 82 cubic inches at 60 PSI. This math below actually works surprisingly well to give you a good ballpark to start from:
(volume out 9.42 + volume in 8.84) / 2 = 9.13
(tank pressure 120 / working pressure 60) * tank size 41 = 82
Strokes until empty = 82 / 9.13 = 8.98
This totally ignores the pressure loss with each stroke. Oddly enough though, one of our engineer mentors said that in practice, the complex math to calculate maximum number of strokes taking into account pressure loss is surprisingly close to this ballpark when all is said and done. The critical thing to remember is that your piston will be weaker than the math says once your tanks pass below the 60 PSI number. This math told us our robot design needed 8 tanks to do what we wanted and after physically testing, we found out it was spot on.
Anyways, I hope this helps you a bit.