I don't think you're able to do this directly with the From Workspace block. All these blocks output data by looking at the current simulation time.
What I would do in this situation is use a MATLAB Function block with a persistent variable that keeps track of the time it should be reading. This way, you're not using global time, and you're using the times the block executes instead.
For example, take the simple case that every time the block runs you just read the next element of an array:
function out = enabledRead
idx = 1;
out = myDataVector(idx);
idx = idx + 1;
For something more complicated, you could instead increment a time variable instead of an index to a vector. Then, you can use functions like interp1 to look up and interpolate the data vector based on the time vector.
Easiest way to do this would be to make the block discrete, if possible. Your counter's increment would be deterministic and you wouldn't have any surprises from the block running more/less often depending on the simulation step-size.