brands · South Africa
Unity Pro to Control Expert: Files, Data and Regression
Plan Unity Pro to Control Expert migration with archive formats, data preservation, compatibility checks and worked signedness regression tests for words.

A Unity Pro to EcoStruxure Control Expert migration needs a recoverable source project, compatible software and a way to demonstrate that the required behaviour survived. Opening a file is only one step. Project structure, device dependencies, data representation, current values and external interfaces all need their own checks.
This guide separates those checks and develops a fictional regression exercise for unsigned and signed 16-bit interpretation. The exercise shows how the same bits can produce a different comparison result after an incorrect type change. It is not a report of a Schneider migration defect or a native project conversion performed by this site.
Sources were checked on 13 September 2026. We operate PLC Simulation Software and may benefit from its links. General programming practice can support preparation, but it does not provide native Unity Pro or Control Expert migration, vendor engineering licences or a verified production cutover.
Identify exactly what is changing
Write down the source Unity Pro release and updates, target Control Expert release, controller reference and firmware, libraries, device integration packages and connected HMI or supervisory interfaces. Distinguish an engineering-software update from a controller replacement, firmware change or application redesign. Combining them may be necessary for a project, but each change adds a separate reason for behaviour to differ.
Keep the original environment usable until the recovery approach is established. Preserve the source files in a separate location and record which software last opened and built them. A filename containing “final” does not prove that it matches the running application or includes the dependencies needed for reconstruction.
Identify who owns protected components and how authorised support will be obtained. A missing library, password or device package is a dependency to resolve, not a reason to invent a replacement block from its name. Record unresolved items before selecting a target environment.
The Control Expert project structure guide explains the relationship between data definitions, program organisation and function block instances. Use that map when making the inventory so that a list of sections is not mistaken for a complete description of the application.
Export suitable archive and exchange files
Schneider's pre-update instructions recommend preparing archive and exchange files in the existing environment. The document distinguishes version-dependent STU project files, STA archives and XEF or ZEF exchange files. It describes XEF as excluding global DTM configuration and ZEF as including it; importing an exchange file requires a full rebuild. An STA archive requires a project that can be successfully built.
Use those distinctions to plan the evidence package, then check the compatibility rules for the actual source and target. Do not turn a general description of exchange formats into a promise that every future or older version accepts every feature. Keep the source STU as part of the record, alongside the appropriate prepared exports.
Schneider's software compatibility guidance directs readers to the installed help's application, software and controller compatibility tables and recommends keeping archive and exchange backups before upgrading. Use the relevant release documentation rather than assuming a universal intermediate-version route.
Test that the prepared files can be read in a controlled environment before relying on them as recovery evidence. A copy operation can succeed while the wrong file was copied. Record the file identity, size, date, source environment and a checksum in the project notes so the team can distinguish the preserved original from later working copies.

Separate application files from current operating data
A program archive and a snapshot of current values answer different questions. The archive describes the application. Current values may include accumulated totals, operator settings and function block state. Identify which of those values matter, who owns them and whether they remain meaningful in the target design.
Schneider's DTX file FAQ describes saving selected located and unlocated data and function block instances, with prerequisites including a built project matching the connected controller. It also states that I/O and Device DDT objects cannot be saved in DTX files and that SFC variables cannot be restored. Treat those exclusions as part of the plan rather than assuming one snapshot contains all application state.
Create a data inventory with the variable name, type, units, meaning, source of the saved value and intended restoration decision. A retained runtime counter, a temporary calculation and a command request should not automatically receive the same treatment. Some values should be reconstructed or deliberately initialised according to the application requirements.
Test a proposed restoration in the appropriate controlled environment and compare the resulting values with the intended record. File creation alone is not proof of correct restoration. Keep restoration evidence separate from the evidence that the application builds, because either operation can succeed while the other requirement remains unresolved.
For a real operational change, use the responsible site's change process and the matching vendor procedures. This educational article is not a sequence of live download commands. The useful preparation is a reviewable plan with explicit expected outcomes and recovery decisions.
Review differences before accepting the new project
Compare hardware configuration, data types, variable locations, reusable blocks, executable logic and external interfaces. Give each meaningful difference an explanation. A renamed section can be harmless, while a changed unit or signedness can alter behaviour even if the screen looks familiar.
Schneider's Control Expert DIF readme describes project comparison across configuration, types, variables, programs and other project areas, with file and version restrictions. A comparison tool can help locate differences; the engineering requirement determines whether each difference is acceptable.
Keep the actual build and import diagnostics. Do not classify every warning as safe merely because the build completes. Record the affected object, the vendor explanation where available, the intended resolution and the test that demonstrates the result. Invented example messages should never be presented as evidence from a real conversion.
For device-generated structures, compare the dependencies as well as the visible fields. A library or device integration update may alter a type's definition. Our Control Expert data and DFB guide explains why apparently matching names can conceal a structural mismatch.
Worked regression: preserving unsigned comparison meaning
Consider a fictional application that receives a 16-bit word representing an unsigned count from zero to 65,535. Its decision output is true when that count is at least 50,000. The requirement concerns an unsigned number; it is not an analogue scaling rule, a physical alarm recommendation or a Schneider hardware limit.
The original mathematical decision is: accept a whole-number value in the unsigned range, then compare it with 50,000. For invalid inputs, return Invalid and do not produce a valid decision. A native word field cannot represent every malformed software-harness input, so the native test interface needs an appropriate validation or quality representation.
A careless adaptation might reinterpret both the count and the threshold as signed 16-bit values and then perform a signed comparison. The bit pattern for 50,000 becomes minus 15,536 under that interpretation. The mistaken decision is therefore whether the reinterpreted signed count is at least minus 15,536.
Reinterpreting bits is different from preserving the numeric meaning. Values zero through 32,767 remain non-negative in the signed interpretation. Values 32,768 through 65,535 become negative by subtracting 65,536. The order of the full unsigned range is no longer the order used by a signed comparison.
The fictional mistake is deliberate and manually constructed. This page does not claim that Control Expert automatically changes a word into a signed integer or performs this transformation during import. The exercise teaches what a regression test should catch if a human or application change introduces that mismatch.

