Posted 23 Feb 2017 Hi at all! A little brief to understand my situation... I'm creating a new project with an analog input (4-20mA) to determine the level of a tank. The instrument send me a value that correspond 4mA => 0% and 20mA => 100%. With the AI_Conditioner UDFB from RA i can correctly rescale the mA value to a %. Then I need to "estimate" the volume of that tank, so with radius and lenght i can calculate it (no problem so far). But after that, the value is too much variable (the 4-20mA is not very stable)... So to resolve I can accept to rounding to the nearest 20... But, how can I do? There is already an UDFB made for it? Thank you at all! Share this post Link to post Share on other sites
Posted 23 Feb 2017 (edited) Your 4-20mA signal is varying too much, correct? The analog input is scaled from 4-20mA to 0-100%; the overall scaled value bounces significantly. There may be a rounding UDFB, but I am not aware of one. My suggestion...either average the scaled analog register or timed move of the scaled analog register. A free-running timer that moves the scaled analog value to another register after one-shot event of the timer being done, before you reset the timer. We often pursue this "debounce timer" method with proximity sensors to insure they are ON for time before accepting their state. Lastly, a wise guru on a similar post suggested a great idea that often gets overlooked...filtering. Logix allows for some I/O points to have filtering functions that can be enabled. I am not familiar with the Micro820 to know if it has this ability (typically in Controller Tags, look at the default TAG.FEATURE to find the filter parameter. Filtering the analog signal will do similar as adding a debounce timer. Edited 23 Feb 2017 by kaiser_will Share this post Link to post Share on other sites
Posted 24 Feb 2017 Hi kaiser_will, thank you for your answer! I've try to check the Micro820 tag feature but I think that it doesn't have the "filtering" options... So I think that rounding the volume result will be the simpliest choice... but I don't know exactly how to do it... Share this post Link to post Share on other sites
Posted 24 Feb 2017 I'm not familiar with the Micro820, but I assume the ANY_TO_DINT instruction will round off a Real value. CalcVol_REAL / 20.0 = TempVol_REAL TempVol_REAL > ANY_TO_DINT = TempVol_DINT TempVol_DINT x 20 = RoundedVol_DINT 1 person likes this Share this post Link to post Share on other sites
Posted 28 Feb 2017 Sorry for delay of my answer... For now I try another solution... Thank you at all for your answers but if someone can tell me anyway how to rounding a value... Thank you! Share this post Link to post Share on other sites