[time-nuts] OT: Anyone programmed HP 59306A relay actuator (orother old device)?

Dr. David Kirkby david.kirkby at onetel.net
Sat May 24 10:12:45 EDT 2008

Daun Yeagley wrote:
> Hi David
> Don't worry about all the level stuff.  That's internal to the box (59306).
> The only thing you need to worry about is how to generate the proper
> commands on the bus for your particular H/W-S/W combination.
But looking at the example program, one sends

* "?" to clear all listeners
*  "%" to listen
* The commands to set relays, such as "B123", or "A1"
* REN=H to reset to local control.

But all 4 combinations have different TTL levels on the control lines.

On my bench multimeter, something as simple as
dd=ibdev(0, gpib_address, 0, T3s, 1, 0); /* open a device at address 
'gpib_address' with 3 s timeout. */
ibclr(dd);  /* Clear it */
ibwrt(dd,"PRESET",6);  /* Can't recall what this command did on my 
meter, but it works! */
ibwrt(dd,"DCV",3); /* Set to DC voltage. Command ends in 3, as DCV is 3 
characters */

will set it to DC voltage. If I want frequency, the last command would be

ibwrt(dd,"FREQ",4);  /* ends in 4, as FREQ is 4 characters */

But this HP 59306A relay  actuator will *not* respond similarly if I send

ibwrt("A1",2);  /* Unsuccessfully try to join contacts A-C on relay 1 */

In various attempts, I've managed to get the odd click from the relays, 
but nothing useful is happening. I've got two of these, and neither is 
doing what I expect, so I suspect the units are not faulty, but just my 
bad programming.

> In hopefully simple terms, you need to address the 59306 as a listener, and
> then send the ASCII string that represents the relay state you need. In
> Didier's example:
>> 1) to turn all channels off, send "B123456"
>> 2) to turn channel 1 on: send "A1"
> You don't need (or want an end of line sequence or anything). When done
> sending the command, just unaddress it.
Perhaps that is what I am doing wrong. I am not un-addressing it. But 
I've never had to before. I've normally on other instruments just sent 
the command via ibwrt(), then read responses with ibrd(). For this 
instrument, I don't believe there is anything that can be read - you 
can't for example read the state of the relays, so I don't think there 
is any need for using ibrd().

> Hope that removes a bit of fog.
> Daun 

More information about the time-nuts mailing list