Sie sind auf Seite 1von 7

International Journal of Control, Automation, and Systems (2010) 8(5):1141-1147 DOI 10.

1007/s12555-010-0523-y

http://www.springer.com/12555

Component-based Design for SCADA Architecture


Phan Duy Anh and Truong Dinh Chau Abstract: Supervisory control and data acquisition (SCADA) software which is suitable to distributed control systems is a demand for system developers because the characteristics of existing SCADA software packages are hard to satisfy the requirements of distributed systems. For the strengths of component-oriented techniques, this paper proposes a component-oriented architecture of SCADA software to satisfy the demand of distributed control systems. Design pattern and OPC (OLE for Process Control) technology are also used to make the openness for the architecture. Keywords: Component-oriented programming, distributed systems, real-time design patterns, realtime systems, SCADA, system architecture.

1. INTRODUCTION SCADA is known as process of collecting data from physical devices to monitor, archive on computers and applying commands from computers to control the devices. SCADA system including these processes bases mainly on computer infrastructure (maybe one computer or a computer network) and SCADA software installed on the computers. By the demand for mass production, productivity, quality and safety, the current production systems are large and complex ones. Devices of these systems are installed in wide-area of plants and their statuses are monitored and controlled by many departments. These are called distributed systems. The power system discussed in [1] is an example. They need the advanced SCADA software with the key features: independence on distance, flexible operation, easy upgrade, and reasonable cost to monitor and control all of their distributed devices in widespread areas. However, the existing SCADA software packages in the automation market are developed from their original patterns which base on structured or object-oriented analysis and design. All features are in one package, and installed in one computer. These are hard to satisfy the requirements of distributed systems. With the development of component-oriented programming (COP), the good support of .NET programming languages and many modern design patterns for this programming technique [2,3], current and future softwares have been being analyzed and
__________ Manuscript received March 5, 2009; revised December 23, 2009; accepted April 5, 2010. Recommended by Editorial Board member Jietae Lee under the direction of Editor Young-Hoon Joo. Phan Duy Anh is with the School of Electronic & Computer Engineering, Cao Thang Technical College, 65 Huynh Thuc Khang, District 1, Vietnam (e-mail: anhphan@caothang.edu.vn). Truong Dinh Chau is with the School of Electrical and Electronics Engineering, Ho Chi Minh City University of Technology, 268 Ly Thuong Kiet, District 10, Vietnam (e-mail: tdchau@ hcmut.edu.vn). ICROS, KIEE and Springer 2010

designed to follow this orientation to get its goals: easy use, high security, openness, reuse, conquering complexity. And modern SCADA software should also follow component-oriented architecture to archive its goals which are good solutions for distributed systems requirements. This paper presents a component-oriented architecture in the domain of SCADA system to make it suit with distributed systems. For archiving this architecture, in Section 2, we expose the basic architecture of existing SCADA systems and all of its objects. Section 3 presents component description; Section 4 gives the advantages of modern design patterns in software design and how to apply these into the architecture. Section 5 gives the component-oriented architecture suiting with SCADA system and explains in detail its working mechanism. In Section 6, the component-oriented architecture is implemented into distributed production system. And Section 7 gives a conclusion of the work. 2. BASIC OBJECTS OF A SCADA SOFTWARE From reading and analyzing [5-7], a common picture of objects in a SCADA software and their interaction is shown in Fig. 1.

Fig. 1. Objects and their interaction in traditional SCADA software.

1142

Phan Duy Anh and Truong Dinh Chau

Basic SCADA software has four main objects: I/O driver, data center, designer, runtime and four other sub objects: trend, alarm, report and network connector. I/O driver gets real-time data from devices to give to other objects in software. The real-time data is represented by values of tags in SCADA software. Data center stores raw values or processed values of specified tags into database. Data center has four other sub objects: trend, alarm, report and network connector. Trend or, more exactly, real-time trend uses data directly from I/O driver object or stored data in database to draw charts. Alarm object uses real-time data from I/O driver object to announce exceeding statuses of values to users and these statuses are also stored into database. Report object uses stored data of database to print report papers or display onto screens numerically. Utilities of trend, alarm and report objects are configured and viewed in designer and runtime by trendviewer, alarm-viewer, report-viewer respectively. Network connector object allows accesses from outside of SCADA station or from other third-party applications to the database to collect data or to use resource of data center. Designer is a user interface. It includes many design tools, such as labels, textboxes, alarm-viewer, reportviewer, trend-viewer, etc. to display values of tags; buttons, switches, etc. to change values of tags. It can specify whichever tags will log their values into database or be used in trend, alarm or report objects. Designer is used by system engineers to design plant picture to monitor and control processes in plant. After designing in designer, system engineers have to save their work into a project file. This file will be read and executed by runtime object. Runtime is an executive object of the project file created by designer. It is used by operators to monitor and control processes in plant. Functions of designer and runtime are shown in Fig. 2. In the package GeniDAQ (Advantech, Taiwan),

