Skip to main content
Skip table of contents

Open Phase Detection Algorithm Implementation

Rev

Date

Description

Author(s)

1

Initial proposal

Carlota Mejuto

Information

Key Summary Updated Due Assignee P Status Resolution Fix Versions

Data cannot be retrieved due to an unexpected error.

View these issues in Jira

Description

Data cannot be retrieved due to an unexpected error.

View these issues in Jira

Proposal

The aim is to implement an open phase detection algorithm, this issue has already been implemented in Auris for the JnJ project. Having looked through the relevant architecture of that product and compared it to comoco, it should be possible to port the implementation in Auris to comoco.

What does the JnJ solution consist of?

There was a list of several different apporaches that could be taken to implement an open phase detection algorithm outline in Open Phase Detection. However the JnJ solution did not focus on just one approach. There are three different algorithms whose usage depends on the speed at which the motor is operating. As the three algorithms are each better suited to an independent speed range. This makes the solution more robust.

Algorithm 1 - High speed range

This algorithm focuses on the current vector angle distribution. It will track how the current vector angle is distributed over time as the motor rotates via a buffer of 500 samples.

If operating under normal circumstances, the current vector should be rotating smoothly, its angle is evenly distributed across all sectors.

If one phase is disconnected, the current in the disconnected phase will drop to zero and the other two phase currents will become symmetric. Additionally, the current vector will no longer rotate continuously, it will instead oscillate between two angles 180° apart.

Algorithm 2 - Mid speed range

At mid range speeds, algorithm 1 is not as reliable as the lower speed means the buffer won’t be able to capture two full electrical cycles. Therefore a voltage and current angle distribution deviation algorithm was implemented.

As opposed to focusing on just the currect vector angle, this algorithm calculates the current vector angle distribution over an evolving timeframe and the voltage vector angle distrubution over the same timeframe. Once calculated, the two distributions are compared.

Under regular operation, the voltage and current angle distributions will match as the current will follow the applied voltage.

If a phase is disconnected, the current vector angle will oscillate around a fixed angle, as in algorithm 1, and the voltage vector angle will continue to change according to commutation. This entails a mismatch between the current and voltage vector angles.

Algorithm 3 - Low speed range

This algorithm is designed to detect an open phase fault when the motor cannot generate enough torque to move and is therefor stalled or close to being stalled. It consists of current error monitoring and will calculate the difference between the commanded direct current and the actual direct current, as well as the commanded quadrature current and the actual quadrature current.

The user will define an error threshold and timeframe. If the current error is present and it exceeds the user define threshold for the user defined timeframe, then the system will indentify it is in open phase.

For this algorithm to work, a movement command is a must. Otherwise, no torque will be commanded and the error won’t be detected.

What would the port entail?

The open phase implementation algorithms can be found in four different locations within motion-app:

  1. app.cpp/h for CPU1

    1. Call in PowerStageSetFrequency()

    2. Implementation related to new registers

  2. axis.cpp/h

    1. Call in Axis::Instance::Process()

    2. Call in Axis::Instance::EvntCB()

    3. New instance object in the axis for the open phase detection

  3. coprocessor_tasks.cla for CPU1

    1. Call inCla1Task1()

    2. Processing is only done if the power stage is enabled

  4. open_phase_detection.cpp/h

    1. New files to be created specifically for this proposal

Having compared these areas of motion-app to comoco-app, it seems that the relevant areas of the implementation in both products have enough overlap to be able to succesfully port the solution from JnJ to comoco-app.

Configuration Registers

  • Open phase detection - Switch point 1. Above this threshold (taking account hysteresis), the open phase algorithm 1 will be used for open phase detection. Below it, algorithm 2 will be used.

  • Open phase detection - Switch point 2. Above this threshold (taking account hysteresis), the open phase algorithm 2 will be used for open phase detection. Below it, algorithm 3 will be used.

  • Open phase detection - Hysteresis. Hysteresis value applied to the transition switch points of the open phase detection algorithm.

  • Open phase detection - Current following error window. Current following error window used for open phase detection

  • Open phase detection - Current following error timeout. Current following error timeout in milliseconds used for open phase detection

  • Open phase detection - Current distribution threshold. Threshold of current distribution above which an open phase error will be flagged.

  • Open phase detection - Timeframe threshold. Timeframe threshold of above which an open phase error will be flagged.

  • Open phase detection - Max. voltage and current distribution deviation. Threshold of voltage and current distribution deviation above which an open phase error will be flagged

Documentation in JnJ space of implemented solution

Open-phase detection

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.