Pico Systems FAQ

More
21 Nov 2011 05:04 - 30 Apr 2013 11:25 #14977 by jmelson
Pico Systems FAQ was created by jmelson
What products does Pico Systems offer for use with LinuxCNC?

For use with axis drives that take step and direction signals,
we have the Universal Stepper Controller. It controls up to
4 motion axes and is capable of generating steps up to
300,000 steps per second/axis. It is also capable of reading
encoders on one or more axes instead of running open-loop.
If the motor stalls, LinuxCNC will be able to detect it and all axes
can be stopped. The USC also has an output that can drive
a DAC for spindle speed control, and 15 digital inputs for
home and limit switches. It is connected to the computer via
the parallel port in EPP mode. Two boards can be "daisy-chained"
if additional axes are required.

For use with servo amplifiers that take a digital PWM signal,
we have the Universal PWM Controller. It has four encoder counters
that can count quadrature encoder signals up to one million
counts per second. It has four PWM generators that are clocked
at 40 MHz, therefore it can produce PWM resolution of 25 ns.
(For instance, at 50 KHz, it has a resolution of one part in 800.)
The UPC also has an output that can drive
a DAC for spindle speed control, and 15 digital inputs for
home and limit switches. It is connected to the computer via
the parallel port in EPP mode. Two boards can be "daisy-chained"
if additional axes are required.

For use with analog velocity servo amplifiers (commonly referred
to as +/- 10V) , we have the PPMC
(Parallel Port Motion Control) which is a configurable set
of boards that plug into a motherboard. There is a 4-axis encoder
counter board, a 4-axis digital to analog converter board and a digital
I/O board. These boards can be plugged into the motherboard in
whatever combination is needed to supply the inputs and outputs
for your particular machine configuration. Up to eight boards can be
plugged into the motherboard, an additional motherboard can be added
if more boards are needed.

Where can I get more info on these products?
pico-systems.com

***** Universal Stepper Controller *****

Initial setup of the Pico Systems Universal Stepper Controller (USC).
First, you need to establish reliable communications between the
LinuxCNC PC and the USC. A parallel port cable with DB-25 male on one
end and DB-25 female on the other is required. But, this cable
**MUST** be made specifically to be IEEE-1284 (parallel port EPP
mode) compliant. Ordinary 25-pin cables are not suitable due
to crosstalk between the wires. The cable should have "IEEE-1284
compliant" printed right on the cable jacket.

Download the USC diagnostics program from
pico-systems.com/codes/univstepdiags.tgz
It is best to download this directly onto the LinuxCNC system using the
Firefox web browser, to avoid any file translation problems.
But, you can download it with another system and browser, and then
copy it over. The file is unpacked with this command, executed from
a terminal (command line) window:
tar xzvf univstepdiags.tgz
This will unpack the executable file univstepdiags into the current
directory.

Execute the program with a command line like this :

sudo ./univstepdiags 378 bus

This uses sudo to give the program the necessary priveledges to
access the parallel port hardware. On the next line it will ask
for the user's password. If you have the system set up for
automatic login without password, you need to remember what
password you gave during the LinuxCNC install.

the "./" is required syntax for the bash shell to execute
a program from the current directory. univstepdiags is
the name of the diagnostic command.

The 378 is the hexadecimal address of the default parallel port.
If your parallel port has a different address, enter that
after the command name.

bus is the function of this program to use first, to make
sure the diagnostic can communicate with the board. If it
is successful, it will give a list of the 16 possible device
addresses on the parallel port and what board it finds at that location.
(Note the USC ties up two consecutive addresses, so if a board
is found at the default address of zero, the diag will skip address
1, as it is also used by the USC.)

If this test is successful, then use the communication reliability
test like this:
sudo ./univstepdiags 378 commtest
This test loads random values into the encoder counter registers
and then reads the value back. If the values disagree, an error
is reported. If they agree, only every thousand tests is reported,
with a cumulative error count. If 100,000 test cycles can be
performed with no error, then it can be assumed that communications
are reliable. The test can be ended with the ctrl/C character.

