Scanners use a parameter file to input the various camera, laser and calibration settings used for obtaining profile data. This technique allows simpler editing of parameters compared to other ways of adjusting the exposure, encoder, etc. A simple, commentable, text file can be saved, copied, and e-mailed, allowing for easier backup and long-distance diagnostics. Other techniques that involve a GUI can't be saved and copied as easily.

We've also worked hard to make as few of the parameters on a per-scanner basis, especially the encoder parameters. This means you can understand the workings of the system by glancing at a couple lines of parameters. There are per-scanner parameters, but they are things that are dependent on position, like exposure and calibration fixtures.

Case Sensitivity

The parameters are CASE SENSITIVE. This means you have to use the same case for parameters and names of Zones, ScannerConfigs, etc. Don't forget to capitalize the first letter of all the words for parameters that have more than one word (e.g., ScannerConfig).


Comments are started by a # sign and run until the end of the line.

Unicode Not Supported

The param.dat file should be saves as a straight ASCII, sometimes also called ANSI, file.  Saving in a UTF8 encoding will cause failures in sending the parameters to the scan heads.  Editors link notepad++ have a encoding settings where you can convert a file to save as ANSI/ASCII.

ScannerConfig Blocks 

Value Format:

ScannerConfig YourScannerConfigNameHere CableID, ..., CableID
    # Parameters Here

There can be multiple ScannerConfig blocks in a single parameter file, each one controlling different Cable IDs. However, a Cable ID can only appear in the list of one ScannerConfig block, otherwise saving the parameters will return an error and the parameters will not be loaded.

Sample Configuration File

Let's imagine a board edging system with four scanners:

  • Scanners 0 and 1 scan opposite sides of the first half of a board, scanners 2 and 3 scan opposite sides of the second half of a board.

  • Scanners 0 and 2 are on the left, 1 and 3 are on the right.

  • The laser end of the scanners is closer to the infeed than the camera end of the scanners.

  • The encoder pulses 4000 times per sprocket rotation, which moves the chain 18.75 inches.

  • You want to scan the board with one-inch spacing.

Here's an example scanner configuration file.

#A ScannerConfig named "Scanners" that applies to Cable ID's 0 through 3
ScannerConfig Scanners 0, 1, 2, 3
	#The lasers are on the downstream end of the chain
	LaserUpstream	false

	#The scanners calibrate against a fixture named "Circles"
	CalibrationFixtureNames	Circles

	#The scanners work in "shifts"
	StaggeredScanning	true

EncoderPulseInterval  0.0046875 # = 18.75 / 4000 How far the belt moves per encoder pulse
EncoderScanInterval   1.0       #This is the distance between scans
NumberOfPhases        2         #Break the EncoderScanInterval into this many pieces

TriggerPhase 0 : 0, 2  #Scanners 0 and 2 scan at the beginning of the inch
TriggerPhase 1 : 1, 3  #Scanners 1 and 3 scan at the middle of the inch

Zone FirstZone	0, 1   #You can view scanners 0 and 1 at the same time in Graph View
Zone SecondZone 2, 3  #You can view scanners 2 and 3 at the same time in Graph View

#A CalibFixture named "Circles" -- the name can be anything you want
CalibFixture Circles
	CircleFeature 1.0 2.0 3.0 #Radius is 1.0" Centered at the coordinates (2.0", 3.0")
	CircleFeature 2.0 5.0 6.0 #Radius is 2.0" Centered at the coordinates (5.0", 6.0")

LaserUpstream is set to false to indicate that the laser end of the scanner is downstream.

CalibrationFixtureNames means the scanners calibrate with the fixture named "Circles". These fixtures are defined later (or before) in the parameter file.

StaggeredScanning means the scanners operate in "shifts". First TriggerPhase 0 goes, then TriggerPhase 1, then the next TriggerPhase, etc.

EncoderPulseInterval means that each pulse of the encoder moves the belt 0.0987654 units of distance. You can use the distance units you prefer, like meters, as long as you use the same units for all the encoder parameters. This example will assume that distance is measured in inches.

EncoderScanInterval tells the scanner how far the belt should move in order to trigger another scan.

NumberOfPhases is the number of "shifts" the scanners will work in when they're scanning in synchronized mode.

TriggerPhase means that scanners 0 and 2 will scan first, then scanners 1 and 3 will scan. This prevents the scanners from seeing each other's lasers, if, for example, scanner 0 is on the left side of the part of the board that scanner 1 is on the right side of.

Zone means that scanners 0 and 1 are scanning the same part of the object (probably opposite sides) and that scanners 2 and 3 are both scanning the a different area of the same object. Zones are used in JSDiag to watch live profile data from only the scanners in that zone.

CalibFixture is a description of the calibration fixture that will be used to calibrate the scanners with.

In general, it is best to include only the parameters for which the default parameter is not sufficient. This will prevent someone from accidentally changing a value at a later date.

You can store multiple ScannerConfig's in the same parameter file as long as each one has a different name. In addition, each Cable ID may only be listed in one ScannerConfig block.

  • No labels