78 The International Arab Journal of Information Technology, Vol. 8, No. 2, April 20 A Survey of High-Level Programming Languages in Control Systems Fernano Valles-Barajas Faculty of Engineering, Universia Regiomontana, México Abstract: This paper explains how avance programming language concepts can be use to increase the reaability an maintainability of control process software. The programming language concepts presente in this paper are: function pointers, variable argument functions an three concepts relate to object-oriente programming: polymorphism, relationship of composition between classes an class methos. The avantage of every one of these concepts is emonstrate by using control applications. The paper also emonstrates that intelligent control algorithms can be improve by using these concepts. C an C++ programming languages are use to implement the coe of the control systems. Keywors: Kalman filter, intelligent control, aaptive control systems, polymorphism, function pointers, an object-oriente programming. Receive March 6, 2009; accepte November 5, 2009. Introuction Toay, many systems are controlle by a control system. Examples of control applications are: robotics, manufacturing processes, military applications an meical evices among others. To control a process, control engineers must obtain a moel of the process to be controlle [3]. With this moel a control law is then esigne in such a way that the entire control system fulfils the requirements of the system users. This control law is later implemente using a programming language. To get robust software the programming language must be carefully chosen by control engineers. If this aspect is not consiere when the control system is constructe, the software will be ifficult to maintain an unerstan. It is important for control engineers to have some nowlege of the avantages of the ifferent programming paraigms. This will help them in the choosing of the right language. Motivation of the paper: there have been many control applications reporte in control engineering literature that show a poor use of the concepts of programming languages. Some of the applications using some of the concepts presente in this paper o not formally explain them. The main goal of this paper is to explain these concepts to the control engineering community so they are able to obtain better software. Relate wors: in [] graphical variant moelling is introuce. This moelling technique is a in of object-oriente moelling where the classes are graphically specifie an the inheritance between classes is efine by stating the ifferences between the erive classes an the base classes in the subclasses. This novel moelling technique is applie to buil an experimental tool that moels systems. The tool is base on Simulin, the graphical moeller of MATLAB. The authors present an interesting example which shows the benefits of the approach; an abstract inverte penulum is efine an then two inverte penulums (one linear an one non-linear) are efine. With this example the authors emonstrate that the common behaviour of the inverte penulum oes not have to be repeate in the more specific cases an only the ifferences must be specifie. Moelica is a moelling language esigne to specify mathematical moels of complex systems [6]. Every moel is represente as a class. The variables efine insie the classes represent ata relate to the system moel. In object-oriente languages the behaviour is usually specifie using methos (as in Java or member functions such as in C++); in Moelica the behaviour is efine using equations. Once the system is specifie using variables an equations that relate these variables, the user can perform simulations to have a better unerstaning of the system being moelle. In [9] an exhaustive stuy is foun on the impact of object-oriente programming in Computer-Aie Control System Design (CACSD). The benefits of object-oriente programming (encapsulation, reuse of ata an classes among others) in CACSD are emonstrate by the use of examples. Papers [4, 5] review programming languages in robotics. The author reviews general-purpose languages, lie Java. Specific-purpose languages such as the Forth language are also stuie. The avantages an isavantages of these approaches are analyze in the paper.
A Survey of High-Level Programming Languages in Control Systems 79 Outline of the paper: in this section the motivation has been inicate. The following section provies an explanation of the programming concepts that will be use to implement control systems. Section 3 applies these concepts to control systems. The last section contains concluing remars. 2. Concepts of Programming Languages 2.. Function Pointers A function pointer is type of pointer that exists in programming languages that are base on the C programming language [0]. Even though pointers to functions are one of the most ifficult uses of pointers (this coul be the reason why they are frequently unerutilize), they provie an effective form of subprogram generality. By using function pointers, a function to be execute can be selecte on run-time from a set of functions, thus ecreasing software complexity. The usefulness of functions pointers is illustrate in Figure. #inclue <math.h> ouble get_integral(ouble a, ouble b, ouble (*fp)(ouble)){ ouble sum 0.0, x; int n; for(n 0; n < 00; n++){ x a + n*(b-a)/00.0; sum + fp(x) * (b-a)/0.0; return sum; int main(int argc, char **argv){ ouble (*fp)(ouble); ouble a, b, result; fp &cos; // get the values of a an b from the user result get_integral(a, b, fp); return 0; Figure. Getting the efine integral using function pointers. The first line of the main function (ouble (*fp)(ouble);) eclares a function pointer calle fp. The thir line of the main function (fp &cos;) initializes the pointer fp. To achieve this tas the aress of some function using the reference operator & must be given; in this case the aress of the cosine function is given. The get_integral function, which implements the equation a f ( x) x, is calle in the main function by b passing the aress of the function pointer fp. Any function with one ouble parameter an returning a ouble type can be passe as the thir argument of the function get_integral. This function can be mae in a moule an istribute to potential users who o not have to change any line of coe of this function. This means that by using function pointers the level of reusability can be increase. 2.2. Variable Argument Functions Variable argument list functions (also nown as variaic functions) are functions that can accept a variable number of arguments. Even the ata type of the arguments is unnown. This type of function is useful when the number of parameters to be passe is unnown. Figure 2 shows an example of variaic functions. To eclare that a function has a variable list of parameters, fixe parameters are written as usual an then three ots are written to inicate the possibility of variable parameters. #inclue <stargs.h> voi variaic_function(int a, int b,...){ va_list l_arg; //b is the last fixe parameter va_start(l_arg, b); ouble va_arg(l_arg, ouble); int i va_arg(l_arg, int); // processing of an i va_en(l_arg); Figure 2. Example of a variaic function. To access the list of variable parameters, variable argument macros efine in the starg.h library are use. These macros are: va_arg, va_start an va_en. The macro va_start initializes the list pointer l_arg to the beginning of the list of variable arguments. Then the macro va_arg(l_arg, ata_type) is calle every time one element of the variable argument list nees to be recovere. The ata type of the list of variable arguments shoul be nown prior to using it in a variable argument function, as the secon argument of this macro implies. After getting the elements from the variable list, the macro va_en is use which ens the use of the list pointer l_arg. 2.3. Object-Oriente Programming Object-Oriente Programming (OOP) is a programming technique in which entities that exist in a
80 The International Arab Journal of Information Technology, Vol. 8, No. 2, April 20 system are moelle by using classes [9, 6]. Insie a class, attributes an behaviour common to all the elements that belong to a class are specifie. One of the avantages of using a class is the protection of attributes; these are only accesse using the methos efine insie a class. This characteristic of classes is calle encapsulation an it is use to maintain the consistency of class ata. The following relationships between the entities of a system can be moelle: composition, association, epenency an generalization. The concept of polymorphism, which is one of the funamental concepts of OOP, is explaine as follows. 2.3.. Polymorphism Polymorphism means multiple implementations one interface [3]. This is a mechanism use in programming languages to provie more reaable coe. There are two types of polymorphism, polymorphic types an polymorphism relate to functions. Operator overloaing an function overloaing are both types of function polymorphism. By using operator overloaing the meaning of one operator can be expane. As an example, let us analyze the sum operator + which is efine in programming language to wor with integer an real numbers. It is well nown that a vali operation for complex numbers is the sum of complex numbers, but in many programming languages this ata type is not inclue an therefore this operation is not efine. class Complex{ private: float real, imag; public: Complex(); Complex(float, float); Complex operator+( Complex ); // other operations int main(int argc, char **argv){ Complex c(, 2), c2(2, 4), c3; c3 c + c2; return 0; Figure 3. An example of operator overloaing. By using operator overloaing, not only the sum operation for complex numbers can be efine but also other vali operations of the complex numbers. Fig. 3 presents one example that implements the operations of complex numbers. Without using this characteristic the operations woul have being implemente with functions, resulting in a more ifficult coe to rea. 2.3.2. Instance an Class Methos A class can be efine as a template to create objects. All the objects create from a template share attributes an behaviour. The behaviour of objects is implemente by using methos. To perform an operation on an object, a metho has to be efine. Sometimes an operation is not relate to one specific object. Methos that only apply to one object are calle instance methos an methos that apply to the whole class are calle class or static methos. An example of a class metho is a metho that returns the number of objects create from a class. 3. Application of Avance Programming Concepts to Implement Control Algorithms In this section the avance concepts of programming languages escribe in the previous section are applie to buil software relate to control systems. The following list explains how these concepts are applie to control systems: Operator overloaing, which is a in of polymorphism, is explaine using the Kalman filter. It will be shown that this concept is not exclusive of object-oriente programming; it also exists in proceural programming. Function pointers will be applie to neural networs an genetic algorithms. These algorithms were inclue in this paper because of their strong application in control engineering. For example, genetic algorithms have been applie in control engineering to ientify processes an to tune controllers [2]. On the other han, the use of neural networs in control engineering is also intensive. Neural networs have been applie to etect faults in control systems, to moel processes an to control non-lineal processes [4]. Variable argument functions will be applie in the calculation of the control signal u of a PID controller. The concept of inner classes is applie to moel the composition relationship between an aaptive control system an its components (supervisor, process, controller, parametric aaptation algorithm an controller esign). The concept of class methos will be illustrate by builing a class assigne to chec the stability of processes. 3.. Implementing Kalman Filters Using Operator Overloaing To illustrate the concept of operator overloaing, which is a in of polymorphism, let us suppose that the states of a process nees to be estimate. Also, suppose
A Survey of High-Level Programming Languages in Control Systems 8 that the states are not irectly available but can be inferre from noisy measurements. A solution for this problem is the Kalman filter. A Kalman filter is an online-recursive algorithm that estimates the states of a system base on noisy measurements [8]. The system is moelle by the iscrete-time linear equation: x Ax Bu w () + + using noisy measurements represente by the equation. where: y Hx + v (2) x R n is a vector containing the state of the process. A R n n is the state transition matrix an it relates the state of the system at a instant - to the state at instant. The B R n l matrix relates the control input u R l to the state x. w R n represents the uncertainty in the process an is moele as white noise having a normal probability istribution p( w) N(0, Q). v moels the noise in the measurement an is also moele as white noise p( v) N(0, R). y R m is the process measurement vector. H R m n is the measurement matrix an it relates the state of the system with the measurements. In the Kalman filter, xˆ is a priori state estimate at time an is calculate base on past values of the output y. xˆ as a posteriori state estimate at time an is calculate base on past an current values of the output y. initialize 0 set initial estimates for x ˆ, P loop I.- preictor step.- project the state ahea 2.- project the error covariance ahea II.- corrector step increase en loop.- compute the Kalman gain K 2.- measure the process to obtain y 3.- upate the a posteriori state estimate xˆ 4.- upate the a posteriori error covariance P Figure 4. N-imensional Kalman filter algorithm. Using xˆ an xˆ a priori estimate error covariance P an a posteriori estimate error covariance P can be obtaine. This is one by first getting a priori an a posteriori estimate error ( e x xˆ an e x xˆ ). The a priori estimate error covariance is T then efine as P E[ e e ] an the a posteriori T estimate error covariance is efine as P E[ ee ]. A Kalman filter algorithm has two steps. A preictor step an a corrector step. Fig. 4 contains the algorithm to implement the N-imensional Kalman filter. where steps I-, I-2, II-, II-3 an II-4 are given respectively by equations 3-7. K Ax x ˆ ˆ + Bu (3) P + T AP A Q (4) T [ HP H + ] T P H R ( y Hxˆ ) x + K (5) xˆ ˆ (6) ( I K H) P P (7) To implement the Kalman filter algorithm a matrix library can be mae as shown in Figure 5. In the main function of Figure 5 the coe to implement equation 5 is presente. As the reaer may notice, this implementation is cumbersome an oes not resemble equation 5. It will be ifficult to unerstan what this program oes. // matrix.h float** multiply(float **, float**); float** inverse(float **); float** transpose(float **); float** sum(float**, float **); // efinition of other prototypes #inclue matrix.h int main(int argc, char** argv){ float **P, **H, **R; // other efinitions an operations PHt multiply( P, inverse(h) ); HPHt multiply( H, PHt ); // compute the Kalman gain K multiply( PHt, inverse(sum( HPHt, R )); return 0; Figure 5. Implementation of equation 5 of the Kalman filter algorithm without using operator overloaing.
82 The International Arab Journal of Information Technology, Vol. 8, No. 2, April 20 Another way to implement eq. 5 is to use operator overloaing. To o this, a class Matrix is efine in Figure 6. #ifnef MATRIX H #efine MATRIX H using namespace st; class Matrix{ frien Matrix operator*(float, Matrix); frien Matrix operator*(matrix, float); frien ostream& operator<<(ostream&, const Matrix&); private: float **ata; int n, m; public: Matrix(); Matrix(const Matrix&); // copy constructor Matrix(); Matrix operatorˆ(char);// transpose Matrix operatorˆ(int); // inverse Matrix& operator(const Matrix&); Matrix operator+(const Matrix&) const; Matrix operator*(const Matrix&) const; #enif #inclue Matrix.h int main(int argc, char **argv){ Matrix K, // Kalman gain P, // priori estimate error covariance H, // measurement matrix R; char T; //ummy // efinition of other variables // operations to fill the necessary variables K P*(HˆT)*((H*P*(HˆT)+R)ˆ-); return 0; Figure 6. Implementation of equation 5 of the Kalman filter algorithm using operator overloaing. This example shows that by using operator overloaing, more reaable coe can be obtaine; the coe of fig. 6 closely resembles eq. 5 so it is very easy to unerstan this version of the Kalman filter algorithm. An 2 are change respectively to eq. 8 an 9 Here, one question may arise: is operator overloaing a new concept evelope in the object-oriente theory?. Amazingly the answer is negative. Let us emonstrate this statement. Let us moify the previous problem in such a way that only one state is estimate as in equation. x ax + bu + w (8) y hx + v (9) The Kalman filter algorithm is change to initialize 0 set an initial estimates for x ˆ, p loop a. preictor step. project the state ahea 2. project the error covariance ahea b. corrector step. compute the Kalman gain 2. measure the process to obtain 3. upate the a posteriori state estimate xˆ 4. upate the a posteriori error covariance p increase en loop Figure 7. Scalar Kalman filter algorithm. where steps I-, I-2, II-, II-3 an II-4 are given respectively by equations 0-4. ax x ˆ ˆ + bu (0) p + y 2 a p Q () hp 2 h p + R ( y hxˆ ) x + (2) xˆ ˆ (3) p ( h ) p (4) The scalar Kalman filter algorithm can be implemente in a proceural language, for example in the C programming language. If equations 3 an 4 are carefully examine, it can be seen that the minus operator is overloae; this operator wors with two real numbers in equation 3 ( y an the result of hˆ x ) an in equation4 this operator also wors with one integer (the number ) an the result of h. The reaer is referre to [8] to have a more complete escription of the Kalman filter.
A Survey of High-Level Programming Languages in Control Systems 83 3.2. How Intelligent Control Software Can be Improve by Using Function Pointers 3.2.. Genetic Algorithms Genetic algorithms are search base algorithms use in optimization [7]. These algorithms generate a set of possible solutions represente as strings of bits. Every string represents a chromosome of a particular iniviual. The algorithm selects the best iniviuals base on the strength reflecte in the chromosomes. This reveals that genetic algorithms are inspire in natural selection. Because the process of getting a moel process an esigning a controller can be represente as optimization problems, genetic algorithms have been use to attac these problems [2]. struct iniviual{ /* chromosome string for an iniviual */ String chromosome; /* fitness of an iniviual */ ouble fitness; /* efinition of other variables */ voi obj_fun(struct iniviual *i, ouble (*fp)(ouble)) ) /* efinition of variables */ float x; /* * coe to convert a string to a * number between [0,]. */ i->fitness fp(x); Figure 8. Part of the implementation of a genetic algorithm by using a function pointer. The implementation of a genetic algorithm can be improve by using function pointers. To unerstan how function pointers can be use in genetic algorithms, let us efine the representation of an iniviual using a structure an the function that evaluates this iniviual, as is shown in Figure 8 The obj_fun converts an iniviual chromosome from a string into a number between 0 an (this is store in variable x). Then variable x is passe as an argument to a function that evaluates the strength of the iniviual. This function has to be specifie by the user an it epens on the problem to be optimize. In the case of Figure 8, the function is passe as an argument to the obj_fun. The main avantage of using a function pointer in the obj_fun is that the user oes not have to moify this function to specify which function she/he wants to optimize. As can be seen from this example, function pointers are use to select a function at run-time. 3.2.2. Neural Networs Neural Networs (NN) are algorithms that imitate the learning process of the human brain [5]. The most important applications in control engineering are ientification an control of processes [4]. Let us suppose that it is require to moel a process which can be moelle by using a first-orer ifferential equation. The transfer function of the equation is: θ s Ke (5) Gp ( s) λs+ The iscrete version of this equation is given by the equation. G where: z B( z ( b z 2 p ( z ) A( z ) + az a ) z + b z 2 ) (6) T s /τ e (7) LT /τ ( e ) b K (8) s / τ ( e ) s b Ke (9) T / τ L 2 Equation 6 can also be represente using the recurrence equation: y ) a y( ) + b u( ) + b ( 2) (20) ( 2 As can be observe, the value of output variable y at instant epens on its previous value an it also epens on the values of the input variable u at the instants -- an --2. With this information a firstorer moel can be obtaine by using an NN. Fig. 9 shows the structure of the NN to moel a first-orer process. Figure 9. A neural networ moelling a first-orer process. Each of the circles in this figure represents a processing unit. The behaviour of this processing unit epens of an activation function. Examples of activation functions are: linear, log-sigmoi, step an saturating linear.
84 The International Arab Journal of Information Technology, Vol. 8, No. 2, April 20 The function that evaluates the output of a processing unit coul receive as an argument a function pointer that points to an activation function; in this way the coe that evaluates a processing unit can be hien to the user. This woul increase the level of usability. 3.3. Getting the Control Signal u by Using Variable Argument Functions A PID controller is one of the most wiely use controllers in inustry []. This controller has the following structure: U ( s) K + + ce( s) sτ (2) sτ i where et is the control error an ut is the control signal an K c, τ i an τ are respectively the proportional gain, the integral time constant an the erivative time constant. K c, τ i an τ are the controller parameters. A PID controller is often calle a three-term controller because it consists of three terms: a proportional term P, an integral term I an a erivative term D. In practical situations, the structure of equation 2 is not use; instea the following structure is use: E( s) sτ U ( s) K ( ) ( ) + Y ( s) c br s Y s sτ sτ i + N (22) This structure helps to mitigate strong variations in the control signal ue to noise an peas in the control signal are also avoie when a change in the set-point occurs. To implement this control law it is necessary to approximate the erivative an integral parts. The proportional term P K( br y) is implemente by replacing the continuous variables by their sample versions ( br y ) P K (23) where enotes the sampling instants. The integral term is approximate by the equation Kh I + I + e T i (24) in which the erivative is approximate by a forwar ifference. In equation 24 h represents the sampling time. The erivative term is obtaine by approximating the erivatives by a bacwar ifference: T KT N D ( ) D y y (25) T + Nh T + Nh Figure 0 shows a way to implement the control law of a PID controller using variable argument functions. An ientification of the process is mae in the main function before getting the control signal u an then with the parameters of the process the PID controller tuning is one. Here, the interesting point is that the user can select the in of controller; the user can select a P, PI, PD or PID controller. The get_u function only receives the necessary parameters to obtain the control signal u. This function is mae in such a way that the necessary parameters are passe as fixe parameters an the parameters that are not always neee are passe using the variable argument function syntax [0]. 3.4. Implementation of an Aaptive Control System Using Object-Oriente Programming In this section two concepts of object-oriente programming languages are use to implement an aaptive control system: inner classes an class methos. The configuration of an inirect aaptive control system is shown in Figure. In this in of aaptive control, a moel of the process ( z ) is obtaine base on a set of input-output measurements ( u (), y ()) an then the controller G c ( z ) is esigne with this moel [2]. The Parameter Aaptation Algorithm (PAA) bloc is responsible for obtaining the parameter vector of the process (see ˆ θ PAA( ) in fig. ). The controller esign bloc specifies the parameters of the controller G c ( z ) base on the moel obtaine by the PAA an on the esire performance specifie by the system operator. An aaptive control system must control a process in spite of isturbances ( ), 2( ), noise n () an parametric variations of the process. The supervisor bloc is in charge of etecting any event that may provoe a ecrease in the performance of system. In fig., y ref () is the reference, e () is the control error, ) ( u is the manipulate variable an is the th sampling time. G p
A Survey of High-Level Programming Languages in Control Systems 85 #efine P_Gc 0 #efine PI #efine PD 2 #efine PID 3 struct GcPID{ ouble Kc, Ti, T; ouble b, N; ouble get_u(int PID_type, ouble Kc, ouble b, ouble y, ouble r,...){ va_list ap; va_start(ap, r); ouble T, Ti, P; static ouble I 0.0, D 0.0, yol 0.0; ouble a, a2; switch(pid_type){ case P_Gc: P Kc*(b*r-y); I D 0.0; brea; case PI: Ti va_arg(ap, ouble); T va_arg(ap, ouble); P Kc*(b*r-y); I I + ((Kc*T)/Ti) * (r-y); D 0.0; brea; case PD: a va_arg(ap, ouble); a2 va_arg(ap, ouble); P Kc*(b*r-y); D a*d-a2*(y-yol); brea; case PID: Ti va_arg(ap, ouble); T va_arg(ap, ouble); a va_arg(ap, ouble); a2 va_arg(ap, ouble); P Kc*(b*r-y); I I + ((Kc*T)/Ti) * (r-y); D a*d-a2*(y-yol); brea; efault: brea; yol y; return (P + I + D); int main(int argc, char **argv){ struct GcPID pi; ouble y, u, r; ouble T; // tune the controller to get its parameters // (Kc, T, Ti) // the user selects the type of controller // calculate auxiliar variables for the D term ouble a pi.t/(pi.t + pi.n*t); ouble a2 pi.kc*pi.t*pi.n/(pi.t + pi.n*t); // rea y from the process an r form the user u get_u(p_gc, pi.kc, pi.b, y, r); return 0; Figure. Configuration of an aaptive control system. 3.4.. Inner Classes When a system is moelle using the object-oriente paraigm, the first step for oing this is to ientify the entities in the system an then the relationships between these entities must be establishe. class ACS{ class Gc{ private: float *R, *S, *T; class PAA{ private: float forgeting_factor; class Gp{ private: float *A, *B, ; class GcDesigner{ public: tunegc(){ ACS(){ // constructor Figure 2. Using inner classes to implement the aaptive control system of Figure. Five entities were ientifie in the control system of Figure the supervisor, the controller, the process, the controller esign an the parameter aaptation algorithm. The first relationship establishe between these entities is the composition relationship which is use to moel the relation between one component an the parts that compose this component. In this case the component is the Aaptive Control System (ACS) an its parts are the blocs of Figure. In Figure 2 the concept of inner classes was use to moel the relationships between the ACS an its parts. Figure 0. Implementing the control law of a PID controller using variable argument functions.
86 The International Arab Journal of Information Technology, Vol. 8, No. 2, April 20 3.4.2. Class Methos Usually the methos efine insie a class are esigne so that the status of an object is recovere or moifie. For example the metho tunegc efine insie the class GcDesigner of fig. 2 esigns the controller Gc. Sometimes a metho that oes not necessarily apply to a particular object is neee; this type of metho is calle class metho. For example, in fig. 3 a class to chec the stability of a transfer function is efine. m an m 2 are methos to chec the stability of a process. These methos coul be base on the Liapunuv stability or on the poles position of a characteristic equation, for example. class Gp{ class Stability{ private: // efinition of variables public: static voi m(gp); static voi m2(gp); // other eclarations int main(int argc, char **argv){ Gp gp; Stability::m(gp); return 0; Figure 3. Using class methos to create a stability class. 4. Conclusions In this paper five programming concepts were use to implement control systems. The concept of polymorphism was use to implement the n- imensional Kalman filter. By using the scalar Kalman filter it was emonstrate that polymorphism also exists in proceural languages lie the C programming language. Function pointers were use to mae an efficient implementation of genetic algorithms an NN. A variable argument function was use to implement a PID controller. The last concepts presente in this paper were composition an class methos which are two of the funamentals of objectoriente programming. The author of this paper believes that the unerstaning of these concepts will help to evelop a coe that is more reaable an easier to maintain. References [] Astrom J. an Hagglun T., PID Controllers: Theory, Design an Tuning, Hagglun Publisher, 995. [2] Astrom J. an Wittenmar B., Aaptive Control, Dover Publications, 2008. [3] Ecel B. an Allison C., Thining in C++, Volume 2: Practical Programming, Prentice Hall, 2003. [4] Frenger P., Robot Control Techniques, Part One: A Review of Robotics Languages, Computer Journal of SIGPLAN Notices, vol. 32, no. 4, pp. 27-3, 997. [5] Frenger P., Robot Control Techniques, Part Two: Forth as a Robotics Language, Computer Journal of SIGPLAN Notices, vol. 32, no. 6, pp. 9-22, 997. [6] Fritzson P., Principles of Object-Oriente Moeling an Simulation with Moelica 2., Wiley-IEEE Press, 2003. [7] Golberg E., Genetic Algorithms in Search, Optimization, an Machine Learning, Aison- Wesley Professional, 989. [8] Grewal M., Kalman Filtering-Theory an Practice Using MATLAB, Press Wiley, 200. [9] Jobling W., Grant A., Barer W., an Townsen P., Object-Oriente Programming in Control System Design: A Survey, Computer Journal of Automatica, vol. 30, no. 8, pp. 22-26, 994. [0] Kernighan W. an Ritchie M., The C Programming Language, Prentice Hall, 998. [] Kinnucan P. an Mosterman P., A Graphical Variant Approach to Object-Oriente Moeling of Dynamic Systems, in Proceeings of the Summer Computer Simulation Conference, USA, pp. 53-52, 2007. [2] Kristinsson K. an Dumont A., System Ientification an Control Using Genetic Algorithms, Computer Journal of IEEE Transactions on Systems, Man, an Cybernetics, vol. 22, no. 5, pp. 033-046, 992. [3] Lanau D. an Zito G., Digital Control Systems: Design, Ientification an Implementation. (Communications an Control Engineering), Springer, 2006. [4] Narenra S. an Parthasarathy K., Ientification an Control of Dynamical Systems Using Neural Networs, Computer Journal of IEEE Transactions on Neural Networs, vol., no., pp. 4-27, 990. [5] Norgaar M., Ravn O., Poulsen K., an Hansen K., Neural Networs for Moelling an Control of Dynamic Systems: A Practitioner's Hanboo, Springer, 2008. [6] Stroustrup B., The C++ Programming Language: Special Eition, Aison-Wesley, 2000.
A Survey of High-Level Programming Languages in Control Systems 87 Fernano Valles-Barajas obtaine a grauate egree in computer science at Center for Research an Grauate Programs of La Laguna Institute of Technology in 99. He receive an MS in control engineering in 997, an a PhD in artificial intelligence in 200, from Monterrey Institute of Technology (ITESM) campus Monterrey. He was a research assistant at Mechatronics Department of ITESM Campus Monterrey (997-200). He receive certification as a PSP eveloper from the Software Engineering Institute of Carnegie Mellon University in 2008. He is member of the IEEE an ACM. His research interests inclue topics in software engineering an control engineering. Currently, he is full time professor in the Department of Information Technology at Universia Regiomontana, Monterrey, Nuevo León, México.