GeniDAQ Builder and GeniDAQ Runtime are designer and runtime respectively. In the Intouch (Wonderware, USA), Window Maker is designer and Window Viewer is runtime. After applying some SCADA software packages, such as WinCC (Siemens, Germany), Intouch, GeniDAQ into many plant projects, we realized that they included nearly all of new technologies, but they are cumbersome, because they are based on modular programming [5-7] which is an old programming technique. They are developed from their first version which is analyzed and designed upon old technologies and many update patches. So, they are larger and larger, they become complex systems. A software package is installed in only one computer, so all of its resources are in that computer. If a plant wants to apply client-server topology for SCADA, many same SCADA software packages have to be bought to install in the computers, but they only use resources on servers, not all of resources on clients are used. 3. COMPONENT-ORIENTED PROGRAMMING Component-oriented programming (COP) is a modern programming technique which enables programs to be constructed from software components. A software component is a piece of self-contained, self-deployable computer code with well-defined functionality and can be assembled with other components through its interfaces [4]. Fig. 3 shows a program built with components. Utilities of program are provided by client1 and client2. Client1 connects to component1 through interface1 to get service; client2 connects to component2 through interface2_2 to get service. Component2 also provides service for component1 through its interface2_1. Because a software component is a self-contained computer code and it just communicates with out-side objects through its interfaces. So, when using a component, we have no need to know how it operates in-side and actually, we can not know this if the component is from a third-party. This stands for the ease to use and the high security of software component. If customers use a component-based program, they will have a chance of upgrading or updating the program by themselves by replacing existing components with new components but the same interfaces. This work does not affect operation of the other components. By this way, we can also do for our software products. This stands for the openness and the reuse of the programs which are constructed from components. A software component also is self-deployable computer code. It can be installed and executed independently of other components. So, when providing service for other objects, it plays a role of server and the objects using its service are clients. In Fig. 3, component1 is server of client1 and it is a client of component2. Component2 is server of client2 and component1. With the good support of .NET platform, components can execute as servers in different computers, they can easily interact remotely to

Fig. 2. Use case diagram of SCADA software.

Component-based Design for SCADA Architecture

1143

Fig. 3. Component-based program. each other [2]. The program consisting of components running in different computers is called distributed application. This kind of program is used for giving solution for distributed (complex) systems. This also stands for the openness of component-oriented software. All characteristics: easy use, high security, openness, reuse, conquering complexity make component-oriented programming better than other programming techniques before it (structured programming, object-oriented programming,). 4. DESIGN PATTERNS Design patterns were concerned first in [8] for objectoriented programming and the original implementations were presented in C++ and Smalltalk. As the useful of them, there are many new patterns which are applied to other programming techniques such as componentoriented programming and implemented into many other programming languages [9] such as: Visual Basic, C#, Java, etc. A design pattern is defined in a generalized solution to a commonly occurring problem [3]. Design patterns are found by experienced developers. They used to face the problems which are similar to each other many times. The solution for the problems is generalized and formalized to create a design pattern. Thus, design patterns are experiences in software engineering. If we find suitable design patterns for our architecture, they can help us a stable architecture and short time in design. 5. COMPONENT-ORIENTED ARCHITECTURE FOR SCADA SOFTWARE The benefits of component-oriented programming described in section 3 give us the motivation of designing component-oriented architecture for SCADA system to overcome the limits of existing SCADA systems. A realtime design pattern can be applied to make the architecture to be stable and more suitable with distributed realtime systems. The component-based architecture pattern [3] is analyzed and applied into context of this section. Fig. 4 shows component-based architecture pattern which is applied into computer network context. Client module has its component framework in client computer. It is serviced by client interfaces of many server compoFig. 4. Component-based architecture design pattern in computer network context0 nents. Each of server components is stored in specified folder of a server computer (for example, it can be C:\MySCADA). For the first time of search, client does not know the IP address of the server computer but it knows the folder storing the server component. The component framework includes component loader and component repository. Client module uses component loader to search in network for IP address of server computer (which stores specified server component in C:\MySCADA folder) and load server components. Repository is used by component loader to save addresses of server components for later use. This means that the component loader does not need to search in the network for IP addresses of server computers if these are in repository. When loading a server component, component loader uses management interface to confirm server name and to know the name list of the other components which the server component depends on. The component loader has to load all of these components to give services for the server component. This means that a server component of client module can be a client of other server components. The searching mechanism of component loader is described in Fig. 5. The component loader has two places to search the requested component: its repository and computer network. At first, it starts searching in repository, if it finds the address, it will return this for client and finish searching. If it does not find the address of requested component in repository, it will search in network. The search in network needs the IP range provided by client. The component loader pings IPs in IP range to find the list of live hosts; then, it starts the iteration to looks for the requested component by name in the address {IP[i]\component folder}, where, component folder is the default storing folder (C\MySCADA, for instance) of the component in the host whose IP address is the number i in the list of live hosts. If it finds the requested component at IP[i] address, it will add this IP into repository, return this address to client and end searching. If the iteration ends but the requested component is not found, it will give a not found message to client and finish searching. This searching mechanism is also a solution for redundancy technology which is a complexity in automation. Redundant server package can be stored in specified

