Johnson Controls Accelerates Industrial Controller Development for Magnetic-Bearing Centrifugal Liquid Chillers

“Using our previous approach, we’d still be working on the controller. With Model-Based Design we not only shipped it sooner; we also delivered a much more stable product. The controller is so finely tuned that 99% of our customers run the default configuration with no adjustments.”


Develop an advanced controller to maximize the efficiency of magnetic centrifugal chillers


Use Simulink and Stateflow to model, simulate, optimize, and verify the control design, and use Embedded Coder to generate C code for PIL testing and production deployment


  • Design iterations reduced from months to days
  • High-quality software delivered
  • Development accelerated
The YORK Magnetic Centrifugal Chiller (YMC2) system from Johnson Controls.

Large buildings, data centers, and other facilities rely on chillers to cool and dehumidify the air; they also provide chilled water for industrial and commercial applications. Heating ventilation and air conditioning (HVAC) systems often account for half of a commercial building’s annual total energy consumption, making them a good candidate for energy efficiency improvements.

YORK® Magnetic Centrifugal Chiller (YMC2) systems from Johnson Controls incorporate active magnetic-bearing technology, eliminating the need for oil-lubricated bearings and enabling chillers to consume less energy: 10–15% less than oil-lubricated variable-speed centrifugal chillers and up to 40% less than conventional fixed-speed chillers. In addition to this technology, the latest YMC2 systems incorporate redesigned variable-speed drives, evaporators, and advanced control systems.

Johnson Controls engineers used Model-Based Design with MATLAB® and Simulink® to develop the YMC2 chiller’s proprietary capacity control logic, which continually monitors and fine-tunes the chiller’s operations to maintain optimal performance.

“Model-Based Design enabled us to deliver a higher-quality control system faster than was possible with our traditional approach,” says Curtis Crane, senior staff engineer at Johnson Controls. “We designed a fully integrated control system in Simulink, verified and optimized it via simulation, and generated about 500,000 lines of code for our production chiller. The result is a system that reaches its set point faster, provides accurate control, and requires almost no configuration or maintenance in the field.”


Johnson Controls engineers sought to develop the next generation of a controller that had grown increasingly complex over the years. The earliest YORK chillers were equipped with pneumatic control panels; subsequent versions had electromechanical and electronic controls. Engineers based each new controller design on its predecessor, updating it to support new hardware features. Over time, the design was challenged as different control elements emerged and unintentionally worked against each other.

Johnson Controls also identified development process inefficiencies. New features and bug fixes had to be programmed in C, bench-tested, and then retested on the actual chiller, which resulted in slow iterations. Because debugging the handwritten code required numerous costly testing sessions on the chiller, it could take months to implement a new idea from a written specification. Johnson Controls decided not only to redesign the chiller control system but also to overhaul its development process.


Johnson Controls engineers used Model-Based Design to accelerate the development of a more efficient, more stable chiller control system.

The team modeled the controller in Simulink, using Stateflow® to create a hierarchy of state machines for the major components. Linear control elements, including proportional integral derivative (PID) controls, were implemented in MATLAB and integrated into the Simulink model using MATLAB Function blocks.

The control model included more than 30 referenced models, each comprising thousands of blocks.

In parallel with designing the controller, Johnson Controls engineers developed a chiller plant model in Simulink. The engineers conducted extensive closed-loop simulations using the control and plant models. Simulated scenarios included extreme temperatures and other conditions that were difficult or impossible to test on the real hardware.

Using Embedded Coder®, the engineers generated more than 500,000 lines of C code from their Simulink and Stateflow models. They created a processor-in-the-loop (PIL) test environment using PIL APIs and examples provided with Embedded Coder. After verifying the code via PIL tests, they conducted hardware-in-the-loop (HIL) tests with the software running on a production control panel.

The team implemented a logging feature that records data from the control panel every 100 milliseconds, and generated multiple plots of this data in MATLAB to assist with debugging and troubleshooting.

After testing, qualifying, and optimizing the software, Johnson Controls implemented the controller on a production YMC2 system.


  • Design iterations reduced from months to days. “With our previous approach it could take months to hand-code design changes and debug them on the chiller,” says Crane. “Using Simulink, we can update the model, simulate it, generate code, and have the updated controller running on the chiller in a day or two.”

  • High-quality software delivered. “Because we had thoroughly simulated the controller in Simulink, 99% of the problems uncovered during HIL testing were in areas other than the controller,” says Crane. “We’ve had no issues with the code generated by Embedded Coder.”

  • Development accelerated. “With MATLAB and Simulink we could—for the first time—see what was going on with our controls, which made debugging easier and accelerated development,” says Robert Turney, lead staff engineer at Johnson Controls. “Generating code instead of sending a design to be coded by programmers also sped development while minimizing human errors.”