Welcome, Guest. Please login or register.
Did you miss your activation email?
May 27, 2012, 05:48:01 PM

Login with username, password and session length
Search:     Advanced search
* Home Help Search Calendar Links Login Register
+  Machsupport Forum
|-+  Mach Discussion
| |-+  Brains Development
| | |-+  Average stuff
Pages: 1   Go Down
Print
Author Topic: Average stuff  (Read 398 times)
0 Members and 2 Guests are viewing this topic.
matttargett4
Active Member

Offline Offline

Posts: 78


View Profile
« on: March 09, 2011, 02:11:30 AM »

Hi,

Im looking to take an average of an analogue input over a period of time, maybe also a couple of inputs averaged into one oem dro, im struggling to see how to do it with timers and things, any ides?

I need to do something like continuosly sample the inputs(s) and give an avergaed out put every 0.5s from the previous 0.5s.

Thanks

Matt
Logged
matttargett4
Active Member

Offline Offline

Posts: 78


View Profile
« Reply #1 on: March 09, 2011, 04:54:52 AM »

Have been thinking, would this be easier to do in a macro??

Do macros have access to all the same variables as brains, oem dro numbers etc etc??

Matt
Logged
poppabear
S S SYSTEMS, LLC
Global Moderator
*
Offline Offline

Posts: 1,707


Briceville, TN, USA


View Profile WWW
« Reply #2 on: March 09, 2011, 09:44:07 AM »

Yes, something like that would be better to do in a VB macropump, or a cyclic VB script.

   If you want to do averaging over a 0.5 seconds intervals, that would be 500ms or 5 updates of Mach3.
So, you could use 8 UDROs, one of the UDROs would be your counter DRO, one would be where your
current Analogvalue would be, and one would be the UDRO you use on your screen to display the average.
so you would need to feed your "currentAnaIn" DRO via Brians if your pulling that value in over the modbus,
or what ever device. (I didn't use select case since it has move overhead time wise). UDRO 2007 will be your
screens display dro.

so in macropump it might look like this:

'macropump.m1s

MyCurrentAnaIN =    GetUserDRO( 2000 )   'feed from your analog in
ValueOne =           GetUserDRO( 2001 )
ValueTwo =          GetUserDRO( 2002 )
ValueThree =        GetUserDRO( 2003 )
ValueFour =            GetUserDRO( 2004 )
MyCounterDRO =    GetUserDRO( 2006 )

If MyCounterDRO = 0 Then         'scan 1
SetUserDRO( 2001, MyCurrentAnaIN )   'fill ValueOne
SetUserDRO( 2006, 1 )         'MyCounterDRO
End If

If MyCounterDRO = 1 Then         'scan 2
SetUserDRO( 2002, MyCurrentAnaIN )   'fill ValueTwo
SetUserDRO( 2006, 2 )         'MyCounterDRO
End If

If MyCounterDRO = 2 Then         'scan 3
SetUserDRO( 2003, MyCurrentAnaIN )   'fill ValueThree
SetUserDRO( 2006, 3 )         'MyCounterDRO
End If

If MyCounterDRO = 3 Then         'scan 4
SetUserDRO( 2004, MyCurrentAnaIN )   'fill ValueFour
SetUserDRO( 2006, 4 )         'MyCounterDRO
End If

If MyCounterDRO = 4 Then         'scan 5
   'Take the average of the last 5 values, including the current on during scan 5
   'and update your screen UDRO 2007 to show your average every 0.5s
SetUserDRO( 2007, ( ( ValueOne + ValueTwo + ValueThree + ValueFour + MyCurrentAnaIN )/5 ) )
SetUserDRO( 2006, 0 )          'MyCounterDRO reset counter for next 5 scans.
End If

'enjoy, Scott
Logged

Commercial Mach3: Screens (regular and flash), Wizards, Plug-ins, Brains, PLCs, Macros, ATC's, machine build, retrofit and Prototyping
http://sites.google.com/site/volunteerfablab/
Pages: 1   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!