[en] English: The European Organization for Nuclear Research (CERN, Conseil Européen pour la Recherche Nucléaire in French), located in Geneva, Switzerland, hosts the largest particle accelerator complex in the world, which aims to push the boundaries of human knowledge on particle physics. The main acceleration technologies at CERN rely on radio-frequency (RF) cavities and superconducting electromagnets. Usually, these systems need to be fed from the grid using high-efficiency and high-precision switch-mode power electronic converters. This Master's Thesis has been conducted to complete the Master's studies in Advanced Electronic Systems at the Univesity of the Basque Country (EHU/UPV, Universidad del País Vasco in Spanish). It has been carried out during a short-term internship at CERN's System Department-Electric Power Converters-Low Power Converters (SY-EPC-LPC) group. This group is in charge of designing and developing low-voltage and high-current modular and compact converters, ranging from some Watts up to several kW. The SY-EPC-LPC manages a variety of power converters within the particle accelerator complex. Most digitally controlled ones share the same control hardware architecture consisting of a proprietary crate, named RegFGC3, which includes several cards. Among these, a Digital Signal Processor (DSP) regulation board and a State Control card containing a Field Programmable Gate Array (FPGA) can be highlighted. This RegFGC3 crate is part of a larger control platform, named FGC3. Although the hardware is highly standardized, nowadays each power supply uses converter-specific software for control purposes, coded in C programming language. This makes all code redundant, difficult to test, debug and maintain. Considering the aforementioned drawbacks, this Master's Thesis aims to design, develop and test a common control library which supports the regulation software of several power converters, providing standardization, flexibility and time-saving. To do so, as a first step, three of the accelerators' power converters have been selected: CANCUN (Cern Acdc Narrow CoNverter), HL-LHC18kA (High Luminosity Large Hadron Collider 18 kA) and RF3kA (Radio-Frequency 3 kA). This selection is based on that these converters incorporate a variety of operating and control requirements, i.e., 1-quadrant, 2-quadrant and 4-quadrant architectures, module parallelization, various current and voltage regulation loops, and different Pulse Width Modulation (PWM) modes including, in some cases, interleaving. After analysing the three power converters and their control (hardware and software), synergies have been identified, which are still missing at the software level. To provide a unified control software library that takes into account such synergies, the refactorization of the code from C to C++ has been justified as the best option. This approach allows using a fast and efficient Object Oriented Programming (OOP) language, whose nature facilitates the expression of the existing relationship between converter-specific codes. The main idea behind the proposed and implemented library, named RegDspLib, is based on constructing a parent class that supports all the converters. It contains all the shared similarities between converters, which eases the development of additional and specialized code. This base class allows the inheritance of the configured common features with the possibility of using, modifying, or adding what is needed by each converter in their corresponding derived classes. C++ language mechanisms have been used to correlate different classes, modules, methods and attributes of the code, easing the development of the common library. This, would have been more laborious in the C language. A variety of modules have been configured to provide logic to the classes, in which a generic module for the configuration of a generic Finite State Machine (FSM) template, and a regulation module with configurable PWM inputs are included, among others. Besides this and to make this library design possible, multiple modifications have been proposed. These consist of the design of a standard FSM for all the converters, the modification of the FPGA which is controlling and monitoring the power converter's status, the interrupt handling on the DSP, and the building of new generic functions that work with multiple converters. The latter includes the slew rate method that controls the increasing/decreasing rate of the control algorithm's reference value and an automatic parameter calculation script for interleaving control mechanisms. Verification of the RegDspLib library has been carried out using the CANCUN power converter. First, the same regulation response has been proved when comparing the original and the proposed library-based codes. Regarding digital resources, experimental results show an increase of only 2.48 % in the execution time of the program for the worst-case scenario, and up to a 24.63 % time-saving for the best-case. This demonstrates that it has been possible to standardize, refactor the code to C++ and add more features to the software without generating overruns. All things considered, the C++ programming language is proven valid for real-time control in the DSP target of CERN's power converters. Besides, building a control library that groups all the common features has also provided a better-structured program, making it easier to understand and to work with. This work could lead to further improvements in the library and it can be completed in order to generalize it to control other power converters besides the presented ones. Moreover, although the RegDspLib library was originally aimed at the FGC3 control platform, this work provides the first steps for developing libraries taking into mind the future control hardware upgrade FGC4 (already in development). In such novel architecture, dedicated cards in the FGC3 (control, monitoring, regulation, measurement, etc.) will be replaced by one single main Central Processing Unit (CPU).

