If you make both of the "Train" roles mandatory then there is an implied equality constraint.
This would say
Train arrives at Station at Time.
For each Train and Station,
that Train arrives at that Station at at most one Time.
This association with Train, Station provides the preferred identification scheme for TrainArrivesAtStationAtTime.
Each Train arrives at some Station at some Time.
In other words if a train arrives then it must depart.
Of course a train must depart from its "start station" and so there will be no arrival at that station.
Similarly, the train will arrive at its "last station" and so there will be no departure from the last station.
One way to handle this is to define StartStation, EndStation and WaypointStation as subtypes of Station.
Then for each WaypointStation you could just put a mandatory constraint on the "Train" role in the fact Train(id) arrives at WaypointStation(.name) at Time()
Subset, Equality and Exclusion constraints are explained in detail on pages 224- 238 of the BBB.
I don't see the need to use more than one Time() object. (Even for Aircraft flights Bus times, Ferry times and other time related events.)
One of ORM's strengths is that you only have to define each Object once.
Of course in a"muliti-mode-transport" model you may have to add features that cater for different time zones...