Finally, you need to satisfy the emergency stop circuits to
allow the board to come out of the power-up state of E-stop.
A closed connection from EG to Input 15 will cause the green LED
LED9 to light up, indication the E-stop switches are all in
the OK (closed) condition. You want to wire all your manual
Estop switches in series, using the normally closed contacts.
Thus, when any switch contact is opened, the USC goes to
E-stop mode, and also tells LinuxCNC of the condition.

You can check the condition of digital inputs with this
command :
sudo ./univstepdiags 378 diocontinuous
This continually reads the digital inputs and displays
them on the screen, 1 for a closed input circuit, zero
for the open circuit. All digital inputs are wired from
EG to the digital input desired. WARNING!! Note that
this program ALSO writes a rippling pattern to digital
outputs 1-7 and turns on digital output 8 (indicating the
out-of-Estop condition). If you have solid state relays
in positions 1-8 connected to external devices, make sure they
are disabled or will not create a hazard when turned on.

Step Ouputs:
The step outputs of the USC drive the output to +5 V during a
step pulse. This is ideal for motor drivers that have a
common ground or universal common for the step and direction inputs. The common
terminal should be connected to one of the ground terminals on the USC.
On motor drivers that only provide a common + 5 V terminal, there could
be a problem with the direction pulse changing while the step input is
low.

Timing of step pulses can be adjusted with parameters in the univstep_motion.hal
file.

setp ppmc.0.stepgen.00-03.pulse-width-ns 3500
This command sets the width of the step pulses to 3.5 microseconds for all 4
step outputs on the first board. Different step timings can be set for each board,
but all step generators on the same board need to have the same timing.


setp ppmc.0.stepgen.00-03.pulse-space-min-ns 3500
This sets the minimum timing between coonsecutive step pulses on the same axis.
This example sets the time to 3.5 us.
Note that the pulse-width-ns plus the pulse-space-min-ns sets the maximum
step rate. In the above example 3.5 + 3.5 = 7 us, which equals a maximum
step rate of about 140,000 steps/second.

setp ppmc.0.stepgen.00-03.setup-time-ns 1000
This line sets the time before and after a direction change where step pulses
are not permitted. This allows the step driver to be sure which direction
each step pulse was meant to move in. The above example sets it to one
microsecond.


Digital Inputs:
There are 15 general-purpose digital inputs on the UPC board. These are
electrically isolated from the logic circuits on the board, and powered
by an isolating DC-DC converter. Grounding any of the inputs (0 -- 14)
to terminal EG turns that input on. Digital input 15 is dedicated to the
E-stop function. A green LED (LED 9) will light when the E-stop chain
is complete.

