This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

VAV Optimiser, Max Function
#1
Is there a way to do the following:

Today I write the highest value of tag MaxExtDmpPos to a virtual object. It works fine.
All values with in the tag will be considered in the function. 
If I want the function to check another value before  to include the value in this function.

Example: 6/5/28 is in MaxExtDmpPos tag. Another group-address for this VAV shows if it is any errors in the VAV. This group-address will be "True" if there is any error. 
If this is the case, I want 6/5/28 to not be included in the function. 
 

Script for the function:

Code:
function tag_max(tag)
  local objects = grp.tag(tag)
  local result = -math.huge

  for _, object in ipairs(objects) do
    result = math.max(result, object.value)
  end

  return result
end

max = tag_max('MaxExtDmpPos')
log(max)

grp.checkwrite('32/1/23', max)

Attached Files Thumbnail(s)
   
Reply
#2
Fault objects should have similar names to the value objects that you are using for calculation. You need to change the "search_for" and "replace_with" parameters in gsub so the value object name is converted to the fault object name.

Code:
function tag_max(tag)
  local objects = grp.tag(tag)
  local result = -math.huge

  for _, object in ipairs(objects) do
    local faultname = obj.name:gsub('search_for', 'replace_with')
    local faultobj = grp.find(faultname)
    local fault = false

    if faultobj then
      fault = faultobj.value
    end

    if not fault then
      result = math.max(result, object.value)
    end
  end

  return result
end
max = tag_max('MaxExtDmpPos')
log(max)

grp.checkwrite('32/1/23', max)
Reply


Forum Jump: