Up | Example 01 - Calculate Area | Example 02 - Calculate mean value | Example 03 - Manipulate the results from two LineFinders | Example 04 - Dynamic threshold | Example 05 - Auto Exposure | Example 06 - DrawLine | Example 07 - Overlays | Example 08 - Python Objects | Example 09 - Timing | Example 10 - Image Averaging | Example 11 - Image Resampling | Example 12 - Constant Contrast | Example 13 - Serial Communication | Example 14 - Python results | Example 15 - Making a result string | Example 16 - Running tools from a script | Example 17 - Image Manipulation using Python Scripting | Example 18 - Calculating the median angle | Example 19 - Iterating objects located by a blob | Example 20 - Resampling using non-linear calibration | Example 21 - Custom Scorpion Python extension | Example 22 - Accessing Image Pixels | Example 23 - Implementing a tcp/ip Socket Server | Example 24 - Setting ExternalReference from calculated four points | Example 25 - Rotating a reference around in a circle | Example 26 - Grabbing an image from an MOXA Video IP Server | Example 27 - Toolbox Switch | Example 28 - Color Matcher Iteration | Example 29 - Audio Notification | Example 30 - Windows MessageBox | Example 31 -  Client to tcp Socket Server | Example 32 -  Read / Write External Data from / to file | Example 33 - Changing a tool's ROI | Example 34 - Histogram Equalization | Example 35 - Robust Adam 6060 scripts | Example 36 - Bubblesort | Example 37 - Element Statistics | Example 38 - Saving 3D Image | Example 39 - Disabling Zoom in Image Windows | Example 40 - Filtering timeseries | Example 41 - Scorpion Watchdog keep system running | Example 42 - Binary Search | Example 43 - Creating an ordered pointcloud | Example 44 - UDP Socket Communication

 

  

 
Example 35 - Robust Adam 6060 scripts
This is an example on how you can make Adam 6060 modules handle disconnect without stopping

More information about Advantech - Adam modules

# Central Start
# -------------------------------------------
class Globals:
  pass

globals=Globals()

from adam6060 import * #Adam6060.py must be in the Python directory

try:
  globals.io=Adam6060('10.0.0.1')
except:
  print 'No connection'
  globals.IoOK=0
else:
  print 'Adam connected'
  globals.IoOK=1
  #Read Digital Input 0
  ok,txt,val=globals.io.ReadDI(0)
  globals.Cur=val
  #Reset all output relays
  #ResetOutputRelays()
# Central Stop
# ------------------------------------------
io.close()
def IsTrigger():
# ------------------------------------------
  if globals.IoOK:
    try:
      ok,txt,val=globals.io.ReadDI(0)
      if ok==0:
        globals.IoOK=0
        print 'lost connection to Adam'
      else:
        RisingEdge=val-globals.Cur
        globals.Cur=val
        if RisingEdge==1:
          print 'trigger detected'
          ResetOutputRelays()
          ExecuteCmd('GrabExecute','')

    except:
      globals.IoOK=0
      print 'lost connection to Adam'

  if not globals.IoOK:
    ReconnectAdam(1)
def ReconnectAdam(a):
# ------------------------------------------
  try:
    globals.io=Adam6060('10.0.0.1')
    print 'try to connect'
  except:
    print ' No connection with Adam6060'
    globals.IoOK=0
  else:
    globals.IoOK=1
    print ' Adam reconnected ','IoOK=',globals.IoOK

  if globals.IoOK==1:
    if a == 0:
      ResetOutputRelays()
    if a == 1:
      IsTrigger()
    if a == 2:
      SetOutputRelays()
def ResetOutputRelays():
# ------------------------------------------
  if globals.IoOK:
    try:
      ok,txt,msg=globals.io.WriteRelay(0,0)
      ok,txt,msg=globals.io.WriteRelay(1,0)
      ok,txt,msg=globals.io.WriteRelay(2,0)
      ok,txt,msg=globals.io.WriteRelay(3,0)
      ok,txt,msg=globals.io.WriteRelay(4,0)
      ok,txt,msg=globals.io.WriteRelay(5,0)
      if ok==0:
        globals.IoOK=0
      else:
        print 'Reset relays, output =0 0 0 0 0 0'
    except:
      globals.IoOK=0

  if not globals.IoOK:
    ReconnectAdam(0)
 
def SetOutputRelays():
# ------------------------------------------
  a=int(GetValue('Pass1.Value'))
  b=int(GetValue('Fault1.Value'))
  c=int(GetValue('Pass2.Value'))
  d=int(GetValue('Fault2.Value'))
  e=int(GetValue('Pass3.Value'))
  f=int(GetValue('Fault3.Value'))
  if globals.IoOK:
    try:
      ok,txt,msg=globals.io.WriteRelay(0,a)
      ok,txt,msg=globals.io.WriteRelay(1,b)
      ok,txt,msg=globals.io.WriteRelay(2,c)
      ok,txt,msg=globals.io.WriteRelay(3,d)
      ok,txt,msg=globals.io.WriteRelay(4,e)
      ok,txt,msg=globals.io.WriteRelay(5,f)
      if ok==0:
        globals.IoOK=0
      else:
        print 'New relay output',a,b,c,d,e,f
    except:
      print ' cannot connect'
      globals.IoOK=0
      
  if not globals.IoOK:
    ReconnectAdam(2)
 
 

 

 
 

Scorpion Vision Version XII : Build 646 - Date: 20170225
Scorpion Vision Software® is a registered trademark of Tordivel AS.
Copyright © 2000 - 2017 Tordivel AS.