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
Trang 1Component-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, time design patterns,
real-time 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
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
© ICROS, KIEE and Springer 2010
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
Elec-tronics Engineering, Ho Chi Minh City University of Technology,
268 Ly Thuong Kiet, District 10, Vietnam (e-mail: tdchau@
hcmut.edu.vn)
Fig 1 Objects and their interaction in traditional SCADA software
Trang 2directly 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
trend-viewer, alarm-trend-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,
report-viewer, trend-report-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),
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 ponent is a piece of self-contained, self-deployable com-puter code with well-defined functionality and can be assembled with other components through its interfaces [4]
Fig 3 shows a program built with components Utili-ties of program are provided by client1 and client2 Client1 connects to component1 through interface1 to get service; client2 connects to component2 through inter-face2_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 compo-nent, 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
comput-er 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
Trang 3each other [2] The program consisting of components
running in different computers is called distributed
appli-cation 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
pro-gramming,…)
4 DESIGN PATTERNS
Design patterns were concerned first in [8] for
object-oriented 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
component-oriented 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
gen-eralized 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
de-scribed in section 3 give us the motivation of designing
component-oriented architecture for SCADA system to
overcome the limits of existing SCADA systems A
real-time design pattern can be applied to make the
architec-ture to be stable and more suitable with distributed
real-time systems The “component-based architecture”
pat-tern [3] is analyzed and applied into context of this
sec-tion
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
compo-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 com-puter (which stores specified server component in C:\MySCADA folder) and load server components Re-pository 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 re-pository 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 ser-vices 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 de-scribed 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 reposi-tory, 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 net-work 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
ad-dress {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
reposi-tory, 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 re-dundancy technology which is a complexity in automa-tion Redundant server package can be stored in specified
Fig 3 Component-based program
Fig 4 Component-based architecture design pattern in computer network context0
Trang 4folder 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
val-ue and by reference
When accessing an object by value (or marshaling by
value), client can not write value into server side,
be-cause 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
remot-ing SCADA application Moreover, the kind
server-activated-single-call of marshaling by reference can be
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 com-ponent is a server providing indicators and control ob-jects for plant picture in designer and runtime Trend, alarm and report components also are servers, they pro-vide their specific services (described in Section 2) for designer and runtime I/O driver server connects to phys-ical devices to acquire time data and provides real-time data for its clients (designer, runreal-time, trend, alarm, report) in the form of values of tags Database compo-nent 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 com-ponent framework are also in the same package These packages are installed in computers and these computers are clients The server components can be installed sepa-rately in many computers They can execute indepen-dently in their computers to provide their necessary ser-vices to clients
Fig 5 Activity diagram of searching mechanism of
component loader
Fig 6 Component-oriented architecture for SCADA system
Trang 5Fig 7 shows services of server components through
their interfaces These services are described bellow
In the client interface of trend, alarm or report
compo-nents, 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
me-thods: 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
me-thods: 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
me-thod 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
mechan-ism 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
declara-tion 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
tag-config-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 Update-Rate 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 val-ues provided by I/O driver server in runtime If indica-tors 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 avail-ability 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; other-wise, 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 Tag-config-file If there is no I/O driver component in net-work, 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 collec-tion to get or set tag values If there are trend-viewers, alarm-viewers, report-viewers, their corresponding serv-ers are searched and loaded to provide services for them Fig 7 Interfaces of server components
Trang 6many 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
com-ponents 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
implement-ing 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
De-signers 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
mechan-ism 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
reposi-tory of clients, the problem of searching is solved
Tak-ing advantage of many processors in distributed
compu-ting system and remocompu-ting 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 con-nects to a PLC Compactlogix and Kepware concon-nects 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 component-oriented 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 architec-ture 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
technolo-gy 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
Fig 9 A large-scale SCADA network system
Trang 7REFERENCES
[1] Y Serizawa et al., “Conceptual design for
distrib-uted 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,
O’Reilly, 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
Pro-gramming, p 319, Wiley, 2005
[5] Siemens, WinCC v6 Getting Started Manual, 2003
[6] Wonderware, Intouch HMI Concepts and
Capabili-ties Guide, 2007
[7] Advantech, GeniDAQ User’s Manual, 2000
[8] E Gamma, R Helm, R Johnson, and J Vlissides,
Design Patterns, Elements of Reusable
Object-oriented Software, Addison-Wesley, 1995
[9] J Bishop, C# 3.0 Design Patterns, p 290, O’Reilly,
2007
[10] T D Chau and N N Khai, “Web-based data
moni-toring and supervisory control,” Proc of the Int
Conference ISEE, 2007
[11] K Hamilton and R Miles, Learning UML 2.0, p
286, O’Reilly, 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
Ob-ject-Oriented Real-Time Distributed Computing,
2003
[13] B Atlagic, “Application development environment
of an integrated SCADA system,” Proc of
EURO-CON 2003, Computer as a Tool, The IEEE Region 8,
vol 1, pp 322-326, 2003
[14] F Moscato, N Mazzocca, and V Vittorini,
“Work-flow 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
[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 Crnkovi´c, “Component-based software engineer-ing - 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 Auto-mation 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 De-partment of Automation and Control, Faculty of Electrical and Electronics Engineering, Ho Chi Minh City Univer-sity 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 Tech-nology
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 Poly-technic 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