Digital Ouputs:
There are positions on the board to mount up to 8 solid state relays such
as the Crydom D2W202F (2 A, 240 V AC). You can also mount DC power
SSRs and signal -level SSRs (Pico Systems makes their own signal-level
DC SSRs as there seems to be nothing on the market with the right pin
spacing at a reasonable cost.
To use the SSRs, you need to either place a Pico-II fuse (from
Littelfuse, available through Mouser, Digi-Key, etc.) or a piece of
#24 wire in the fuse position next to the SSR. Fuses of 2A up to
5A can be used, 5 A is the limit for the connectors and board traces.

Switch settings :
There is a 10-position DIP switch that configures some options of the
board. Switches 1-4 should be set to OFF to use the board in open-loop mode,
where the step pulses are counted to maintain position. Switch one
corresponds to the first axis, typically X. Switches 2-4 apply
to the next consecutive axes. If these switches are in the ON position,
then the board accepts quadrature encoder inputs at connector P3 or J3
to sense machine position.

Switches 5-8 select the output format to the drives. When ON, the
output is step and direction. When OFF, the output is a full-step
wave drive sequence, which is identical to a quadrature encoder counting
sequence. Each switch controls one axis.

Switch 9 is normally left ON, where the timing of the direction signal is controlled
by the PPMC driver in LinuxCNC. When this switch is OFF, the direction signal
may only change at the beginning of a step pulse. This is to accommodate some
Gecko drives with step multiplier boards.

Switch 10 is normally left ON, to make the board appear on the bus at
address zero. If the switch is turned OFF, the board responds to
address 2, allowing two USC boards to be used on one parallel port.
A short ribbon cable can connect the first board to the second.

Jumpers:

JP4 is the only jumper of interest to the user. This jumper turns the
watchdog timer on or off. In the on position, the watchdog will put
the board into the E-stop state if it gets no commands from the
computer for 20 milliseconds. This will stop all PWM pulses immediately,
shut off all solid state relays, and also turn off the spindle
DAC if it is installed. If the jumper is set to off, then the only way
to go to the E-stop state is via software command or breaking the
E-stop switch chain. This jumper needs to be off for certain diagnostic
programs to run. It should be set to ON when operating under LinuxCNC.

****************** UPC ***************

Initial setup of the Pico Systems Universal PWM Controller (UPC).
First, you need to establish reliable communications between the
LinuxCNC PC and the UPC. A parallel port cable with DB-25 male on one
end and DB-25 female on the other is required. But, this cable
**MUST** be made specifically to be IEEE-1284 (parallel port EPP
mode) compliant. Ordinary 25-pin cables are not suitable due
to crosstalk between the wires. The cable should have "IEEE-1284
compliant" printed right on the cable jacket.

Download the UPC diagnostics program from
pico-systems.com/codes/univpwmdiags.tgz
It is best to download this directly onto the LinuxCNC system using the
Firefox web browser, to avoid any file translation problems.
But, you can download it with another system and browser, and then
copy it over. The file is unpacked with this command, executed from
a terminal (command line) window:
tar xzvf univpwmdiags.tgz
This will unpack the executable file univpwmdiags into the current
directory.

Execute the program with a command line like this :

sudo ./univpwmdiags 378 bus

This uses sudo to give the program the necessary priveledges to
access the parallel port hardware. On the next line it will ask
for the user's password. If you have the system set up for
automatic login without password, you need to remember what
password you gave during the LinuxCNC install.

the "./" is required syntax for the bash shell to execute
a program from the current directory. univpwmdiags is
the name of the diagnostic command.

The 378 is the hexadecimal address of the default parallel port.
If your parallel port has a different address, enter that
after the command name.

bus is the function of this program to use first, to make
sure the diagnostic can communicate with the board. If it
is successful, it will give a list of the 16 possible device
addresses on the parallel port and what board it finds at that location.
(Note the UPC ties up two consecutive addresses, so if a board
is found at the default address of zero, the diag will skip address
1, as it is also used by the UPC.)

If this test is successful, then use the communication reliability
test like this:
sudo ./univpwmdiags 378 commtest
This test loads random values into the encoder counter registers
and then reads the value back. If the values disagree, an error
is reported. If they agree, only every thousand tests is reported,
with a cumulative error count. If 100,000 test cycles can be
performed with no error, then it can be assumed that communications
are reliable. The test can be ended with the ctrl/C character.

Finally, you need to satisfy the emergency stop circuits to
allow the board to come out of the power-up state of E-stop.
A closed connection from EG to Input 15 will cause the green LED
LED9 to light up, indication the E-stop switches are all in
the OK (closed) condition. You want to wire all your manual
Estop switches in series, using the normally closed contacts.
Thus, when any switch contact is opened, the UPC goes to
E-stop mode, and also tells LinuxCNC of the condition.

You can check the condition of digital inputs with this
command :
sudo ./univpwmdiags 378 diocontinuous
This continually reads the digital inputs and displays
them on the screen, 1 for a closed input circuit, zero
for the open circuit. All digital inputs are wired from
EG to the digital input desired. WARNING!! Note that
this program ALSO writes a rippling pattern to digital
outputs 1-7 and turns on digital output 8 (indicating the
out-of-Estop condition). If you have solid state relays
in positions 1-8 connected to external devices, make sure they
are disabled or will not create a hazard when turned on.

PWM Ouputs:
The PWM outputs of the UPC drive the output to +5 V during the
"ON" time of a pulse. The on time is proportional to the
commanded input value, from 0.0 to 1.0 . The frequency
is generally set in the hal file univpwm_motion.hal with a command
like this :

setp ppmc.0.pwm.00-03.freq 50000

This line of code sets the PWM frequency to 50 KHz for PWM channels 0-3.
All PWM outputs on one UPC board must be at the same frequency, although if you
had additional boards, these could be set to different frequencies.

If your servo amplifiers need a pulse in each direction after coming out of E-stop,
you can select this with a line like the following :

setp ppmc.0.pwm.00.bootstrap TRUE

This tells the driver to generate a pulse of about 5% duty cycle with the direction
pin first low, then high, and then go to normal operation, every time the system
comes out of E-stop. The number after ppmc.0.pwm. is the PWM channel number.
If you need to do this on all 4 axes, the line should be repeated 4 times with 00
through 03 in that position.

Some amplifiers need to have an upper limit on duty cycle. If so, the following line
sets that. 0.99 equals a duty cycle of 99%.
setp ppmc.0.pwm.00.max-dc 0.99
Again, this line needs to be repeated for each axis.

If you are driving synchronous-antiphase drivers instead of sign-magnitude, then
the idle state is a 50% duty cycle and the direction output is not used.
You need to add an offset with the PID BIAS setting in the .ini file's
[AXIS_n] section.

Digital Inputs:
There are 15 general-purpose digital inputs on the UPC board. These are
electrically isolated from the logic circuits on the board, and powered
by an isolating DC-DC converter. Grounding any of the inputs (0 -- 14)
to terminal EG turns that input on. Digital input 15 is dedicated to the
E-stop function. A green LED (LED 9) will light when the E-stop chain
is complete.

Digital Ouputs:
There are positions on the board to mount up to 8 solid state relays such
as the Crydom D2W202F (2 A, 240 V AC). You can also mount DC power
SSRs and signal -level SSRs (Pico Systems makes their own signal-level
DC SSRs as there seems to be nothing on the market with the right pin
spacing at a reasonable cost.
To use the SSRs, you need to either place a Pico-II fuse (from
Littelfuse, available through Mouser, Digi-Key, etc.) or a piece of
#24 wire in the fuse position next to the SSR. Fuses of 2A up to
5A can be used, 5 A is the limit for the connectors and board traces.

Switch settings :
There is a 10-position DIP switch that configures some options of the
board.

Switch 10 is normally left ON, to make the board appear on the bus at
address zero. If the switch is turned OFF, the board responds to
address 2, allowing two UPC boards to be used on one parallel port.
A short ribbon cable can connect the first board to the second.

Jumpers:

JP4 is the only jumper of interest to the user. This jumper turns the
watchdog timer on or off. In the on position, the watchdog will put
the board into the E-stop state if it gets no commands from the
computer for 20 milliseconds. This will stop all step pulses immediately,
shut off all solid state relays, and also turn off the spindle
DAC if it is installed. If the jumper is set to off, then the only way
to go to the E-stop state is via software command or breaking the
E-stop switch chain. This jumper needs to be off for certain diagnostic
programs to run. It should be set to ON when operating under LinuxCNC.


************** PPMC ***************

The PPMC system is designed as an industrial-grade interface for
higher-end machine tools using analog-input velocity servo amplifiers.
It is made to be expandable by plugging in additional modules.
The three types of plug in boards are: A 4-axis encoder counter,
capable of reading either single-ended or differential encoders,
with index pulse (if present). A 4-axis 16-bit Digital to Analog
Converter (DAC) with +/- 10 V output. This allows 32767 discrete
velocities in each direction. An E-stop condition clamps the
output to zero Volts. And, there is a Digital Input/Output
board which has 16 opto-isolated inputs and positions to mount
up to 8 Solid-State relays of your choice right on the board.
There is also an additional input for an Estop chain.

The DAC board has a watchdog timer that will command an E-stop if it
is not updated at least every 20 ms. This can be disabled by moving
a jumper for running diagnostics. It should be left in the "ON"
position when running with LinuxCNC.

If more than one DIO board is present, the one with the lowest address
will be set as the master, and that is the board that needs the
E-stop chain connected. Any other DIO board will be a slave, and
will follow the E-stop status of the master.

When the master DIO has a closed circuit on the E-stop chain
(ST2 pins 7 to 8) the green LED (LED9) will light up, indicating
the E-stop chain has no open switches. Only when this LED is
lit will it be possible for LinuxCNC to bring the board out of E-stop.
(LinuxCNC should be updating the DAC board(s) by that time to satisfy
the watchdog timer.)


Addresses of the boards are set by a 4-position DIP switch on each
board. A closed switch indicates a zero, an open switch indicates
a one. Switch number 1 is the least significant bit of the address.
So, a setting of address five would require switches 1 and 3 to be
off and 2 and 4 to be on.


Initial setup of the Pico Systems Parallel Port
Motion Control (PPMC).
First, you need to establish reliable communications between the
LinuxCNC PC and the PPMC. A parallel port cable with DB-25 male on one
end and DB-25 female on the other is required. But, this cable
**MUST** be made specifically to be IEEE-1284 (parallel port EPP
mode) compliant. Ordinary 25-pin cables are not suitable due
to crosstalk between the wires. The cable should have "IEEE-1284
compliant" printed right on the cable jacket.

Download the PPMC diagnostics program from
pico-systems.com/codes/ppmcdiags.tgz
It is best to download this directly onto the LinuxCNC system using the
Firefox web browser, to avoid any file translation problems.
But, you can download it with another system and browser, and then
copy it over. The file is unpacked with this command, executed from
a terminal (command line) window:
tar xzvf ppmcdiags.tgz
This will unpack the executable file ppmcdiags into the current
directory.

Execute the program with a command line like this :

sudo ./ppmcdiags 378 bus

This uses sudo to give the program the necessary priveledges to
access the parallel port hardware. On the next line it will ask
for the user's password. If you have the system set up for
automatic login without password, you need to remember what
password you gave during the LinuxCNC install.

the "./" is required syntax for the bash shell to execute
a program from the current directory. univpwmdiags is
the name of the diagnostic command.

The 378 is the hexadecimal address of the default parallel port.
If your parallel port has a different address, enter that
after the command name.

bus is the function of this program to use first, to make
sure the diagnostic can communicate with the PPMC. If it
is successful, it will give a list of the 16 possible device
addresses on the parallel port and what board it finds at that location.
Each PPMC plug-in board has a 4-position DIP switch to set the
address of that board. The settings should be unique for each
board. The LinuxCNC driver for the PPMC system is very flexible,
and enumerates the boards in any combination. But, the diagnostic
program is much less intelligent, and will only test an encoder
board at address zero, a DAC board at address 4 and a DIO board
at address 6. (It will function correctly if an additional
DIO board is set for address 7 by setting that board as a
slave DIO.)

If this test is successful, then use the communication reliability
test like this:
sudo ./ppmcdiags 378 commtest
This test loads random values into the encoder counter registers
and then reads the value back. If the values disagree, an error
is reported. If they agree, only every thousand tests is reported,
with a cumulative error count. If 100,000 test cycles can be
performed with no error, then it can be assumed that communicatons
are reliable. The test can be ended with the ctrl/C character.

Finally, you need to satisfy the emergency stop circuits to
allow the board to come out of the power-up state of E-stop.
A closed connection from ST2 pins 7 to 8 will cause the green LED
LED9 to light up, indication the E-stop switches are all in
the OK (closed) condition. You want to wire all your manual
Estop switches in series, using the normally closed contacts.
Thus, when any switch contact is opened, the UPC goes to
E-stop mode, and also tells LinuxCNC of the condition.

You can check the condition of digital inputs with this
command :
sudo ./ppmcdiags 378 diocontinuous
This continually reads the digital inputs and displays
them on the screen, 0 for a closed input circuit, 1
for the open circuit. All digital inputs are wired from
ST2 pin 9 to the digital input desired. WARNING!! Note that
this program ALSO writes a rippling pattern to digital
outputs 1-8. If you have solid state relays
in positions 1-8 connected to external devices, make sure they
are disabled or will not create a hazard when turned on.
Also, the LEDs are in series with the SSRs so they will only
light if an SSR is plugged into the relay socket. (510 Ohm
resistors can be plugged into the two closest pins of the
SSR pattern to simulate a relay to make the LEDs work for
testing.)

Analog outputs:


Digital Inputs:
There are 16 general-purpose digital inputs on the DIO board. These are
electrically isolated from the logic circuits on the board, and powered
by an isolating DC-DC converter. Grounding any of the inputs (0 -- 15)
to terminal ST2 pin 9 turns that input on.

Digital Ouputs:
There are positions on the board to mount up to 8 solid state relays such
as the Crydom D2W202F (2 A, 240 V AC). You can also mount DC power
SSRs and signal-level SSRs (Pico Systems makes their own signal-level
DC SSRs as there seems to be nothing on the market with the right pin
spacing at a reasonable cost.)
To use the SSRs, you need to either place a Pico-II fuse (from
Littelfuse, available through Mouser, Digi-Key, etc.) or a piece of
#24 wire in the fuse position next to the SSR. Fuses of 2A can be used.

****************** Additional Products *********************

We also have special interfacing products that are not completely specific
to LinuxCNC, but are of use in general CNC retrofits.

Resolver Converter - for interfacing axis or spindle motors that use
a resolver instead of encoder for position sensing.

Fanuc Encoder Converter - for use with the early Fanuc "red cap"
brushless servo motors to convert their proprietary encoder
commutation signals to the industry standard.

Fanuc Serial pulse coder converter - for converting the later
Fanuc serial pulse coder signals to standard quadrature with
index and commutation signals.

PWM Servo Amplifier - a digital servo amplifier for brush motors
up to 20 A and 120 V, compatible with the Pico Systems PWM
controller and others from Mesa.

PWM Brushless Servo Amplifier - same as above but for brushless
motors.

Power Switch and Braking Module - can be used with the above servo
amps to cut power and engage a braking resistor when going into
E-stop.

Copley Interface - adapts enable and amplifier fault signals from
Copley 400-series and some AMC velocity servo amps. Can
be used with a variety of CNC control interfaces.

Spindle DAC - a digital to analog converter designed to control spindle
speed on DC drives and VFDs. Plugs into the universal PWM
Controller or universal Stepper Controller boards.

Gecko Interface - connects encoders to both the Gecko 320-series
drives and the universal Stepper Controller, so the LinuxCNC
system becomes part of the servo loop. Provides more accurate
following error limits, ability to graph servo response, and the
capability of going to E-stop, moving the machine by hand while
LinuxCNC acts as a DRO, and then resuming CNC control.

Panasonic Encoder Converter - converts proprietary commutation
signals from the Panasonic MUMS (Minas) series motors to
industry compatible (Hall) signals.

All of these products can be viewed on the Pico Systems web store at
pico-systems.com/osc2.5/catalog/
Last edit: 30 Apr 2013 11:25 by jmelson. Reason: add more info
The following user(s) said Thank You: skvallab, kentavv

Please Log in or Create an account to join the conversation.

More
04 Jul 2020 00:24 #173573 by Nizsten
Replied by Nizsten on topic Pico Systems FAQ
I am unable to run the scripts you have provided in the command line.
Specifically, I am using your PWM system and script.
The error I am getting is "Sudo: Unable to execute ./univpwmdiags: No such file or directory".
I have double-checked the active directory and the spelling several times.
I cannot get it to work.

Could it be an encoding problem?
I am running a 64-bit computer.

Thanks!

Please Log in or Create an account to join the conversation.

More
04 Jul 2020 01:25 #173574 by jmelson
Replied by jmelson on topic Pico Systems FAQ
Oh, yes, that's a problem. I don't have a good 64-bit version of the diagnostic program. You should get a more specific message that it is not a 64-bit image.
But, maybe that message won't get back to you with the sudo command.

I can compile the program for a 64-bit kernel, but it has a number of bugs related to merging and splitting multi-byte fields.

(I really should fix this and provide 64-bit versions of these programs.)

Anyway, there are 64-bit versions of LinuxCNC, and the included ppmc driver does work correctly, now.

If you have a specific problem to debug, I can get you a partially-working 64-bit executable.

Jon

Please Log in or Create an account to join the conversation.

Moderators: PCWjmelson
Time to create page: 0.091 seconds
Powered by Kunena Forum