I joined Engineering department at Atlas Copco Airpower, Oilfree Air Division, in 2001. The first two
years as an employee of Amon Technologies and after the bankruptcy of that company in July 2003, as
an independent external consultant.
Atlas Copco was building a central controller for their compressors, with energy savings as main purpose.
ES 130
My initial role within this team was senior developer, responsible for the data management on the controller
and data upload to a web application.
Over the years, this role expanded to lead developer and eventually software architect responsible for
the architecture of their new controller, the ES 360
Overview of projects
ES 130
The ES 130 controls multiple compressors to achieve substantial power savings, better maintenance schedules
and a thorough monitoring of a compressor room via the internet.
The development team consisted of 1 project manager, 2 senior software developers, 2 junior software
developers, 4 support engineers. Development on the device was done using C and a limited version of
C++ without C++ exception handling and initially no STL. Desktop development, web development, configuration
and testing tools, were implemented using the .NET framework (1.1/2.0) using C# and Managed C++.
Technical environment
The hardware of the first controller:
- 206 MHz Intel StrongARM SA–1110 processor.
- 32MB SDRAM.
- 128 Kbytes of EPROM.
- 10 TTL Digital Software configurable Inputs/Outputs.
- 6x Analogue Inputs (0–7.5V).
- 2x COM ports.
- 1x Intel 82527 CAN port.
- 1x 10Mbps Ethernet port.
- Windows CE 3.0 operating system.
The hardware of the second controller (as drop–in replacement):
- Intel Celeron 400 MHz.
- 128MB SDRAM.
- 10 TTL Digital Software configurable Inputs/Outputs.
- 6x Analogue Inputs (0–7.5V).
- 2x COM ports.
- 2x Philips SJA1000 CAN port.
- 1x 10/100Mbps Ethernet port.
- Windows CE 4.2 operating system.
Operating Systems:
- Windows 2000, XP.
- Windows 2003 Standard edition.
- Windows CE 3.0, 4.x.
Technologies:
- .NET 1.0, 1.1, 2.0, COM.
- HTTP, XML, SOAP 1.1, Web services, ASP.NET.
- Network programming (TCP–UDP/IP) in C, C++ and .NET.
- RS232 and RS485.
- CAN, Modbus.
- SQL Server 2000, 2005.
Programming languages
- C, C++, Managed C++, C#.
- Visual Basic.NET, Visual Basic 6.0.
- T–SQL.
Project support tools
- Star UML (UML tool).
- Enterprise Architect (UML tool).
- MS Project.
- Subversion (versioning tool).
- NUnit (unit–testing).
- Bugzilla (Bug tracking).
My contributions to the ES 130 project:
- Introduced the waterfall development process.
- Data management and upload to web application.
- Created a test bed to test the upload, using a RAS server and an ASP.NET website. Functionality was
continuously added to this website so that after some time, it was used as an internal monitor and control
tool for monitoring and controlling test setups at customer locations from our offices.
- Ported the application to the desktop. This allowed us to use better development tools (visual studio
2003), better debugging tools (WinDbg, NuMega,) and better testing tools.
- Refactored the application to improve functionality separation, needed to implement new features and
support unit testing.
- Rewritten the device driver for the Intel 82527 CAN chip due to buffering issues with the original driver.
- Rewritten the CAN Application Layer because of data refresh issues in the first version.
- Implemented CAN over Ethernet.
- Implemented Modbus I/O for 3rd party integration.
- Implemented simple webserver, only HTTP GET functionality for 3rd party data requests.
- Analyzed, implemented and tested different regulation modes (Forced Sequence, Equal Wear, Group Management).
- Assisted in a lot of hardware trouble shooting.
- Closely involved in improving the regulation algorithm, including many site visits.
ES 130 support projects
Several sub projects supported the main project
Atlas Copco technical reference database (ATR):
Analyzed and developed the database that contains performance data of all standard and custom compressors
from Atlas Copco. This database is used by several applications within the divisions of Atlas Copco
Airpower. Before this database was available, all performance data was kept in Excel and Word files
or printed documents. The ES 130 and ES 360 use an extract of this database as input for their regulation
algorithm.
Developed an input/viewer desktop application for this database using .NET 2.0 and VB.NET. The class
library and data–access layer of this application were reused to develop a web service and a website
for internal applications.
ES 130 installation wizard:
Analyzed and implemented a desktop application to commission compressor sites. Developed in VB.NET 1.1
and afterwards ported to C#.NET 2.0.
Compressor room simulator for ES 130:
This application was intended for internal use and can simulate a compressor room on a desktop. VB 6.0
was chosen because of the urgency and the fact that the developer was well acquainted with this programming
language.
My main responsibility was to coach a junior developer in compressor–controller technology.
Implemented the different communication channels and protocols using C++, wrapped in a COM object for
use in the VB 6.0 application:
- CAN using IXXAT USB–to–CAN Interfaces.
- CAN over UDP/IP.
- Modbus over Ethernet.
Translated the mathematical models of different compressor types and air net to software using C++,
wrapped in a COM object for use in the VB 6.0 application. Refactored the software on the device to
be able to transparently switch communication channels and protocols.
ES 360
The ES 360 is implemented from the ground up with the knowledge and experience gained from the ES 130
project. Next to the ability to control more compressors, this controller can also control dryers, filters
and valves. The regulation algorithm was reworked to take the new devices into account.
Development started in 2007, with a team of 20 persons, in which I was responsible for the software
architecture of all involved applications:
Technical environment
The hardware of the controller:
- Intel Celeron 600 MHz.
- 256MB SDRAM.
- Wago digital and analog IO over CANopen.
- 2x COM ports.
- 2x Philips SJA1000 CAN port.
- 2x 10/100Mbps Ethernet port.
- Windows CE 6.0 operating system.
Operating Systems:
- Windows 2003, XP, Vista, Windows 7.
- Windows CE 6.0.
Technologies:
- .NET 3.5.
- HTTP, XML, SOAP 1.1, Web services, ASP.NET, LINQ.
- Network programming (TCP–UDP/IP) in C, C++ and .NET.
- RS232 and RS485.
- CAN, Modbus.
- SQL Server 2005.
Programming languages
- C, C++, Managed C++, C#.
- T–SQL.
Project support tools
- Star UML (UML tool).
- MS Project.
- Subversion (versioning tool).
- NUnit (unit–testing).
- Bugzilla (Bug tracking).
My contributions to the ES 360 project:
- Feasibility studies:
- Performance
- Structure
- Minimum hardware capabilities
- Development effort and time analysis to support project management using MS Project
- Defining software development ground rules:
- Source Control
- Project folder layout
- branching strategy
- coding standards
- Documentation of the main architectural components with UML and MS Word
- Implementation of the core functionality of the framework wherein components can be loaded, started,
stopped and unloaded.
- Implementation of several components that run in the framework.
- Creating templates for the components running inside the framework.
- Coaching, code reviews.
I remained available for occasional bug fixes and feature requests for the applications of the previous
version.
With source portability and reusability in mind, all platform dependencies were abstracted using C++
classes and many were compatible with the .NET library. (e.g.: threads, IO, data streaming, (de)serializers,
formatters, encoding …).
AirExpert
AirExpert will be a simulation engine which can simulate every aspect of an air net in software, with
varying degrees of accuracy, depending on the timescale in which the results are needed.
The first version will be used by Atlas Copco sales companies to support sales proposals for new and
existing sites. It will reuse source code and components developed for the ES 360 project and integrate
them into a desktop application. The user will be able to select a set of compressors and other air
net related components, together with a flow profile (measured, adapted or generated). When the simulation
is finished, a database will be available with the simulation data from which reports can be created
in Excel, Word ….
I performed the feasibility study, the preliminary development effort and cost estimation.
Project support tools:
- Star UML (UML tool)
- MS Project
- MS Word