Customizing Calibration Grid and Custom Pass/Fail Parameters
Suppose you wanted to do a couple things with a Calibration Test Point grid. For example - if you wanted to set your own determination for Pass/Fail. This can be done by first adding a custom event trigger for "Add Equipment (After)". In this same code you can also customize how Resolution and Truncation is displayed for each column - beyond the normal ways that Resolution is set. Setting PassFailOverride to True allows your "Override" code to occur for Pass/Fail. ResOverride tells your program to link fields to have their resolution pulled from other fields. You can also set "offset" for resolution. To have a field "truncate" data based on it's resolution, set the TruncFIELDNAME value to True.
You could use the following code:
sCompany = LookupEquipmentCompany
sID = LookupEquipmentID
If sID <> "" then
CurrentTolDir = ReturnFromSQL("SELECT TOL_DIRECTION FROM GAGES WHERE COMPANY='" & sCompany & "' AND GAGE_SN='" & sID & "'")
If CurrentTolDir = "SPECIAL TOL." then
PassFailOverride = True <-- This
ResOverride = True
TruncTol = True
SetResTol = True
ResFieldTol = "AV_RES"
TruncStandard = True
SetResStandard = True
ResFieldStandard = "NUM_RESOLUTION"
ResStandardOffset = 1
TruncExtra4 = True
SetResExtra4 = True
ResFieldExtra4 = "NUM_RESOLUTION"
ResExtra4Offset = 1
TruncExtra3 = True
SetResExtra3 = True
ResFieldExtra3 = "AV_RES"
TruncExtra5 = True
SetResExtra5 = True
ResFieldExtra5 = "AV_RES"
SetResAVResult = True
ResFieldAVResult = "AV_RES"
SetResExtra2 = True
ResFieldExtra2 = "AV_RES"
SetResUsedWarnTol = True
ResFieldUsedWarnTol = "AV_RES"
ResUsedWarnTolOffset = 2
else
PassFailOverride = False
ResOverride = False
end if
end if
Note: This would only change the grid for new events after equipment has been added - repeat this same logic in a "Event Launch (End)" to also catch this for events that are being edited.
To override the "Pass/Fail" result, you could use the code below in a "Test Point Before Post" Trigger Action:
If PassFailOverride = True then
dStandard = tpFieldByNameAsFloat("LINE_STANDARD")
dTolPlus = tpFieldByNameAsFloat("TOLERANCE1")
dTolMinus = tpFieldByNameAsFloat("TOLERANCE2")
dAsFound = tpFieldByNameAsFloat("RESULT1")
dAsLeft = tpFieldByNameAsFloat("RESULT2")
sFailed = tpFieldByNameAsString("OUT_OF_TOL")
sAdjusted = tpFieldByNameAsString("ADJUSTED")
sROV = tpFieldByNameAsString("ROV")
sLimited = tpFieldByNameAsString("LIMITED")
iAV_RES = tpFieldBynameAsInteger("AV_RES")
dCalTol = tpFieldByNameAsFloat("TEST_ACCURACY")
If (DualTolerance = True) then
dTolMinus2 = tpFieldByNameAsFloat("EXTRA_NUM3")
dStandard2 = tpFieldByNameAsFloat("EXTRA_NUM4")
dTolPlus2 = tpFieldByNameAsFloat("EXTRA_NUM5")
else
dTolMinus2 = dTolMinus
dStandard2 = dStandard
dTolPlus2 = dTolPlus2
end if
If ((tpFieldIsNull("RESULT1") <> "1") and (tpFieldIsNull("LINE_STANDARD") <> "1")) then
dCalcDev = (dAsFound - dStandard)
tpSetFieldByNameAsFloat("UTOLERANCE2_WARN", dCalcDev)
dCalcDev = RoundToDecimal(dCalcDev,iAV_RES)
tpSetFieldByNameAsFloat("AV_AS_FOUND", dCalcDev)
else
tpSetFieldByNameNull("UTOLERANCE2_WARN")
tpSetFieldByNameNull("AV_AS_FOUND")
end if
If (DualTolerance = True) then
If ((tpFieldIsNull("RESULT2") <> "1") and (tpFieldIsNull("EXTRA_NUM4") <> "1")) then
dCalcDev2 = (dAsLeft - dStandard2)
tpSetFieldByNameAsFloat("UTOLERANCE1_WARN", dCalcDev2)
dCalcDev2 = RoundToDecimal(dCalcDev2,iAV_RES)
tpSetFieldByNameAsFloat("EXTRA_NUM2", dCalcDev2)
else
tpSetFieldByNameNull("UTOLERANCE1_WARN")
tpSetFieldByNameNull("EXTRA_NUM2")
end if
else
If ((tpFieldIsNull("RESULT2") <> "1") and (tpFieldIsNull("LINE_STANDARD") <> "1")) then
dCalcDev2 = (dAsLeft - dStandard2)
tpSetFieldByNameAsFloat("UTOLERANCE1_WARN", dCalcDev2)
dCalcDev2 = RoundToDecimal(dCalcDev2,iAV_RES)
tpSetFieldByNameAsFloat("EXTRA_NUM2", dCalcDev2)
else
tpSetFieldByNameNull("UTOLERANCE1_WARN")
tpSetFieldByNameNull("EXTRA_NUM2")
end if
end if
sVerdict = tpFieldByNameAsString("VERDICT")
If sVerdict = "" then
iFromType = 1
elseIf sVerdict = "F" then
iFromType = 2
elseIf sVerdict = "A" then
iFromType = 3
elseIf sVerdict = "L" then
iFromType = 4
elseIf sVerdict = "R" then
iFromType = 5
end if
If iFromType = 2 then
CalFailed = (CalFailed - 1)
elseIf iFromType = 3 then
CalFailed = (CalFailed - 1)
CalAdjusted = (CalAdjusted - 1)
elseIf iFromType = 4 then
CalFailed = (CalFailed - 1)
CalLimited = (CalLimited - 1)
elseIf iFromType = 5 then
CalROV = (CalROV - 1)
end if
If (tpFieldIsNull("AV_AS_FOUND") <> "1") then
If (CDbl(Abs(tpFieldByNameAsFloat("AV_AS_FOUND"))) <= CDbl(dCalTol)) then
sNewVerdict = ""
else
sNewVerdict = "F"
end if
else
sNewVerdict = ""
end if
If sFailed = "1" then
sNewVerdict = "F"
end if
If sNewVerdict = "F" then
If (tpFieldIsNull("EXTRA_NUM2") <> "1") then
If (CDbl(Abs(tpFieldByNameAsFloat("EXTRA_NUM2"))) <= CDbl(dCalTol)) then
sNewVerdict = "A"
end if
end if
If sAdjusted = "1" then
sNewVerdict = "A"
end if
end if
If sNewVerdict = "F" then
If sLimited = "1" then
sNewVerdict = "L"
end if
end if
If sROV = "1" then
sNewVerdict = "R"
end if
sVerdict = sNewVerdict
If sVerdict = "" then
iToType = 1
elseif sVerdict = "F" then
iToType = 2
elseif sVerdict = "A" then
iToType = 3
elseIf sVerdict = "L" then
iToType = 4
elseIf sVerdict = "R" then
iToType = 5
end if
tpSetFieldByNameAsString("VERDICT", sVERDICT)
If iToType = 2 then
CalFailed = (CalFailed + 1)
elseIf iToType = 3 then
CalFailed = (CalFailed + 1)
CalAdjusted = (CalAdjusted + 1)
elseIf iToType = 4 then
CalFailed = (CalFailed + 1)
CalLimited = (CalLimited + 1)
elseIf iToType = 5 then
CalROV = (CalROV + 1)
end if
end if |