SDI-12 is a data communications protocol developed specifically for environmental monitoring applications. The motivation to develop SDI-12 began in the 1980s when a group of environmental monitoring specialists started to become frustrated with the complexity of interfacing analog sensors with the data loggers of the time. In addition, these low-power analog sensors were extremely unreliable. A goal was set to develop a protocol that would address and solve these frustrations.
The Serial Digital Interface at 1200 baud Protocol (SDI-12) was the solution to the environmental monitoring specialists needs. SDI-12 governs exactly how a sensor must communicate with a data logger. Any sensor claiming to be SDI-12 compatible must accept a standard set of commands and conform to specific electrical and power standards. SDI-12 sensors are smart sensors. They contain specialized circuitry and programming to enable users to configure and calibrate the sensor completely independent of a data logger.
There are a number of advantages to using SDI-12 sensors over classic analog monitoring devices.
-The SDI-12 digital signal is low-power and resistant to data errors.
-The sensors analog signal is converted to digital in the sensor, not the data logger.
-Use of digital signals greatly reduces the effects of noise interference.
-Instantly plug-in or unplug sensors from the system.
Sensors that adhere to SDI-12 protocol have a subset of commands that are consistent with every other SDI-12 sensor. These commands are used to identify the instrument, start a measurement, get data, etc. At a user specified interval (the log or sample interval), the data logger sends the measurement command to the instrument. The SDI-12 sensor will then start taking a measurement and let the data logger know when it will be done doing so. When the sensor has finished taking a measurement the data logger will ask the sensor for the data. The sensor will return its data in a data string.
0+79.5+0.008+0.988+0.92
One thing SDI-12 protocol does not do is tell the user what parameter and unit of measurement each returned value is. This information therefore has to be specified in the software. This information is stored in the data logger.
The list of standard SDI-12 commands is available in the SDI-12 protocol specification which is available from the SDI-12 Support Group here:
http://www.sdi-12.org/
SDI-12 Command Grammar:
This information is not required for sensor operation when connected to a NexSens iSIC. iChart software and iSIC data loggers take care of all the protocols and commands for you.
Additionally, iChart provides a terminal where a user can enter SDI-12 commands, and they will be sent directly to the SDI-12 sensor. The sensor response is displayed to user allowing troubleshooting and SDI-12 configuration to be easily accomplished.
a Sensor Address
The first character of every command is the controller address. Likewise, the first character of every response is the address as well. The default controller address is ASCII 0. Only addresses ASCII 0 through ASCII 9 are allowed.
? Wildcard Address
The wildcard address of ASCII ? may be used in the place of a sensor address. ? can be used in place of the SDI-12 address for any SDI-12 command (NOT just the address query command).
Typical SDI-12 Commands:
Identification:
Command: aI!
Response: allcccccccmmmmmmvvvxx
- ll, the 2 digit supported SDI-12 version, ie: "13".
- ccccccc, the 7 digit manufacturer name, ie: "NexSens "
- mmmmmm, the 6 digit model number, ie: "iSIC "
- vvv, the 3 digit major and minor firmware version number, ie: "613"
- xx, the two digit build firmware version number, ie: "01"
Measurement:
Command: aM! or aMC!
Response: atttn
ttt, the 3 digit number of seconds until the requested measurement is ready n, the single digit number of parameters returned by the measurement. n is NOT limited to '0' to '9' as in the specification. It can be '0' to '-'. The number of parameter is computed by subtracting n by '0', i.e. ':' - '0' = 10 parameter, 'D' - '0' = 20 parameters, etc.
Concurrent Measurement: aC! or aCC!
Responds with number of parameter nn is NOT limited to 20 as in the specification. It can be from 00 to 99.
Request Data: aD0 ... aD9
Responds with the maximum number of decimal places is 5. It is truncated as needed to meet the maximum of 7 character defined in the specification. This command should not be sent until after the ttt time specified by the M command or the measurement will be aborted.
Change SDI-12 Address: aAb!
Changes the sensor address from a to b. b must be from 0 to 9 and it should be an address that is not being used by any other SDI-12 sensor that will be connected to this data logger.