CodesysRaspberry

Buenas tardes, aprovecho para presentarme, mi nombre es Juan, y aunque es la primera vez que pregunto llevo bastante tiempo siguiendo algunos temas de este foro.
Debido a mi trabajo tengo un poco de experiencia en Codesys, aunque he de reconocer que tan solo hemos realizado con este software unos pocos proyectos.
Mi afán por aprender y trastear me llevó a instalar en casa el Codesys para realizar algunos proyectos a nivel personal utilizando una Raspberry Pi3 como PLC.
Llevo varias semanas intentando recopilar información sobre los temas que mencionaré después de mi presentación y no encuentro realmente lo que busco.
Desconozco por completo la mejor manera de controlar un motor de pasos utilizando una Raspberry, les cuento mis pruebas y luego hablamos del hardware que pueda necesitar.
He realizado un simple programa para probar a mover un motor paso a paso, en este caso un Nema17 conectado a su correspondiente driver. El driver está configurado en 200 pulsos por revolución, ya que en este caso busco mayor velocidad. Antes de crear confusión, soy consciente de que no es la manera correcta de realizar este proceso, pero por el momento, y debido a que no tengo ninguna placa específica, he utilizado la conmutación de una de las salidas GPIO para intentar simular un tren de pulsos. Tan simple como cambiar el estado de la salida en cada ciclo de San. Configurando la tarea como cíclica y variando este tiempo, he conseguido 300 rpm. He realizado diversas pruebas variando el tiempo de ejecución desde 5ms a 0'5ms y con ello, consigo una velocidad, que a priori, con la ayuda de un encoder y un arduino mega parecen constantes. Por debajo de 0'5ms por ciclo el motor no arranca. Esto significa que mi motor no permite un tiempo entre pulsos inferior a 1ms. Cabe destacar que no puedo aplicar ningún tipo de rampa en estas pruebas.
Sé que existen muchos protocolos de comunicación que permiten conectar a la Raspberry un módulo específico para el control de este tipo de motores.
Mis dudas empiezan en este momento, y espero que me las puedan resolver.
1º PWM. Utilizando PWM entiendo que podría controlar la velocidad del tren de pulsos. Pero, no sé si podría realizar un control de posición, o sea, necesito saber si esta misma placa me permite moverme a una velocidad determinada hasta una posición también determinada.
2º Tipo de "bus de campo" utilizar. Tengo dudas de cuál sería el más óptimo para realizar movimientos con estos motores nema17. He estado leyendo que protocolos como Modbus o I2C tienen un tiempo de respuesta demasiado lenta para realizar un control de ejes en tiempo real.
3ºSofmotion. Tengo entendido que con la Raspberry Pi se pueden utilizar gratuitamente las librerías de softmotion. No sé si esto es verdad
4º Placa específica a adquirir. Una vez determinado si me sirve o no una placa PWM o debo comprar otro tipo de placa, y conociendo el tipo de protocolo a utilizar, me gustaría saber cuál sería la mejor opción que me podéis recomendar para realizar un control de ejes con este tipo de motores domésticos.
5º Encoder. Estoy seguro que al igual que existe alguna shield específica para controlar un motor paso a paso, también existirá la posibilidad de adquirir alguna placa específica para la conexión de un encoder a una Raspberry Pi. No sé si alguna entrada se puede configurar como entrada de interrupción o de contaje rápido. Si es alguna placa específica, ¿cómo puedo leer el dato, cómo puedo saber el PDO a utilizar? Me gustaría realizar un lazo cerrado con el motor de pasos y un encoder adicional.
6º Otra duda que me surge, es si existe la posibilidad de utilizar periferia externa utilizando un bus CanOpen. Si es así, me gustaría saber la manera de conectar una cabecera Wago 750-337 a una Raspberry pi con Codesys. Y a su vez, ya que no la encuentro en ningún sitio, agradecería me puedan proporcionar el administrador de paquetes para este dispositivo.
Muchas gracias de antemano, y espero me puedan ayudar.

Posted by juancodesys 2020-05-08

Log in to post a comment.