version control - usados - Control de versiones de PLC
¿qué es un sistema control de versiones centralizado? (9)
Acabo de ver esta pregunta desde un enlace en el intercambio de pila: ¿Existen soluciones realistas / útiles para el control de código fuente para programas de lógica de escalera ? En lugar de tener un solo enlace de respuesta, duplicaré mi respuesta aquí:
En realidad, hay una solución enlatada, desde GE-IP de todos los lugares. Echa un vistazo a Proficy Change Management. Este producto realiza el control de versiones desde el punto de vista de los sistemas de control de PLC, en lugar de un control de versión puro de los puntos de vista de los archivos; funciona como una capa situada sobre un VCS (la parte aterradora es que originalmente este VCS era Visual SourceSafe) y maneja la gestión de derechos, informes y checkout / checkin.
Si bien el producto es de GE-IP, está diseñado para admitir una variedad de sistemas PLC y HMI listos para usar.
Revelación completa, utilicé para el trabajo de una empresa que vendía e instalaba PCM (pero eso fue hace 7 años). Entonces, si me preguntas cómo era antes, es probable que te diga dónde salió todo mal.
Necesito encontrar un proceso CM para el código PLC.
Actualmente, el sistema se desarrolla utilizando RSLogix 5000. El producto de compilación es un archivo monolítico que se puede cargar en un PLC para ejecutar y editar directamente en el entorno de desarrollo. Con múltiples desarrolladores, esto se ha convertido en un problema. Están pisando los cambios de cada uno.
Como analogía, es como si, al realizar el desarrollo de Java, la única manera de editar y guardar la fuente sería cargar un archivo * .jar en su IDE, hacer el cambio y luego guardarlo de nuevo en el archivo jar. Esto es menos que ideal.
¿Cómo puedo coordinar los cambios entre varios desarrolladores que trabajan con PLC?
Acerca de RSLogix5000 específicamente, he visto a los desarrolladores usar un PLC emulado y hacer sus cambios en línea. El producto final, una vez desarrollado, se pone junto con todos los comentarios (ya que no están contenidos en el PLC) y luego se encarga. Hay problemas con los cambios que no se pueden hacer en línea, como los AOI. Existen herramientas para evitar que dos personas editen la misma lógica en línea a la vez y se apropien de las secciones. Las copias de seguridad se pueden realizar en forma de cargas, pero no hay forma de hacer un seguimiento de los cambios.
Es un problema desordenado, aún más complicado para cuando está manteniendo un sistema como quiere un .ACD con el que puede conectarse, ya que a menos que esté haciendo una diferencia con la herramienta de comparación RSLogix, verá un código de máquina ilegible como "+ | Éû³´¬ÙÆW × æ ™ µ ‚> Ù,"
El control de revisión más común que he visto (lamentablemente) es simplemente guardar el archivo más reciente, luego tomar una copia y agregar la fecha actual al nombre del archivo, como se describe en la publicación de control.com recomendada.
Esta es una muy buena pregunta y realmente depende de lo que quieras que haga. Si solo está usando el equipo de Rockwell, podría ser útil ver su solución, creo que se llama FactoryTalk AssetCentre. Actualmente estoy estudiando el uso de Bazar de Canonical. Una cosa que VonC señaló es que una pieza de software que puede interoger el PLC es una ventaja definida, no es una necesidad en mi opinión, pero seguro que ayuda.
¿Estoy leyendo su pregunta correctamente y tiene varios desarrolladores trabajando en el mismo código de PLC al mismo tiempo? Es una idea aterradora, pero sé que a veces es necesario que ocurra, los PLC de Siemens son un poco más fáciles de programar con múltiples desarrolladores, pero asignaría una persona para consolidar y probar todos los cambios antes de comprometerme con el PLC. Cualquier sistema CVS le permitirá crear sucursales para cada desarrollador, pero cómo podría lograr que consoliden sus cambios es la pregunta del millón.
Bart.
Necesita un sistema de control de versiones especializado para PLC como VersionDog .
Desde el fabricante:
"Soporte especial con Smart Compares para SIMATIC S5, SIMATIC S7, SIMATIC PCS 7, WinCC, WinCC flexible, InTouch, CoDeSys, TwinCAT, Phoenix PC WORX, RSLogix, Schneider Modsoft, Schneider Concept, Schneider Unity, SINUMERIK 840D, Bosch IndraWorks y más También los programas de robot de ABB y Kuka y formatos de datos relacionados con la oficina como Microsoft Word, Microsoft Excel y Adobe PDF son perfectamente compatibles con versiondog.
Actualización: Aquí hay una captura de pantalla que muestra la comparación de la versión de escalera . Supongo que eso es lo que le interesa a la mayoría de la gente de PLC. También lo usamos para programar informes de correo electrónico si las versiones de las aplicaciones en línea y fuera de línea de PLC coinciden, como una alarma de que algo se cambió en el PLC pero no se colocó en el servidor de control de versiones.
Puedes usar Git para colaborar y asegurarte de que todos estén usando el mismo archivo en lugar de saturar un disco común con varios archivos.
Hice este hilo sobre cómo lograr que git se integre con los PLC. esta justo aqui
Aunque los archivos .acd son binarios, ya que tenemos RSLogixCompare disponible como herramienta, podemos usarlo para encontrar las diferencias de nuestros archivos ACD. Además, la gui de Git Ext ayuda mucho con la simplificación para los usuarios que no lo han visto tanto.
Cubre exactamente cómo integrarse como RSLogixCompare con las extensiones de git. Espero que esto ayude a algunas personas!
RSLogix5000 siempre ha prohibido que múltiples usuarios abran y editen en el mismo archivo .ACD simultáneamente. Sin embargo, si varios usuarios tienen archivos .ACD idénticos, ábralos y todos hagan conexiones al mismo controlador de destino, cada uno puede editar en el controlador simultáneamente, pero solo si están trabajando en rutinas diferentes. Las ediciones de otros aparecen automáticamente, si tuvieran que mirar otra rutina de programadores.
Tenga en cuenta que el trabajo en línea como este se realiza generalmente con el PLC en funcionamiento, incluso a veces con el sistema de destino (algún tipo de máquina) en funcionamiento. Este tipo de arreglo con el fin de completar el trabajo más rápido, o en algunos casos porque el sistema es enorme. Nadie se desarrolla así, ya que es realmente una herramienta de depuración y no es práctico para cambios significativos.
Si un programador termina y el otro no se hace, el trabajo no terminado del otro se guardará en el .ACD del primer programador cuando se guarde. Quien salva al último tendrá el trabajo de todos.
Como otros han mencionado en este hilo, el uso de la fecha del archivo es bastante razonable. Algunas compañías usan una variable de control de versión que generalmente se muestra en una HMI conectada. Otras compañías utilizan un documento separado que documenta quién y qué cambia. A veces, las notas de versión se colocan en un largo comentario de peldaño en la rutina principal.
Mi empresa utiliza un registro de cambios por separado y se mantienen copias de archivo con fecha. Los programadores múltiples solo se utilizan en los casos más extremos. Siempre se designa a alguien para mantener la integridad del archivo fuera de línea, generalmente la persona que trabajará más tiempo o el gerente del proyecto.
Es importante tener en cuenta que los comentarios de renglón no se transfieren de un usuario a otro antes de RSLogix5000 v21 porque las versiones anteriores no almacenaban comentarios en el controlador.
Dicho todo esto, es posible que esté intentando administrar el desarrollo fuera de línea. No he visto ningún método sofisticado para esto. Por lo general, los programadores escriben las rutinas necesarias por separado, y un gerente de proyecto las ensamblará en un solo proyecto. El enfoque más limpio que he visto es donde un administrador de proyectos creará una arquitectura con funcionalidad global y asignará trabajo de rutina a otros, dándoles una copia de .ACD para trabajar. Devuelven el .ACD con los cambios, y el administrador del proyecto copia y pega sus rutinas en el proyecto "maestro".
Si estamos hablando de un gran archivo binario, entonces un VCS (centralizado o descentralizado) no es la mejor herramienta para el trabajo.
Una referencia externa (un disco compartido, por ejemplo) donde un lote copiará y etiquetará el estado actual de PCL es mejor.
Consulte " Historial de seguimiento del software "
Para evitar discontinuidades en el registro histórico de revisiones, se deben almacenar las versiones anteriores de los programas.
"Sin embargo, vamos un paso más allá. Usando nuestro MDT AutoSave , salimos e interrogamos al equipo. Durante la noche o en la frecuencia que se especifique, el software lee los programas en los PLC y luego compara esa información con el último programa conocido. El software de control de versiones copiará el nuevo programa, lo almacenará y [luego] lo comparará con el último.Lanzar el control de versiones es bastante simple. Se requiere la instalación del software y luego la configuración del hardware. "Necesitaría un servidor y un par de semanas de ingeniería y está listo", dice Perysyn. Sin embargo, su compañía utiliza un "enfoque de retractilado" que involucra la instalación del software y luego la personalización de los usuarios completando los espacios en blanco.
Dicho esto, cuando tiene múltiples cambios de múltiples desarrolladores, necesita un entorno de integración donde se pueda realizar y validar una primera entrega, antes de enviarla al servidor real.
Véase también este post .
Una cosa simple sería hacer una diferencia de texto en los archivos .l5k para que pueda ver fácilmente si un desarrollador ha estado jugando con una parte del archivo que está fuera de su alcance.
Uso Unity Pro, por lo que es posible que esto no se aplique a otras marcas.
Unity puede exportar un archivo de "archivo" que es XML que describe el programa de PLC y la configuración de IO en su totalidad. Después de encargar los cambios, creo una exportación y la registro en mi repositorio local de Git. Esto me da un historial anotado de cambios, pero no una comparación visual. Siempre puedo usar UnityDiff para la comparación.
Echa un vistazo a http://www.mdtsoft.com/ también