Configuration grammar

The configuration grammar used to communicate with the LI-7700 is based upon the eXtensible Markup Language (XML). XML relies on the use of tags to “markup”, or give structural rules to a set of data.

A tag is a descriptive identifier, enclosed between a less than (<) and greater than (>) symbol, used in part to describe a piece of data. For example, <NAME> is a tag that describes someone’s name. Each tag must have a corresponding end tag, denoted by ‘/’. Extending the example above, the end tag of <NAME> is </NAME>.

Elements are the basic unit of XML content. An element consists of a start tag and an end tag, and everything in between. For example, consider the following element:

Copy
<name>jane</name>

In this example, <NAME> (start tag) and </NAME> (end tag) comprise the markup, and “Jane” comprises the data.

Elements can also contain other elements other than data.

Copy
<name>
  <first>jane</first>
  <last>smith</last>
</name>

In this example, the outermost element <NAME> encompasses two other elements that contain data. All elements combined make up the XML document.

Connecting with a terminal program

This section describes the protocol used by the LI-7700 to communicate via Ethernet for both configuration and data output purposes. Commands sent to the LI-7700 have a certain structure that must be followed, and data sent by the LI-7700 comes packaged in a particular way.

Communication is accomplished with a terminal program (e.g., Tera Term). When you communicate with the LI-7700 with a Transmission Control Protocol (TCP) connection, the LI-7700 address should be in the form:

Copy
XXX.XXX.XXX.XXX:YYYY

where XXX represents an integer number from 0-255 and YYYY represents the port number. All LI-7700s use the port number 7700 by default. If you connect with the serial RS-232 port, simply select the COM port that you used to connect your LI-7700.

Element descriptions

The following types of data are used in XML grammar:

{val | val | val | …} The value will be a member of the specified set. The “|” means “or”.
{bool} Boolean values, TRUE | FALSE.
{float} Floating point values in decimal or exponential notation.
{int} Integer
{string} String

Sending commands

When you make the initial connection to the instrument it will send data as tab-delimited text. It includes a header followed by data, similar to that shown below

Copy
DATAEVENTMODELLI-7700
DATAEVENTVERSION1.0.14
DATAEVENTNAMETG1-0XXX
DATAEVENTSNTG1-0XXX
DATAEVENTBOXDISCONNECTED
DATAHMSECSECONDSNANOSECONDSDIAG…
DATADIAGHBOXCONNECTEDBADAUXTC3BADAUXTC2…
DATA4954420631317223547014…
DATA4954430631317223548014……

Headers and labels for these data are similar to the data files created by the LI-7700, which are described beginning in Data files. Subsequent data packets will not include the header information.

To set the output rate to 0:

Send the following command:

Copy
<licor>
  <li7700>
    <output>
      <rate>0</rate>
    </output>
  <licor>
<li7700>

If the command is received the instrument will reply with this message:

Copy
<licor>
  <li7700>
    <ack>true</ack>
  </li7700>
</licor>

DATAEVENTCONFIGCHANGED

Example of an incorrect command and response from instrument:

The command below is incorrect because the rate is a floating point (10.0), when it should be a value (e.g., 10).

Copy
<licor>
  <li7700>
    <output>
      <rate>10.0</rate>
    </output>
  </li7700>
</licor>

Instrument response to the erroneous command:

Copy
<licor>
  <li7700>
    <error>xml error in item "rate" invalid option: 10.0</error>
  </li7700>
</licor>

DATAEVENTCONFIGCHANGED

To request a data record:

Copy
<licor>
  <li7700>
    <cmd>
      <poll>true</poll>
    </cmd>
  </li7700>
</licor>

If the command is received the instrument will reply with this message and a full data record:

Copy
<licor><li7700><ack>true</ack></li7700></licor>

DATA 4129091253 1317290569 900000000 143 0.0835644 2.00288 …

To change the top mirror heater settings:

Copy
<licor>
  <li7700>
    <cfg>
      <heater>
        <top>
          <control> on | off | auto </control>
          <deltat> {float (-5.0 – 5.0)} </deltat>
          <heaterpower>{int}</heaterpower>
          <ontime>{hh:mm}</ontime>
          <offtime>{hh:mm}</offtime>
        </top>
      </heater>
    </cfg>
  </li7700>
</licor>

This would change the mirror heater settings to whichever values you specify.

To set the temperature range to the 0 °C...50 °C range:

Copy
<licor>
  <li7700>
    <cfg>
      <temprange>high</temprange>
    </cfg>
  </li7700>
</licor>

To set the temperature range to the -25 °C...25 °C range:

Copy
<licor>
  <li7700>
    <cfg>
      <temprange>low</temprange>
    </cfg>
  </li7700>
</licor>

To force the instrument to re-linelock:

Copy
<licor>
  <li7700>
    <cmd>
      <linelock>true</linelock>
    </cmd>
  </li7700>
</licor>

Configuration file grammar

Configuration files are constructed when you save an instrument configuration (see Configuration files). You can view or edit the configuration grammar by opening the configuration file in a text editor. Below is an example of a typical configuration file with hypothetical values for elements.

Listing C‑1. Sample configuration file of LI-7700 grammar.

