Hello together, below listed a theoretical example of a callback solution for gsm. I have some questions below.
Example LoggerNet Settings
TAPI_Port
TAPIRemote
PakBusPort
CR1000
TAPIRemote_2
PakBusPort_2
CR1000_2
Following setting were done:
TAPI_Port
Standard ->Communications Enabled
Advanced ->Call-Back Enabled
TAPIRemote
Hardware -> Use TAPI Dialing Properties Disabled
=>Phone Number eg. SIM cellular network phone number use with fasttrack modem 0123456701
PakBusPort
Hardware -> Communications Enabled
Hardware -> PakBus Port Always Open Enabled
CR1000
Hardware -> Communications Enabled
Hardware -> PakBus Port Always Open Enabled
=> PakBus address 1
TAPIRemote_2
Hardware -> Use TAPI Dialing Prperties Disabled
=>Phone Number eg. SIM cellular network phone number use with fasttrack modem 0123456702
PakBusPort_2
Hardware -> Communications Enabled
Hardware -> PakBus Port Always Open Enabled
CR1000_2
Hardware -> Communications Enabled
Hardware -> PakBus Port Always Open Enabled
=> PakBus address 2
Some questions:
1. Is it possible, that although the TapiPort is always on, LoggerNet makes a outgoing calls to both loggers? -> Phone numbers?
2. If the logger makes an callback as eg. described in the Com310E manual with the function SendVariables (Result,Com310,4094,4094,0000,2500,"Public","Callback",dummy,1),
will it automatically manage the .dat File handling?
3. If the first time a logger with callback function calls LoggerNet, does LoggerNet identify the logger only with the PakBus address?
4. What happens, if the a second, different logger with an identical PakBus Adress calls LoggerNet and there was already data download? Does it overwrite the .dat file? Is there any check? Serial number? How does this work?
Thanks for help.
Greets
Hello Moho,
I'll try to answer your questions below.
Some questions:
1. Is it possible, that although the TapiPort is always on, LoggerNet makes a outgoing calls to both loggers? -> Phone numbers?
Even with call-back enabled, LoggerNet will be able to call out to those stations or other dataloggers that may be on the same phone modem.
2. If the logger makes an callback as eg. described in the Com310E manual with the function SendVariables (Result,Com310,4094,4094,0000,2500,"Public","Callback",dummy,1),
will it automatically manage the .dat File handling?
Yes. LoggerNet puts data in the files based on the datalogger's PakBus ID (for PakBus dataloggers; for non-PakBus dataloggers, it is done based on the datalogger's call-back ID).
3. If the first time a logger with callback function calls LoggerNet, does LoggerNet identify the logger only with the PakBus address?
See above.
4. What happens, if the a second, different logger with an identical PakBus Adress calls LoggerNet and there was already data download? Does it overwrite the .dat file? Is there any check? Serial number? How does this work?
All devices in a PakBus network should have a unique address. Otherwise, you'll likely run into a lot of problems. If the scenario you describe above were the case, the existing data file would be backed up to a new file name and a new file created for the current call-back. The only exception to this is if the two dataloggers had the very same header information, in which case, the new data would be appended to the end of the existing file (this case is not likely, however).
Regards,
Dana
Hi dana,
thanks a lot for that!
We HAVE to take care about the PakBus addresses. We have several CR1000 systems outside Europe with the same PakBus ID, but till
now, LoggerNet call them with gsm. So there will be no problem. For the future callback solution, we have to give unique IDs to the loggers.
Some more question for Callback, dana :)
The crbasic function ModemCallBack() will be that, what we need for the callback. In the help file of crbasic is written:
<paste>
After the modems successfully connect, the datalogger will issue a broadcast Hello Request to determine the address of the neighbor to which it has connected. If a neighbor is found, the datalogger will send a SendVariable() callback message (i.e., it will set a Public variable named CallBack to -1). If no neighbor is discovered, it will continue to send the Hello Request until a neighbor is discovered or the timeout period expires.
<paste off>
The function ModemCallBack does not have a parameter for the LoggerNet specific port 4094. If the logger makes a call to LoggerNet and LoggerNet is configured with Callback enabled. Will it answer automatically and fasts enough?
I think the ModemCallback function used also the method of, function
SendVariables(), but this, we can configure with see example:
SendVariables (SendResult,COMRS232,0,4094,0000,0,"Public","Callback",Scratch,1)
There we specific set the port to 4094, the Public variables, and the method of Callback.
Is the procedure of callback communication the same in both ways?
Should we use the ModemCallback function or should we use more sourcecode to make a connection first and then do the procedure with SendVaiable.... ?
In case of ModemCallback:
Is it correct, that the "ConnectString" parameter of the ModemCallback function should be set to "12", in case of a fasttrak modem, which communicates with the SC105 with 9600 speed. The "12" represent the <speed> 9600bps (AT Commands Interface Guide for OpenAT
eg. ModemCallback(Result,ComSDC7,9600,0,"97550000","12",40,60,Abort)
thanks for help...
The function ModemCallBack does not have a parameter for the LoggerNet specific port 4094. If the logger makes a call to LoggerNet and LoggerNet is configured with Callback enabled. Will it answer automatically and fasts enough?
LoggerNet is programmed so that if it receives the Variable "callback", it recognizes the incoming data as a callback attempt and handles it accordingly. Any response time rules that apply to LoggerNet communication in general will apply here.
I think the ModemCallback function used also the method of, function SendVariables(), but this, we can configure with see example: <SNIP?
Should we use the ModemCallback function or should we use more sourcecode to make a connection first and then do the procedure with SendVaiable.... ?
The great thing about CRBasic are there are many ways to accomplish tasks ;) One advantage of the ModemCallBack instruction is it handles retries upon a failure. If you were to use SendVariable, you would have to handle retries in the code and also use a DialSequence/EndDialSequence to define the path to the destination PakBus device (e.g., LN 4094).
If you are familiar with our Edlog programming language for the mixed array dataloggers, ModemCallBack was designed similarly to the P97 Initiate Telecommunications instruction.
Is it correct, that the "ConnectString" parameter of the ModemCallback function should be set to "12", in case of a fasttrak modem, which communicates with the SC105 with 9600 speed.
I'm not familiar with the modem. You'll need to read its manual to learn what response code is returned with a connection. It may be "Connect" or "Connect 9600" if it responds in verbose mode, in which case, your ConnectString would be "Connect".
Regards,
Dana