1144

Phan Duy Anh and Truong Dinh Chau

Fig. 6. Component-oriented architecture for SCADA system. applied for saving resource of server computer. With the component framework, search mechanism, remoting technology and the good support of .NET for component and remoting, this pattern can fully manage all interactions of components without depending on the distance of components in physical network. This can help us to distribute components into computer network to make a distributed SCADA system. Thus, we can take advantage of many processors to increase processing speed. Applying basic objects of a SCADA system into the design pattern described in Fig. 4 on .NET platform, a component-oriented architecture for SCADA system is proposed (Fig. 6). It inherits all good characteristics of software component and the design pattern. In Fig. 6, designer module and runtime module are clients they have their own component framework, which help them find their servers. Graphic library component is a server providing indicators and control objects for plant picture in designer and runtime. Trend, alarm and report components also are servers, they provide their specific services (described in Section 2) for designer and runtime. I/O driver server connects to physical devices to acquire real-time data and provides realtime data for its clients (designer, runtime, trend, alarm, report) in the form of values of tags. Database component is used by trend, alarm, and report for archiving tag values. Designer module and its component framework are packaged into a package. Runtime module and its component framework are also in the same package. These packages are installed in computers and these computers are clients. The server components can be installed separately in many computers. They can execute independently in their computers to provide their necessary services to clients.

Fig. 5. Activity diagram of searching mechanism of component loader. folder in anywhere of network. Main server can use this searching method to invoke the redundant server without caring about the position of redundant server computer in network. Client-server interaction in Fig. 4 is from computer to computer. Thus, remoting technology has to be applied. On .NET platform, remoting technology is supported well [2]. .NET gives two options for accessing an object through network (application domain boundary): by value and by reference. When accessing an object by value (or marshaling by value), client can not write value into server side, because the object in server side is copied to client side, so client gets a copy of the object and these two objects are distinct. Changes in the object in client side do not affect the object in server side. This option is not suitable for remoting SCADA application, in which, client has to change tag values in I/O driver server. When accessing an object by reference (or marshaling by reference), client uses a proxy as a reference to the object in sever computer. A proxy in client side is an object that provides exactly the same interfaces, public methods, properties, and members as the real object in the server side, but it is not a copy of the real object, it is just a material for client to make a reference to server side object. With this option of accessing, client can write value to the server side. This is suitable for remoting SCADA application. Moreover, the kind serveractivated-single-call of marshaling by reference can be

Component-based Design for SCADA Architecture

1145

Fig. 7. Interfaces of server components. Fig. 7 shows services of server components through their interfaces. These services are described bellow. In the client interface of trend, alarm or report components, there are methods: set_tag_name and get_object_ control. Client uses method set_tag_name to provide tag for these components to make their services. Method get_object_control is used by client to get services from trend, alarm or report components. In client interface of alarm component, there is another method alarm_limit. This method lets client give the limit levels for the tag. In the client interface of I/O driver, there are three methods: set_tag_data_base, read_tag_value and write_tag _value. Client uses method set_tag_data_base to declare tag collection. Method read_tag_value is used to read the value of specified tag and method write_tag_value is used to write specified value into specified tag. The client interface of database component has methods: create_table, insert_record, and select_records. They are used to provide the services of creating table, inserting record into table and selecting records from table respectively. The method get_objects in client interface of graphic library is used by client to get graphic indicators and control objects. In management interface of all server components, there is method get_my_name. It gives component loader the name of the server component. In the management interface of trend, alarm and report component, the method get_servers_name provides a name array of their servers for component loader to load all of their servers before loading them. Based on the description in Fig. 4, working mechanism of the new SCADA software is briefly explained below. Designer application in design computer is loaded by system engineer. It automatically uses its component loader to search and load the graphic library component to get library of indicators and control objects. The first step of system engineer in design is declaration of tags. This activity calls the component loader to search for the availability of I/O driver server. If this component is not available, the design work will be stopped, because without tags, nothing can be done in a SCADA application. This step generates a XML tagconfig-file in the format defined as follow.

