{}

Our Brands

Impact-Company-Logo-English Black-01-177x54

Welcome to the Schneider Electric Website

Welcome to our website.
Search FAQs
You are currently viewing the content available in Vietnam. If you are looking for information for another region, please select the correct country from the top-left dropdown in the page and 'Navigate to Browse FAQs' in the Support menu.
How to manage 16-bit UINT (range 0-65535) variables inside a SoMachine/Machine Expert - Basic application?

The 16-bit variables %MWi are described as WORD, but they always work as INT => signed 16-bit value range (-32768, +32767).
=> this means the value 45000 in a %MW is seen as -20536, and it is not possible to enter any value >32767 from the animation table.

  • For local variables, if we know they are positive values with some maximum >32767 (it’s definition of UINT) then it is necessary to use a 32-bit format %MD instead a %MW into the whole program.

  • For variables (IN/OUT) exchanged with other devices, sometimes there is no choice, the 16-bit format of the variable is defined/fixed with the third party device.

Example: The object %MWa is written into the M221 over a Modbus communication, and you need to use this value inside the M221 application, within arithmetic operations.

In that case, it is necessary to use in addition to the initial %MWa, another variable %MDb and an operation to transform the %MWa into %MDb by keeping the initial positive UINT value.
For that purpose, you have to use the following operation:
%MDb := CONCATW (%MWa, 0)              // it’s forcing the upper word being 0
Result is :

If %MWa=2000;  then %MDb=2000

If %MWa=45000 (-20536 seen n the animation table);  then %MDb=45000

Schneider Electric Vietnam

Explore more
Range:
Articles that might be helpful Users group

Discuss this topic with experts

Visit our Community for first-hand insights from experts and peers on this topic and more.
Explore more
Range: