Start by dividing your problem in half.
Is the PLC telling the motor to run? (Is the output on?)
If yes, then the problem is within PLC or the code.
If no, then the problem is within the hardwire or motor area.
Within the PLC:
Is the output shorted?
Is the output forced?
Is the motor getting a start signal from elsewhere in the code?
Does the push button return an input when pressed?
Have you made a mistake in the code?
Does push button "Bounce" cause the motor to stop and restart a random number of times, too quick for you to notice?
Outside:
Have tou got an interposing relay, and does it release when the output switches off?
Does your output card have a leakage current higher than what will allow your relay/contactor to release?
Is your contactor welded in?
Do you have a hard wired override circuit, and is it activated?
Is the motor being driven by the load?