[fr] Français: Le Conseil Européen Pour la Recherche Nucléaire (CERN), situé à Genève, Suisse, abrite le plus grand complexe d'accélérateurs de particules au monde, qui vise à repousser les limites de la connaissance humaine en matière de physique des particules. Les principales technologies d'accélération du CERN reposent sur des cavités radiofréquences (RF) et les électro-aimants supraconducteurs. Ces systèmes doivent être alimentés par le réseau à l'aide de convertisseurs électroniques de puissance à découpage, à haut rendement et haute précision. Ce mémoire de maîtrise a été réalisé afin de compléter les études de maîtrise en systèmes électroniques avancés à L'Université du Pays Basque (EHU/UPV, Universidad del Pais Vasco en espagnol). Le projet a été réalisé à la suite d'un stage de courte durée dans le groupe System Department-Electric Power Converters-Low Power Converters (SY-EPC-LPC). Au sein du CERN, comme son nom l'indique, SY-EPC-LPC est chargé de concevoir et de développer des convertisseurs modulaires et compacts à basse tension et à courant élevé, d'une puissance allant de quelques Watts à plusieurs kW. Ce groupe gère une variété de convertisseurs de puissance au sein du complexe d'accélérateurs de particules. Ces convertisseurs partagent la même architecture matérielle de contrôle, qui consiste en un boîtier propriétaire, appelé RegFGC3, comprenant plusieurs cartes, dont une carte de régulation à processeur de signal numérique (DSP, Digital Signal Processor en anglais) et une carte de contrôle d'état contenant une réseau de portes programmables sur site (FPGA, Field Programmable Gate Array en anglais). Ce boîtier RegFGC3 fait partie d'une plateforme de contrôle plus large appelée FGC3, qui contrôle le convertisseur de puissance. Bien que le matériel soit fortement standardisé, aujourd'hui, chacun convertisseur utilise un logiciel spécifique au convertisseur à des fins de contrôle, écrite à l'origine dans le langage de programmation C. Cela rend tout le code redondant et difficile à tester, à déboguer et à entretenir. En tenant compte des inconvénients mentionnés, la thèse de maîtrise vise à concevoir, développer et tester une bibliothèque de contrôle commune qui prend en charge le logiciel de régulation de plusieurs convertisseurs de puissance, assurant ainsi la normalisation, la flexibilité et le gain de temps. Pour ce faire, dans un premier temps, trois des convertisseurs de puissance des accélérateurs ont été sélectionnés, à savoir CANCUN (Cern Acdc Narrow CoNverter), HL-LHC18kA (High Luminosity Large Hadron Collider 18~kA) et RF3kA (Radio-Frequency 3 kA), car ils intègrent des architectures à 1-quadrant, 2-quadrants et 4-quadrants, diverses boucles de régulation du courant et de la tension et différents modes de modulation de largeur d'impulsion (PWM, Pulse Width Modulation en anglais), incluant l'entrelacement. L'analyse des trois convertisseurs de puissance et de leur contrôle (matériel et logiciel) a permis d'identifier une synergie entre eux qui est absente au niveau du logiciel. Pour fournir une bibliothèque logicielle de contrôle unifiée qui prenne en compte ces synergies, la réécriture du code de C à C++ est justifiée comme étant la meilleure option. Cela permet d'utiliser un langage de programmation orienté objet (OOP, Object Oriented Programming en anglais) rapide et efficace, dont la nature facilite l'expression de la relation existante entre les codes spécifiques aux convertisseurs. L'idée principale de la bibliothèque proposée et mise en œuvre, nommée RegDspLib, est basée sur la construction d'une classe commune qui prend en charge tous les convertisseurs. Celle-ci contient toutes les similitudes partagées entre les convertisseurs, ce qui facilite le développement de codes supplémentaires et spécialisés en permettant l'héritage des caractéristiques communes configurées, avec la possibilité d'utiliser, de modifier ou d'ajouter ce qui est nécessaire à chaque convertisseur par le biais de classes dérivées. Les mécanismes du langage C++ ont été utilisés pour corréler les différentes classes, modules, méthodes et attributs du code, facilitant ainsi le développement d'une bibliothèque commune, ce qui aurait été plus laborieux en C. Tous les éléments configurés donnent une logique aux classes. Il s'agit, entre autres, un module générique pour la configuration de machines à états finis (FSM, Finite State Machine en anglais) et un module de régulation avec des entrées PWM configurables. En outre et afin de rendre possible la conception de cette bibliothèque, de multiples modifications ont été effectuées. Celles-ci comprennent la conception d'une FSM standard, la modification du FPGA qui contrôle et surveille l'état du convertisseur de puissance, la gestion des interruptions sur le DSP et la construction de nouvelles fonctions génériques qui fonctionnent avec plusieurs convertisseurs. Ces dernières comprennent la méthode de rampe qui contrôle l'augmentation/diminution de la valeur de référence de l'algorithme de contrôle et le calcul des paramètres du mécanisme de contrôle de l'entrelacement automatique. La vérification de la bibliothèque RegDspLib a été effectuée sur le convertisseur de puissance CANCUN. Tout d'abord, la même réponse de régulation à un échelon de courant a été obtenue en comparant les codes originaux et les codes proposés basés sur la bibliothèque. En ce qui concerne les ressources numériques, les résultats expérimentaux montrent une augmentation de 2,48 % du temps d'exécution dans le pire des cas et une diminution de 24,63 % dans le meilleur des cas. Cela démontre qu'il a été possible de normaliser, de réécrire le code en C++ et d'ajouter plus de fonctionnalités au logiciel sans dépassement. Tout bien considéré, le langage de programmation C++ s'est avéré valable pour le contrôle en temps réel dans la cible DSP des convertisseurs de puissance du CERN. La création d'une bibliothèque de contrôle regroupant toutes les fonctionnalités communes a également permis de mieux structurer le programme, ce qui le rend plus facile à comprendre et à utiliser. Ce travail pourrait conduire à d'autres améliorations de la bibliothèque ainsi qu'à son utilisation dans d'autres convertisseurs de puissance que ceux présentés. En outre, bien que la bibliothèque RegDspLib ait été initialement destinée à la plate-forme de contrôle FGC3, ce projet fournit les premières étapes du développement de bibliothèques pour la future mise à niveau du FGC4 (déjà en cours de développement ), où les cartes dédiées du FGC3 (contrôle, surveillance, régulation, mesure, etc.) seront remplacées par une seule unité centrale de traitement (CPU, Central Processing Unit en anglais).