El PWM puede generarse de dos formas: por hardware o por software.
Por hardware es mucho más exacto y creo que es el preferible (es el que he usado en este proyecto), pero para eso tendrás que estudiarte el manual de programación del PLC
El otro modo es por software, no es tan exacto/estable ya que puede verse influido por otras tareas (interrupciones) del microprocesador. Este modo consiste en llevar una señal digital a estado alto, por ejemplo, mantenerla ahí un cierto tiempo y luego llevarla a estado bajo de nuevo, y repetir este ciclo las veces que sea necesario. Cada ciclo generará un pulso hacia la breakout y de esta el avance de un paso al motor.
Pero la cosa es más complicada, ya que , como he comentado en otros post de este hilo, los pulsos no pueden generarse así sin más, deben hacerse con frecuencias crecientes hasta alcanzar la velocidad deseada y luego con frecuencias decrecientes hasta la parada del motor. Si no lo haces así el motor no funcionará, o por lo menos lo hará muy mal.