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:
<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.
<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:
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
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:
<licor>
<li7700>
<output>
<rate>0</rate>
</output>
<licor>
<li7700>
If the command is received the instrument will reply with this message:
<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).
<licor>
<li7700>
<output>
<rate>10.0</rate>
</output>
</li7700>
</licor>
Instrument response to the erroneous command:
<licor>
<li7700>
<error>xml error in item "rate" invalid option: 10.0</error>
</li7700>
</licor>
DATAEVENTCONFIGCHANGED
To request a data record:
<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:
<licor><li7700><ack>true</ack></li7700></licor>
DATA 4129091253 1317290569 900000000 143 0.0835644 2.00288 …
To change the top mirror heater settings:
<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:
<licor>
<li7700>
<cfg>
<temprange>high</temprange>
</cfg>
</li7700>
</licor>
To set the temperature range to the -25 °C...25 °C range:
<licor>
<li7700>
<cfg>
<temprange>low</temprange>
</cfg>
</li7700>
</licor>
To force the instrument to re-linelock:
<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.
<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>