Copy
<licor>
  <li7700>
    <serialnumber>77h-beta9</serialnumber>
      <output>
        <rate>10</rate>
        <waveforms>true</waveforms>
        <status>true</status>
        <dataclock>true</dataclock>
      </output>
    <box>
      <output>
        <data>
          <ch4>true</ch4>
          <ch4d>true</ch4d>
          <temp>true</temp>
          <pressure>true</pressure>
          <rssi>true</rssi>
          <aux1>true</aux1>
          <aux2>true</aux2>
          <aux3>true</aux3>
          <aux4>true</aux4>
          <aux5>true</aux5>
          <aux6>true</aux6>
          <aux7>true</aux7>
          <aux8>true</aux8>
          <auxtc1>false</auxtc1>
          <auxtc2>false</auxtc2>
          <auxtc3>false</auxtc3>
          <diag>true</diag>
          <seconds>true</seconds>
          <nanoseconds>true</nanoseconds>
          <droprate>true</droprate>
          <chk>true</chk>
        </data>
        <waveforms>false</waveforms>
        <status>true</status>
        <dataclock>false</dataclock>
      </output>
      <usb>
        <data>
          <ch4>true</ch4>
          <ch4d>true</ch4d>
          <temp>true</temp>
          <pressure>true</pressure>
          <rssi>false</rssi>
          <aux1>true</aux1>
          <aux2>true</aux2>
          <aux3>true</aux3>
          <aux4>true</aux4>
          <aux5>false</aux5>
          <aux6>false</aux6>
          <aux7>false</aux7>
          <aux8>false</aux8>
          <auxtc1>true</auxtc1>
          <auxtc2>true</auxtc2>
          <auxtc3>true</auxtc3>
          <diag>true</diag>
          <seconds>true</seconds>
          <nanoseconds>true</nanoseconds>
          <date>true</date>
          <time>true</time>
          <droprate>false</droprate>
          <chk>true</chk>
        </data>
        <status>off</status>
        <split>60</split>
      </usb>
    </box>
    <cfg>
      <sdmaddress>15</sdmaddress>
      <aux1>
        <type>steinhart</type>
        <a0>1</a0>
        <a1>2</a1>
        <a2>3</a2>
        <a3>4</a3>
      </aux1>
      <aux2>
        <type>poly</type>
        <a0>5</a0>
        <a1>6</a1>
        <a2>7</a2>
        <a3>8</a3>
      </aux2>
      <aux3>
        <type>steinhart</type>
        <a0>9</a0>
        <a1>10</a1>
        <a2>11</a2>
        <a3>12</a3>
      </aux3>
      <aux4>
        <type>poly</type>
        <a0>13</a0>
        <a1>14</a1>
        <a2>15</a2>
        <a3>16</a3>
      </aux4>
      <aux5>
        <type>steinhart</type>
        <a0>17</a0>
        <a1>18</a1>
        <a2>19</a2>
        <a3>20</a3>
      </aux5>
      <aux6>
        <type>poly</type>
        <a0>21</a0>
        <a1>22</a1>
        <a2>23</a2>
        <a3>24</a3>
      </aux6>
      <aux7>
        <type>steinhart</type>
        <a0>25</a0>
        <a1>26</a1>
        <a2>27</a2>
        <a3>28</a3>
      </aux7>
      <aux8>
        <type>poly</type>
        <a0>29</a0>
        <a1>30</a1>
        <a2>31</a2>
        <a3>32</a3>
      </aux8>
      <heater>
        <top>
          <heaterpower>100</heaterpower>
          <control>off</control>
          <deltat>5</deltat>
          <ontime>00:01</ontime>
          <offtime>23:59</offtime>
        </top>
        <bottom>
          <heaterpower>98</heaterpower>
          <control>off</control>
          <signalstrengthlevel>50</signalstrengthlevel>
          <ontime>00:01</ontime>
          <offtime>23:04</offtime>
        </bottom>
      </heater>
      <linelock>
        <lasercooler>
          <control>auto</control>
          <temp>24.9</temp>
        </lasercooler>
        <laserblock>
          <control>on</control>
          <temp>30</temp>
        </laserblock>
      </linelock>
      <cleancycle>manual</cleancycle>
      <spinmirror>
        <control>off</control>
        <ontime>00:01</ontime>
        <offtime>23:59</offtime>
        <duration>120</duration>
        <repeatinterval>06:00</repeatinterval>
        <signalstrengthlevel>100</signalstrengthlevel>
          <wash>
            <control>off</control>
            <interval>1</interval>
            <duration>30</duration>
            <signalstrengthlevel>40</signalstrengthlevel>
            <coldtempthreshold>-10</coldtempthreshold>
          </wash>
        </spinmirror>
        <dac1>
          <set>1</set>
          <src>temp</src>
          <low>1</low>
          <high>2</high>
        </dac1>
        <dac2>
          <set>1</set>
          <src>pressure</src>
          <low>3</low>
          <high>4</high>
        </dac2>
        <dac3>
          <set>1</set>
          <src>rssi</src>
          <low>5</low>
          <high>6</high>
        </dac3>
        <dac4>
          <set>1</set>
          <src>set</src>
          <low>7</low>
          <high>8</high>
        </dac4>
        <dac5>
          <set>1</set>
          <src>ch4d</src>
          <low>7</low>
          <high>8</high>
        </dac5>
        <dac6>
          <set>1</set>
          <src>ch4</src>
          <low>7</low>
          <high>8</high>
        </dac6>
        <network>
          <name>ch4-black-spar</name>
          <configuration>auto</configuration>
          <ipaddress>172.25.41.55</ipaddress>
          <netmask>255.255.0.0</netmask>
          <gateway>172.25.1.1</gateway>
        </network>
      <temprange>high</temprange>
    </cfg>
  </li7700>
</licor>