<Group> <GroupName> </GroupName> <UpdateRate></UpdateRate> <Tag TagName="" Address="" /> <Tag TagName="" Address="" /> </Group> <Group> </Group> where Group is the group of tags, its name is defined in GroupName. All tags in a group have the same UpdateRate to update fresh data for tag values. Each of tags has its TagName and Address. Next, indicators and control objects are dragged and dropped to build plant picture. Then, they are stuck with specified tags to display and control their real-time values provided by I/O driver server in runtime. If indicators are trend-viewers, alarm-viewers, report-viewers or some of them, they call component loader to search for the availability of corresponding servers: trend, alarm and report components. After finding addresses of these servers, the component loader has to search for the availability of database component, (the I/O driver component was already searched when declaring tags). If they are available, these indicators can be used for design; otherwise, these indicators can not be used. For completing project design, the system engineer has to save what he has done into a XML project file. The structure of this XML file can be briefly described as follow. <Object> <ObjectName> </ObjectName> <Location X="" Y="" /> <Size H="" W="" /> <Tag GroupName="" TagName="" /> </Object> <Object> </Object> where each Object is an indicator or a control object in designed picture. An object has ObjectName, Location, Size and tag properties. Tag is the tag stuck to the object to display or control its value. User uses runtime application in runtime computer to execute the Tag-config-file and the project file created by system engineer. Tag-config-file is loaded first. The runtime searches and load I/O driver component to create tag collection with all tags were configured in Tagconfig-file. If there is no I/O driver component in network, all next steps can not be done. Next step (if I/O driver component is found and loaded), project file is executed to generate plant picture. All indicators and control objects in the picture are connected to tag collection to get or set tag values. If there are trend-viewers, alarm-viewers, report-viewers, their corresponding servers are searched and loaded to provide services for them.

1146

Phan Duy Anh and Truong Dinh Chau

6. IMPLEMENTATION For the openness and the standard of OPC technology, and the use of .NET technology described in section 5, OPC .NET wrapper is used to make I/O driver component [10]. So, I/O driver component plays a role as an OPC client. It can be served by many OPC servers which are in the same computer with I/O driver or in many distinguished computers in a LAN. Fig. 8 shows the inside of I/O driver component and the interaction of it with many OPC servers. With SCADA software architecture in Fig. 6, we can upgrade or update the server components easily without caring about the significant increasing of software size. All clients and server components can be installed and run in any computer in network with the regardless of distance. This constructs a distributed computing system. What happens if all these components are in the same computer? The answer for this question is: each of components can use IP of the computer for its address and it follows the working mechanism of the architecture. The architecture in Fig. 6 is discussed with just two clients: one designer and one runtime. When implementing into distributed control system, more than two client modules can be used in network to give plant monitoring and control features for operators. Fig. 9 shows a large-scale SCADA network system; each of servers is in separate computer in network. There are many designer and runtime client computers. Designers are used to design projects. Runtimes execute these projects with the services of servers. The black lines show the interaction between clients and server components. The red lines show the interaction of I/O driver component with OPC servers in the system. There is a question: will client computers slow or halt the system if there are many of them in network? The answer is positive, but just at the first time the clients search for addresses of the servers in network. With many computers in the network, the searching mechanism described in Fig. 5 takes long time to ping and search for addresses of server components in live hosts. After the first time, all addresses of servers are in repository of clients, the problem of searching is solved. Taking advantage of many processors in distributed compu-

