It's hard to debug this without the code, but first, as a general suggestion, try rewriting it using ParametricNDSolve.
http://reference.wolfram.com/language/ref/ParametricNDSolve.html
There are some examples at the bottom of that page on optimizing parameter values. They might be helpful if you haven't already seen them.
So, modeldata[...] appears to be an Interpolating function and it is complaining that it is being given a t value out of its range. What are the t values in data? That is, what are the values of data[[All,1]]? What happens when you run modeldata[...] on every one of them with some reasonable value for the parameters? I get the feeling that one of them is outside the range of modeldata[...]. I don't know if the range of modeldata[...] depends on it's parameters or not.