IOScanner will be much easier to use than the explicit message blocks such as ReadReg or MSTR - no question.
The whole idea is the data is collected from the scale and placed into the memory words every time the RepRate is triggered - you would have configured that when you configured IOscanner (or left at default, which used to be around 60ms). So every RepRate period, IOscanner will ask the scale for new data.
So your current values should be in those %MW registers you described. Just compare directly those registers, no need for anything else. Some people will move them first into other locations or data structures or do conversions - all good stuff if you need to do it - but you can add enhanced functionality later.
As you move along with this, you will want to include the health bit into your logic, so that if there is a communications issue, you can use this bit to inform the logic and make decisions - like perhaps perhaps not comparing the values of what's in the register because you know it is not fresh and raising an error. Exactly what to do is dependent on the application, but once you have your base logic in place, you can add this error trapping later.