Hand-check the sign boundary and the decision threshold
For a raw count of zero, the correct unsigned comparison is false. The mistaken signed comparison sees zero as greater than minus 15,536 and returns true. That is a false positive at a value that should be an easy test case.
At 32,767, the unsigned decision is still false and the mistaken signed decision remains true. At 32,768, reinterpretation produces minus 32,768, which is less than minus 15,536. Both comparisons now return false, but agreement at this one value does not establish equivalence.
At 49,999, the signed interpretation is minus 15,537. Both decisions are false. At 50,000, both become true because the signed value equals the reinterpreted threshold. At 65,535, the signed value is minus one and both decisions remain true.
| Raw unsigned count | Signed interpretation | Correct decision | Mistaken signed decision |
|---|---|---|---|
| 0 | 0 | False | True |
| 32,767 | 32,767 | False | True |
| 32,768 | -32,768 | False | False |
| 49,999 | -15,537 | False | False |
| 50,000 | -15,536 | True | True |
| 65,535 | -1 | True | True |
Testing only the threshold neighbourhood could miss this defect. Values 49,999, 50,000 and 50,001 all produce matching decisions in both implementations. The sign boundary and the lower range are separate partitions that need explicit coverage.
The correct decision is true for 15,536 of the 65,536 possible unsigned values. The mistaken comparison is true for those values plus all 32,768 values in the lower half of the unsigned range. Its total true count is therefore 48,304, with 32,768 false positives and no false negatives for this particular exercise.
Exhaustive checks make a small domain useful
The complete unsigned 16-bit domain is small enough for a reference test to compare every input. The local model does that and verifies the counts above. Exhaustive agreement would establish equivalence for this one stateless decision over its declared domain; it would not prove the entire application or its timing.
The corrected educational adapter converts a signed representation back to its intended unsigned numeric value before comparison. If the signed value is negative, add 65,536; otherwise retain it. Validate that the signed input is a whole number from minus 32,768 through 32,767. Then apply the original threshold to the reconstructed unsigned number.
This mathematical adapter is a specification, not a recommended native instruction sequence. Select supported native types and conversion operations from the matching Control Expert documentation and verify their behaviour. Avoid relying on an implicit cast whose signedness or overflow behaviour has not been established.
Test malformed values outside both contracts: minus one is invalid as an unsigned input, while 32,768 is invalid as a signed input. Fractions, missing values and non-finite numbers are invalid in the reference harness. An error path must not quietly become a valid false decision.
Our data conversion reference explains the wider distinction between representation, range and engineering meaning. Use it when reviewing changes to counters, bit fields and supervisory data, where a matching decimal display can conceal a different underlying contract.

Extend regression coverage to sequence behaviour
The worked comparison has no stored state. A real application may also contain timers, counters, sequences and function block instances whose outputs depend on earlier inputs. Build separate traces for those behaviours rather than assuming a set of isolated values covers them.
For each stateful test, record the initial state, input changes, execution opportunities and expected output after each step. Include an ordinary sequence, an interrupted sequence and a recovery sequence that matches the declared requirement. Explain whether the test begins from initialised state or from a deliberately prepared snapshot.
Keep the same initial conditions when comparing source and target. If one test begins with a zero counter and the other with a restored count, a different output may be explained by the setup rather than a migration defect. Preserve enough evidence for a reviewer to reconstruct that distinction.
Test external interfaces independently. Record the address or symbolic binding, data type, scale, units and interpretation used by the HMI or supervisory client. A controller calculation can remain correct while its consumer reads the wrong location or interprets a word differently.
The communication troubleshooting guide helps separate transport success from correct application data. Receiving a response is not evidence that the response represents the intended variable with the intended meaning.
Define acceptance gates and a recovery decision
Start with an offline gate: the source package is identified, target dependencies are available, the project builds and meaningful diagnostics have been resolved or explicitly accepted with evidence. Next, require relevant software behaviour tests. Then define the hardware and integration checks appropriate to the actual installation.
Write a clear pass condition for each check. “Looks normal” is too vague for a comparison. A useful condition names the input sequence, expected state and allowable difference, such as a numerical tolerance where floating-point calculations are involved. Do not apply one tolerance to unrelated values with different units.
Define who makes the operational decision and what evidence they need. Record the recovery point, the known-good application and required data, and how a failed acceptance check affects the plan. Recovery should be concrete enough to evaluate before the change rather than an instruction to “put the old program back” with no matching files.
A firmware update is a separate compatibility and procedure decision. Do not choose the latest firmware solely because it is newer. Identify the reason for the change and verify the required combination of controller, application and software using the relevant documentation.

Build a migration portfolio without overstating the result
For a classroom project, submit the source and target environment descriptions, file inventory, relevant difference report and regression results. Include one intentionally introduced defect, such as the signed comparison above, and show how the test identifies it. Label the data and application as fictional where appropriate.
Keep native evidence distinct from reference-model evidence. A mathematical model can establish expected answers. A native build demonstrates that the chosen project is accepted by that toolchain. Native execution demonstrates another part of the requirement. Hardware and integration evidence address additional boundaries.
A useful reviewer should be able to answer three questions from the portfolio: what changed, what behaviour was required to stay the same, and what remains unverified. A long collection of screenshots without those answers is harder to evaluate than a concise trace with the correct context.
For South African learners maintaining older Modicon applications, ask a provider whether its course covers archive preparation, compatibility checking and regression design. A beginner programming course can provide foundations, but it should not be marketed as a complete migration qualification without an appropriate syllabus and assessment.
The Schneider PLC training hub connects the supporting topics. The M340 and M580 comparison helps frame controller requirements if hardware selection is also part of the project. Keep that decision separate from a software-only update in the learning plan.
Practice the transferable skills before native work
Use small data-conversion and test-design exercises to prepare for vendor-specific instruction. The product's PLC data type learning material and PLC program testing resources describe general learning options. Verify the current scope before buying; they do not convert native Unity Pro files.
Training managers can use the training-centre evaluation guide to assess whether learners can explain a mismatch and produce reproducible evidence. For the unsigned comparison, ask why the threshold-only tests pass while half the domain is still wrong. The answer demonstrates a deeper understanding of test partitions than simply quoting a pass count.
Unity Pro migration questions
Can I rely only on an old STU file?
Prepare appropriate archive and exchange files in the source environment and verify compatibility for the actual versions. Preserve the STU as part of the record, but do not assume it is a universal cross-version interchange format. Test the recovery package before depending on it.
Do XEF and ZEF carry the same device configuration?
The checked pre-update guidance distinguishes XEF without global DTM configuration from ZEF with that configuration. Identify the dependencies your project uses and verify the relevant release rules. An export filename alone does not demonstrate a complete, recoverable environment.
Does a DTX file preserve every kind of state?
No. The documented exclusions include I/O and Device DDT objects, and SFC variables cannot be restored. Inventory the values that matter and verify the appropriate method for each category. A program archive and a current-data snapshot have different roles.
Does a successful build prove equivalent behaviour?
It proves an important toolchain step, but it does not establish every numerical, sequence or interface requirement. The fictional signedness example can produce plausible threshold results while failing elsewhere. Use explicit regression cases and the required native execution evidence.
How many inputs fail in the worked signed comparison?
There are 32,768 false positives: every unsigned input from zero through 32,767. The local reference check enumerates all 65,536 possible unsigned values. This is evidence about the deliberately constructed mathematical defect, not a measured vendor migration failure rate.
