“PRODUCTS MANUFACTURED BY CAMPBELL SCIENTIFIC, INC. are
warranted by Campbell Scientific, Inc. (“Campbell”) to be free from defects in
materials and workmanship under normal use and service for twelve (12)
months from date of shipment unless otherwise specified on the corresponding
Campbell invoice. Batteries, fine-wire thermocouples, desiccant, and other
consumables have no warranty. Campbell's obligation under this warranty is
limited to repairing or replacing (at Campbell's option) defective products,
which shall be the sole and exclusive remedy under this warranty. The
customer shall assume all costs of removing, reinstalling, and shipping
defective products to Campbell. Campbell will return such products by surface
carrier prepaid within the continental United States of America. To all other
locations, Campbell will return such products best way CIP (Port of Entry)
INCOTERM® 2010, prepaid. This warranty shall not apply to any Campbell
products which have been subjected to modification, misuse, neglect, improper
service, accidents of nature, or shipping damage. This warranty is in lieu of all
other warranties, expressed or implied. The warranty for installation services
performed by Campbell such as programming to customer specifications,
electrical connections to products manufactured by Campbell, and product
specific training, is part of Campbell’s product warranty. CAMPBELL
EXPRESSLY DISCLAIMS AND EXCLUDES ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE. Campbell is not liable for any special, indirect,
incidental, and/or consequential damages.”
Assistance
Products may not be returned without prior authorization. The following
contact information is for US and International customers residing in countries
served by Campbell Scientific, Inc. directly. Affiliate companies handle
repairs for customers within their territories. Please visit
www.campbellsci.com to determine which Campbell Scientific company serves
your country.
To obtain a Returned Materials Authorization (RMA), contact CAMPBELL
SCIENTIFIC, INC., phone (435) 227-2342. After an applications engineer
determines the nature of the problem, an RMA number will be issued. Please
write this number clearly on the outside of the shipping container. Campbell
Scientific's shipping address is:
CAMPBELL SCIENTIFIC, INC.
RMA#_____
815 West 1800 North
Logan, Utah 84321-1784
For all returns, the customer must fill out a "Statement of Product Cleanliness
and Decontamination" form and comply with the requirements specified in it.
The form is available from our web site at www.campbellsci.com/repair. A
completed form must be either emailed to repair@campbellsci.com or faxed to
435-227-9579. Campbell Scientific is unable to process any returns until we
receive this form. If the form is not received within three days of product
receipt or is incomplete, the product will be returned to the customer at the
customer's expense. Campbell Scientific reserves the right to refuse service on
products that were exposed to contaminants that may cause health or safety
concerns for our employees.
COM320 Table of Contents
PDF viewers note: These page numbers refer to the printed version of this document. Use
the Adobe Acrobat® bookmarks tab for links to specific sections.
The COM320 is a voice-synthesized modem that supports the CR800, CR850,
CR1000, and CR3000 dataloggers. The COM320 allows the datalogger to
announce over the telephone specific variable data, present state of flags and/or
control ports, and the ability to toggle flags and/or control ports. Along with
announcing information over the phone, the datalogger can also be
programmed to call specific phone numbers with different messages when
specific conditions are met.
Although the primary function of the COM320 is voice communications, the
modem is also capable of data communications. In data mode the COM320
supports standard datalogger functions including program send, data
collection, and data callback.
This manual provides information regarding COM320 specifications,
installation, and operation. Quick Start (Section 3) presents an example
CR1000 voice callback/callin program with descriptions of the code.
Section 6.3 explains how to make a good earth ground connection to maximize
protection of the COM320 against lightning and electro-static discharge.
• Operation: Full-duplex over standard analog phone lines
• Operating temperature: -25° to +50°C std, -40° to +85°C optional
• Dimensions: 6.5” x 1.0” x 2.6” (16.5 x 2.5 x 6.6 cm)
• Weight: 0.35 lbs (0.16 kg)
For information regarding the COM320 theory of operation refer to Appendix
A of this manual.
3. Quick Start
NOTE
This section presents Basic_Voice_2.cr1 an example voice callback/callin
program written to demonstrate functions of the COM320. It can serve as a
starting point from which to build an application program. Test the autodisconnect capability as you customize the voice code and merge your
measurement sections with the voice code.
To demo the example program, obtain the following items or their equivalent:
1) COM320 (COM320_OS.03 or later OS)
2) SC12 Cable
3) CR1000 datalogger
4) 3 inches of thermocouple wire
5) PS100 Power Supply
6) Phone modem for your PC
7) LED in series with 1000 Ohm resistor
8) Analog phone line
The COM320 cannot interface with office digital phone lines.
Connect the COM320 to analog phone lines only, such as a fax
line.
You will also need:
2
1) Windows compatible PC with available COM port
2) LoggerNet 3.4.1 or later installed on PC.
The datalogger’s voice code is created along with the measurement program
using the CRBasic editor. It is recommended to finish and debug the voice
portion of the program first, and then add the measurement code.
The example CR1000 voice callback/callin program that follows supports the
following functions:
• Voice callin
• Voice callback
• Auto-disconnect
• Auto redial
• Alarm reset
The following steps show how to build a station to demo the example voice
callback/callin program. The voice station can further serve to test/debug a
custom voice program and merge it with an application program.
Step 1 – LoggerNet Setup
1) In LoggerNet Setup create the following device map
COM320 Voice Communications Modem
2) Configure ComPort and PhoneBase for your PC’s phone modem.
3) Configure PhoneRemote to include the COM320’s analog phone number
followed by six commas and a 9.
4) Click on CR1000phone (renamed) and verify that the PakBus Address is 1.
Step 2 – Hardware Setup
1) Start with a CR1000 having factory settings. If unsure of settings, close
LoggerNet, connect SC12 cable from PC ComPort to CR1000 RS-232
port, run Device Configuration Utility, set Serial Port to match the PC
ComPort, Connect and click on the Factory Defaults button, Apply
settings and Disconnect.
2) Turn off PS100 if it isn’t already.
3) Connect CR1000 to PS100 (turned off).
4) Connect SC12 cable from COM320 to CR1000 CS I/O port.
5) Connect analog phone line to COM320.
6) Turn on PS100.
7) Connect prepared TC to CR1000’s DIFF 7 analog input.
8) Connect LED with 1000 Ohm resistor connected to anode lead from C1 to
G (resister to C1).
3
COM320 Voice Communications Modem
Step 3 – Send BASIC_VOICE_2.CR1 to CR1000
1) Download BASIC_VOICE_2.CR1 from CSI web site under Support,
Downloads, Program Examples, COM310 Examples to a folder on your
hard drive.
2) From LoggerNet Toolbar run CRBasic editor and open
BASIC_VOICE_2.CR1.
3) Change PHONE1 (a constant in SlowSequence near bottom of program)
to your office phone number to be used for callback and Save and
Compile the change.
4) You can change PHONE2, etc. to nearby phone numbers for testing or
comment out those lines of code. NUMPHONES should equal the number
of active phone numbers.
5) If the TC at DIFF 7 isn’t Type T, change the program to match your TC
type and Compile and Save.
6) Connect to CR1000phone and in Connect Screen, File Control send
BASIC_VOICE_2.CR1 to CR1000phone.
7) Close File Control and Disconnect from CR1000phone.
Step 4 – Callin
Step 5 – Callback
8) Your CR1000 voice station is ready to demo.
1) Using a touch-tone phone, dial the number of the analog phone line
connected to the COM320.
2) You should hear a ring or two, some faint clicking and then the voice
announcements:
CURRENT STATION DATA
PRESS ONE TO HEAR THE BATTERY VOLTAGE
PRESS TWO TO HEAR THE DATALOGGER TEMPERATURE
PRESS THREE TO HEAR THE T C TEMPERATURE
PRESS STAR TO DISCONNECT
3) Pressing 1, 2, 3, or * should produce the result indicated.
1) Grip the end of the thermocouple to raise its temperature above 85F
setting an alarm condition.
2) In a few seconds you should be able to detect the dial tones as a voice
callback proceeds. The first phone number in the program should ring.
Picking up the phone you should hear:
PRESS POUND TO RESET ALARM, PRESS STAR TO DISCONNECT
Pressing the # key you should hear:
C R ONE THOUSAND STATION
PRESS ONE TO HEAR A SENSOR VALUE
4
COM320 Voice Communications Modem
PRESS TWO TO HEAR OR TOGGLE PORT
PRESS THREE TO HEAR OR TOGGLE FLAG
PRESS STAR TO DISCONNECT
3) Navigate around in the menus to learn the program’s capabilities:
a) Press 2 to access the Ports Menu.
b) Press 1 to read the logic state of Control Port 1.
c) Press # to toggle the logic state of Control Port 1 (C1’s LED should
turn on).
d) Press # again (C1’s LED should turn off).
e) Press * to return to “C R ONE THOUSAND STATION” menu.
f) Press * to hang up.
4) Try hanging up the phone without pressing * (disorderly exit) and see if
the modem automatically hangs up after a few seconds.
5) As you press the keys to navigate around in the menus you will find that
occasionally you get an unexpected response. Phone connections are
susceptible to noise pickup and signal attenuation. Depending on your
particular phone equipment and the phone lines and equipment between
you and the voice station, you may at times experience some of the
following:
a) You press * and the voice station hangs up but doesn’t say,
“Goodbye.”
b) A voice callback rings your phone but you pick up to silence
Certain phones are more of a problem due to low signal levels or
switch bounce.
6) Helpful hints for pressing phone keys to control a voice station
a) Press a key firmly (but not too long).
b) Allow a second between key presses.
c) Press the same key again if getting an incorrect response.
d) If no response, try pressing the same key again or press the # key to
recover.
e) If unresponsive, try rapidly pressing a series of five * keys to
disconnect station.
f) Worst case, hang up and allow 6 minutes for the voice station to reset
itself.
Following is the text of the BASIC_VOICE_2.CR1 example voice
callback/callin program employing VoiceSetup( ). The program should be
available for download on CSI’s website under Support/Downloads/Program
Examples. Following the program is a description of its main sections.
5
COM320 Voice Communications Modem
' CR1000
' BASIC_VOICE_2.CR1
' Program employs VoiceSetup instruction available in OS CR1000.Std.12 and later
' 1st phone number is called if Diff 7 TC temperature > 85F
‘ Program continues to call callback phone number list until someone answers and presses # key
‘ resetting alarm.
' Callback phone numbers are in constants in the SlowSequence at the bottom of the program.
' Key Press Functions:
' # resets alarm condition or toggles port/flag
' 1,2,3,4,5,6,7,8 select certain menu items
' * returns one menu level (returns from subroutine) or disconnects
' 0 is not used in this program
' 9 should be avoided since it will trigger an attempt to connect to a modem
' Timeouts (for key presses and for the total on line time) are constants listed below
' and can be adjusted.
Public Value(3)
Alias Value(1) = BatteryV
Alias Value(2) = PTemp
Alias Value(3) = TCValue_F
Const KeyTimeout = 800 ' 8 second timeout waiting for key stroke before hangup
Const SecsOnLine = 360 ' 6 minutes On Line Timeout
Const STAR = 42 ' The * key (STAR)
Const POUND = 35 ' The # key
Const HangupIfKeyTimeout = TRUE ' Will hangup if times out waiting for a key
Const RINGTIME = 20 ‘ Maximum time allowed for a phone to be picked up and # pressed
Public mykey As Long
' **** VOICE CODE executed when DL detects COM320 RING or when DialVoice() succeeds ****
Public CallingOut As Boolean ' Detects whether we are calling out or calling in
' STAR (*) key will be used to return from subroutines and to disconnect if not in a subroutine
VoiceBeg
If CallingOut Then ' We are calling out triggered by DialVoice()
Call CallOutVoice
Else
Call CallInVoice ' We are calling in
EndIf
EndVoice
6
COM320 Voice Communications Modem
' ***** Subroutines *****
' Called when calling in:
Sub CallInVoice
Do
VoiceSpeak ("CURRENT STATION DATA 50MS 50MS", 0)
VoiceSpeak ("PRESS ONE TO HEAR THE BATTERY VOLTAGE 50MS", 0)
VoiceSpeak ("PRESS TWO TO HEAR THE DATALOGGER TEMPERATURE 50MS", 0)
VoiceSpeak ("PRESS THREE TO HEAR THE T C TEMPERATURE 50MS", 0)
VoiceSpeak ("PRESS STAR TO DISCONNECT", 0)
Select Case VoiceKey(keytimeout)
Case 1
VoiceSpeak ("THE BATTERY VOLTAGE IS" + Value(1) + "VOLTS", 1)
Case 2
VoiceSpeak ("THE REFERENCE IS" + Value(2) + "DEGREES", 1)
Case 3
VoiceSpeak ("THE AIR TEMPERATURE IS" + Value(3) + "DEGREES", 0)
EndSelect
Loop ' Until timeout or STAR
EndSub
' Called when calling out:
Public Alarm As Boolean, ArmAlarm As Boolean, ManualAlarm As Boolean
Sub CallOutVoice
' Dial # reset to reset alarm = 0
Timer(1,Sec,2) ‘ Start timer
Do
VoiceSpeak("50MS PRESS POUND TO RESET ALARM 50MS PRESS STAR TO DISCONNECT", 0)
mykey = VoiceKey(0)
If Timer(1,Sec,4) >= RINGTIME Then ExitSub ‘ Max time to await pick up and # press
Loop Until mykey = POUND
' Someone cleared the alarm, let them proceed and do other things
Alarm = False
Do ' Until timeout
VoiceSpeak ("50MS C R ONE THOUSAND STATION 50MS 50MS", 0)
VoiceSpeak ("PRESS ONE TO HEAR A SENSOR VALUE 50MS 50MS", 0)
VoiceSpeak ("PRESS TWO TO HEAR OR TOGGLE PORT 50MS 50MS", 0)
VoiceSpeak ("PRESS STAR TO DISCONNECT 50MS 50MS", 0)
Select Case VoiceKey(KeyTimeout)
Case 1
Call SubKey1
Case 2
Call SubKey2
Case 3
Call SubKey3
EndSelect
Loop ' Until timeout
EndSub
7
COM320 Voice Communications Modem
' Monitors a value
Sub SubKey1
Do
VoiceSpeak ("50MS PRESS SENSOR NUMBER 50MS PRESS STAR TO RETURN", 0)
mykey = VoiceKey (KeyTimeout)
If mykey = 1 Then VoiceSpeak ("50MS THE BATTERY VOLTAGE IS" + Value(1) + "VOLTS", 1)
If (mykey = 2) Then VoiceSpeak ("50MS THE REFERENCE IS" + Value(2) + "DEGREES", 1)
If (mykey = 3) Then VoiceSpeak ("50MS THE T C IS" + Value(3) + "DEGREES", 1)
Loop ' Sensor value loop
EndSub
' Read a port and possibly toggle
Sub SubKey2
Do ' Until * or timeout
Dim keybit,port As Long,state
VoiceSpeak("50MS PRESS PORT NUMBER 50MS PRESS STAR TO RETURN", 0)
port = VoiceKey(keyTimeout)
If (port > 0) AND (port <= 8) Then
keybit = 2^(port-1) ' Bit 0..7 is set in keybit. Keybit = 2^(port-1).
Do
ReadIO(state, &b11111111)
VoiceSpeak("50MS C" + port + "IS",0)
If state AND keybit Then
VoiceSpeak("ON",0)
Else
VoiceSpeak("OFF",0)
EndIf
VoiceSpeak("50MS PRESS POUND TO TOGGLE 50MS PRESS STAR TO RETURN", 0)
If VoiceKey(KeyTimeout) = POUND Then
ReadIO (state,&b11111111)
If state AND keybit Then
state = state AND (NOT keybit)
Else
state = state OR keybit
EndIf
WriteIO(&b11111111,state) ' Toggle control port
EndIf
Loop
EndIf
Loop
EndSub
‘ Read a flag and possibly toggle
Sub SubKey3
Const NUMBERFLAGS = 8
Public Flags(NUMBERFLAGS)
Do ' Until * or timeout
VoiceSpeak("50MS PRESS FLAG NUMBER 50MS PRESS STAR TO RETURN", 0)
mykey = VoiceKey(keyTimeout)
If (mykey > 0) AND (mykey <= NUMBERFLAGS) Then
Do
VoiceSpeak("50MS FLAG" + mykey + "IS",0)
8
COM320 Voice Communications Modem
If Flags(mykey) Then
VoiceSpeak("ON",0)
Else
VoiceSpeak("OFF",0)
EndIf
VoiceSpeak("50MS PRESS POUND TO TOGGLE 50MS PRESS STAR TO RETURN", 0)
If VoiceKey(KeyTimeout) = POUND Then
flags(mykey) = NOT flags(mykey)
Else
ExitDo
EndIf
Loop
EndIf
Loop ' Port loop
EndSub