Fig. 9. A large-scale SCADA network system. ting system and remoting technique discussed in section 5, many clients can be served well by server components. With the OPC technology, the SCADA system can work with many kinds of I/O devices of various vendors. This makes the component-oriented SCADA system to be open with automation world. A component-oriented SCADA software designed by Enterprise Architect software (Sparx Systems, Australia) and coded in C#.net are being tested in the laboratory of Automation and Control, Ho Chi Minh City University of Technology, Vietnam. It is tested with three OPC servers: PC Access (Siemens), Kepware (Kepware, Inc.) and RSlinx (Rockwell Automation). PC Access OPC server connects to a Siemens PLC S7-200, RSlinx connects to a PLC Compactlogix and Kepware connects to an Omron PLC CQM1. All of server components are installed on different computers in network. The statuses of inputs and outputs of the PLCs can be monitored and controlled on three runtime computers as shown in Fig. 9. 7. CONCLUSION The architecture in Fig. 6 of SCADA system and its implementation into large-scale network system in Fig. 9 inherit all of the open characteristics from componentoriented technique, design pattern, and OPC technology. Component-oriented technique gives the architecture the openness of easy replacing, updating, and upgrading software components. Design pattern gives the architecture the openness of flexible scale. The OPC technology gives it the openness of easy integrating with many kinds of I/O devices of various vendors. The architecture also inherits strong points of distributed computing technology. These make the component-oriented SCADA system to be open with automation world.

Fig. 8. The inside of I/O driver component and the interaction of it with many OPC servers.

Component-based Design for SCADA Architecture

1147

REFERENCES Y. Serizawa et al., Conceptual design for distributed real-time computer network architecture, Proc. of IEEE PES Transmission and Distribution Conference, vol. 1, pp. 26-31, 2002. [2] J. Lowy, Programming .NET Components, p. 648, OReilly, 2005. [3] B. Douglass, Real-time Design Patterns Robust Scalable Architecture for Real-time Systems, pp. 125-130, Wesley, 2002. [4] A. Wang and K. Qian, Component Oriented Programming, p. 319, Wiley, 2005. [5] Siemens, WinCC v6 Getting Started Manual, 2003. [6] Wonderware, Intouch HMI Concepts and Capabilities Guide, 2007. [7] Advantech, GeniDAQ Users Manual, 2000. [8] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns, Elements of Reusable Objectoriented Software, Addison-Wesley, 1995. [9] J. Bishop, C# 3.0 Design Patterns, p. 290, OReilly, 2007. [10] T. D. Chau and N. N. Khai, Web-based data monitoring and supervisory control, Proc. of the Int. Conference ISEE, 2007. [11] K. Hamilton and R. Miles, Learning UML 2.0, p. 286, OReilly, 2006. [12] W. P. Junior and C. E. Pereira, A supervisory tool for real-time industrial automation systems, Proc. of the Sixth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing, 2003. [13] B. Atlagic, Application development environment of an integrated SCADA system, Proc. of EUROCON 2003, Computer as a Tool, The IEEE Region 8, vol. 1, pp. 322-326, 2003. [14] F. Moscato, N. Mazzocca, and V. Vittorini, Workflow principles applied to multi-solution analysis of dependable distributed systems, Proc. of the 12th Euromicro Conference on Parallel, Distributed and Network-Based Processing, 2004. [15] Z. Ling and J. Yu, The design of SCADA based on industrial ethernet, Proc. of the 4th World Congress on Intelligent Control and Automation, 2002. [1]

[16] J. Zhang and Y. Zhang, Component-oriented modeling and design of hierarchical hybrid control system, Proc. of IEEE International Conference on Control and Automation, Guangzhou, China, May 30 to June 1, 2007. [17] J. Cheesman and J. Daniels, UML Components, a Simple Process for Specifying Component-Based Software, Addison-Wesley, 2000. [18] I. Crnkovic, Component-based software engineering - new challenges in software development, Journal of Computing and Information Technology - CIT 11, pp. 151-161, 2003. [19] L. Wang and K. C. Tan, Modern Industrial Automation Software Design, p. 313, John Wiley & Sons, Inc., 2006. [20] H.-G. Gross, Component-based Software Testing with UML, p. 316, Springer, 2005.
Phan Duy Anh received his B.S. degree in Automation and Control from Department of Automation and Control, Faculty of Electrical and Electronics Engineering, Ho Chi Minh City University of Technology, Vietnam in 2007. His research interests are SCADA system, real-time system software design and programming. He is a lecturer of Faculty of Electronic & Computer Engineering, Cao Thang Technical College, Vietnam. Currently, he is pursuing a M.S. Degree and doing research on modern SCADA system in the laboratory of Automation & Control, Ho Chi Minh City University of Technology. Truong Dinh Chau received his B.S., M.S. and Ph.D. degrees in Automation and Control from Faculty of Engineering Cybernetics, St. Petersburg State Polytechnic University, Russia in 1999, 2001 and 2005, respectively. His research interests are control system integration and real-time system software design and programming. He is a lecturer and the deputy head of Department of Automatic Control, Ho Chi Minh City University of Technology, Vietnam. Currently, he is a visiting research professor at Modeling Intelligence Process Systems laboratory, University of Haute-Alsace, France.

Das könnte Ihnen auch gefallen