Support Forums
Need some support programming my DT80M

I've been working on this DT80m we got from a third party for a while now. It's been a massive headache already and has had to go back numerous times for hardware issues & the suppliers have been somewhat less than helpful; but I'm just about at the stage where we can get the thing programmed and running.

To that end, could someone please explain to me the function of the code the unit has shipped to us with? Thanks.

1SERIAL(",%f[1CV],%2f[2CV]%f[3CV],%1s['N','S',51CV=-1],%3f[4CV]%f[5CV],%1s['E','W',52CV=-1],%f[6CV],%f[7CV],%f[8CV],%f[9CV],M,%f[10CV],M,%f[11CV]",W)
'1SERIAL("$GPVTG,%f[12CV],T,%f[13CV],M,%f[14CV],N,%f[15CV],K
",W)

In other news, the datalogger will need to run autonomously at high speed for extended periods of time, however we'd also like to get some feedback either
A) Once every (X hours)
or
B) When an alarm triggers (temperature > Y, for example).

Naturally, whilst logging data the unit has no spare CPU to utilize the modem and so commands simply do not go through.

I've looked at some examples on these forums regarding running schedules for set periods of time & then switching to a second schedule, sending data and then switching back. For some peculiar reason I cannot seem to get the original schedule (logging data) to begin running again.

I've also found with schedules which appear to be set to trigger "Only if channel variable is in specified state" seem to just be triggering constantly, rendering this route unusable. Anyone got any bright ideas how to go about this? I'm setting up the whole thing using dEX.

I've been working on this DT80m we got from a third party for a while now. It's been a massive headache already and has had to go back numerous times for hardware issues & the suppliers have been somewhat less than helpful; but I'm just about at the stage where we can get the thing programmed and running. To that end, could someone please explain to me the function of the code the unit has shipped to us with? Thanks. 1SERIAL(",%f[1CV],%2f[2CV]%f[3CV],%1s['N','S',51CV=-1],%3f[4CV]%f[5CV],%1s['E','W',52CV=-1],%f[6CV],%f[7CV],%f[8CV],%f[9CV],M,%f[10CV],M,%f[11CV]*",W) '1SERIAL("$GPVTG,%f[12CV],T,%f[13CV],M,%f[14CV],N,%f[15CV],K*",W) In other news, the datalogger will need to run autonomously at high speed for extended periods of time, however we'd also like to get some feedback either A) Once every (X hours) or B) When an alarm triggers (temperature > Y, for example). Naturally, whilst logging data the unit has no spare CPU to utilize the modem and so commands simply do not go through. I've looked at some examples on these forums regarding running schedules for set periods of time & then switching to a second schedule, sending data and then switching back. For some peculiar reason I cannot seem to get the original schedule (logging data) to begin running again. I've also found with schedules which appear to be set to trigger "Only if channel variable is in specified state" seem to just be triggering constantly, rendering this route unusable. Anyone got any bright ideas how to go about this? I'm setting up the whole thing using dEX.

Hi MSSL,

1SERIAL(",%f[1CV],%2f[2CV]%f[3CV],%1s['N','S',51CV=-1],%3f[4CV]%f[5CV],%1s['E','W',52CV=-1],%f[6CV],%f[7CV],%f[8CV],%f[9CV],M,%f[10CV],M,%f[11CV]*",W)
The above code is a parsing code and it has a meaning as follows:

  • 1SERIAL ("....") represents SERIAL channel declaration, everything inside brackets and enclosed with double quote are channel option
  • , (the first comma) means asking dataTaker to find the first comma characters and discard it
  • %f[1CV] means assuming the next characters after a comma as a floating values, then save it into 1CV
  • ,%2f[2CV]%f[3CV] means discard the next comma character, define the next two characters as a floating value then save it to 2CV, and define the next characters as floating point then save it to 3CV
  • ,%1s['N','S',51CV=-1] means discard the next comma character, if the next single character is a N then 51CV will have a value of 0, if a S then 51CV will become 1 but if other characters found 51CV will become -1

The basic idea is:

  • any character you define will be discarded
  • if you want to parse and save it then use %f (floating point), %d (decimal), %s (string) etc

For your requirement, I can make a sample for you.

BEGIN"TEST"

'reading every hours
RA1H
'thermocouple type J channel
1TJ("Temperature~degC",=1CV)
'if temperature greater than 30 degC run schedule B manually and set 9CV to 1
IF(1CV>30){XB 9CV=1}
IF(1CV<30){9CV=0}

RBX
2V("Voltage~V" )

RC1M:9CV
3I("Current~mA" )

End

As you can see RBX is a declaration of schedule B to be triggered with a XB, while RC1M:9CV is a declaration of schedule C to run every minute if 9CV equal to 1.
You may use any type of conditional triggering as you see it fit.

Best regards,
Rudy Gunawan

Hi MSSL, 1SERIAL(&quot;,%f[1CV],%2f[2CV]%f[3CV],%1s[&#039;N&#039;,&#039;S&#039;,51CV=-1],%3f[4CV]%f[5CV],%1s[&#039;E&#039;,&#039;W&#039;,52CV=-1],%f[6CV],%f[7CV],%f[8CV],%f[9CV],M,%f[10CV],M,%f[11CV]*&quot;,W) The above code is a parsing code and it has a meaning as follows: - 1SERIAL (&quot;....&quot;) represents SERIAL channel declaration, everything inside brackets and enclosed with double quote are channel option - , (the first comma) means asking dataTaker to find the first comma characters and discard it - %f[1CV] means assuming the next characters after a comma as a floating values, then save it into 1CV - ,%2f[2CV]%f[3CV] means discard the next comma character, define the next two characters as a floating value then save it to 2CV, and define the next characters as floating point then save it to 3CV - ,%1s[&#039;N&#039;,&#039;S&#039;,51CV=-1] means discard the next comma character, if the next single character is a N then 51CV will have a value of 0, if a S then 51CV will become 1 but if other characters found 51CV will become -1 The basic idea is: - any character you define will be discarded - if you want to parse and save it then use %f (floating point), %d (decimal), %s (string) etc For your requirement, I can make a sample for you. BEGIN&quot;TEST&quot; &#039;reading every hours RA1H &#039;thermocouple type J channel 1TJ(&quot;Temperature~degC&quot;,=1CV) &#039;if temperature greater than 30 degC run schedule B manually and set 9CV to 1 IF(1CV&gt;30){XB 9CV=1} IF(1CV&lt;30){9CV=0} RBX 2V(&quot;Voltage~V&quot; ) RC1M:9CV 3I(&quot;Current~mA&quot; ) End As you can see RBX is a declaration of schedule B to be triggered with a XB, while RC1M:9CV is a declaration of schedule C to run every minute if 9CV equal to 1. You may use any type of conditional triggering as you see it fit. Best regards, Rudy Gunawan
10
1
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