Legacy Hardware and Apps
Digital output delay

The delay option on the DSO command does not work according to the manual: using 1DSO(5000)=1 1TK 1DSO=0 produces the same result as 1DSO=1 1TK 1DSO=0, that is, only a short pulse on the output.

If I use 1DSO(5000,R)=1 I get the 5 sec delay. The output also seem to be inverted; DSO=0 activates the output (drain), according to the manual it should be DSO=1.

The delay option on the DSO command does not work according to the manual: using 1DSO(5000)=1 1TK 1DSO=0 produces the same result as 1DSO=1 1TK 1DSO=0, that is, only a short pulse on the output. If I use 1DSO(5000,R)=1 I get the 5 sec delay. The output also seem to be inverted; DSO=0 activates the output (drain), according to the manual it should be DSO=1.

Good morning Bertil,

Yep it works just the way you said.

The delay was always intended to work with the R (reset) and not by itself. You can use the DELAY command. (Bottom of page 62 in the manual)

So your code will be 1DSO=1 DELAY=5000 1TK 1DSO=0

The digital outputs are held high and so are normaly ON. The DSO=0 command pulls them low. This is so we can connect a switch or relay etc and close the contact to get a signal.

Regards,
Roger

Good morning Bertil, Yep it works just the way you said. The delay was always intended to work with the R (reset) and not by itself. You can use the DELAY command. (Bottom of page 62 in the manual) So your code will be 1DSO=1 DELAY=5000 1TK 1DSO=0 The digital outputs are held high and so are normaly ON. The DSO=0 command pulls them low. This is so we can connect a switch or relay etc and close the contact to get a signal. Regards, Roger

"The digital outputs are held high and so are normally ON. The DSO=0 command pulls them low. This is so we can connect a switch or relay etc and close the contact to get a signal." ??

Is this correct?

"The digital outputs are held high and so are normally ON. The DSO=0 command pulls them low. This is so we can connect a switch or relay etc and close the contact to get a signal." ?? Is this correct?

Page 156 of the DT800 manual explains more clearly

Page 156 of the DT800 manual explains more clearly

When I asked about whether or not you were correct it was because I believe you meant to say that DSO=1 will turn the output ON. The confusion goes way back in datataker history, but it refers to the difference between Programming Language that says that something is True (not zero) and assumed to be Turned ON, when in fact our ELECTRICAL outputs are Turned ON when they are at ZERO voltage(open collector drive).

Its easiest stated that OUR OUTPUTS are inverted and our inputs are not. Turning them ON means making them equal to a "1" when in fact they are driving the input to a low "0VDC". This has always lead to some confusion to our customers.

When I asked about whether or not you were correct it was because I believe you meant to say that DSO=1 will turn the output ON. The confusion goes way back in datataker history, but it refers to the difference between Programming Language that says that something is True (not zero) and assumed to be Turned ON, when in fact our ELECTRICAL outputs are Turned ON when they are at ZERO voltage(open collector drive). Its easiest stated that OUR OUTPUTS are inverted and our inputs are not. Turning them ON means making them equal to a "1" when in fact they are driving the input to a low "0VDC". This has always lead to some confusion to our customers.

Ok, I've just done some testing, this is what I did,
Get a Volt meter, connect Ground lead to the digital ground and Plus lead to digital 1.

Reset the DT800 with the SINGLEPUSH command.
I now read 3.29 Vdc on the Volt meter (The input is held high)
Send 1DSO=0 to the DT800.
I now read 0.000 Vdc -> Logic 0 = Output Off
Send 1DSO=1 to the DT800.
I now read 3.29 Vdc -> Logic 1 = Output On

Now I'm not an electrician or electrical engineer and I know there was a bit a debate as to how this should be implemented, but If you want to drive a device like a relay that is normally closed then yes the logic can be considered to be inverted.

Regards,
Roger

Ok, I've just done some testing, this is what I did, Get a Volt meter, connect Ground lead to the digital ground and Plus lead to digital 1. Reset the DT800 with the SINGLEPUSH command. I now read 3.29 Vdc on the Volt meter (The input is held high) Send 1DSO=0 to the DT800. I now read 0.000 Vdc -> Logic 0 = Output Off Send 1DSO=1 to the DT800. I now read 3.29 Vdc -> Logic 1 = Output On Now I'm not an electrician or electrical engineer and I know there was a bit a debate as to how this should be implemented, but If you want to drive a device like a relay that is normally closed then yes the logic can be considered to be inverted. Regards, Roger

Yes, it is confusing for sure!

What about the example on page 158?
RA20M D T 4DSO(1000)=1 1..5V 4DSO=0

How is that supposed to work?

The comment on the Delay command,
does it say that all schedules will stop during the delay
or is it not possible to use other schedules at all?

Yes, it is confusing for sure! What about the example on page 158? RA20M D T 4DSO(1000)=1 1..5V 4DSO=0 How is that supposed to work? The comment on the Delay command, does it say that all schedules will stop during the delay or is it not possible to use other schedules at all?

Good morning Bertil,

I've put through a bug report on that delay not working as expected.
It's not a big deal as there is a work around in that you can use the delay command i.e. 1DSO=1 DELAY=5000 IDSO=0

The DELAY command, either a digital delay or directly with the command, will delay ALL schedules. That is if you have several schedule running then they will all be delayed by the time amount specified by the delay set in any one of the schedules.

There are other ways of turning the I/O's without using the any delays and that is to use IF statements and / or boolean logic

For example.
Toggling a bit on and off at a set rate.

BEGIN
1CV=1
2CV=0
RA1S
2CV(W)=1CVXOR2CV 'Or more clearly 1CV XOR 2CV
1DSO=2CV T
END

This next code turns on bit on for 2 second and then off for 8 seconds.

BEGIN
1CV=1
2CV=0
3CV=0
RA1S
3CV=3CV+1
2CV=(3CV<=2)
1DSO=2CV T
IF(3CV>10){[3CV=0]}
END

Regards,
Roger

Good morning Bertil, I&#039;ve put through a bug report on that delay not working as expected. It&#039;s not a big deal as there is a work around in that you can use the delay command i.e. 1DSO=1 DELAY=5000 IDSO=0 The DELAY command, either a digital delay or directly with the command, will delay ALL schedules. That is if you have several schedule running then they will all be delayed by the time amount specified by the delay set in any one of the schedules. There are other ways of turning the I/O&#039;s without using the any delays and that is to use IF statements and / or boolean logic For example. Toggling a bit on and off at a set rate. BEGIN 1CV=1 2CV=0 RA1S 2CV(W)=1CVXOR2CV &#039;Or more clearly 1CV XOR 2CV 1DSO=2CV T END This next code turns on bit on for 2 second and then off for 8 seconds. BEGIN 1CV=1 2CV=0 3CV=0 RA1S 3CV=3CV+1 2CV=(3CV&lt;=2) 1DSO=2CV T IF(3CV&gt;10){[3CV=0]} END Regards, Roger
41
7
2
live preview
enter atleast 10 characters
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Saving...
Saved
With selected deselect posts show selected posts
All posts under this topic will be deleted ?
Pending draft ... Click to resume editing
Discard draft