Sadly, we are about to enter one of the dark-arts of cellular usage ... what are you actually billed for. Given the 50 page voice cell phone bill my family gets each month, one would NOT think the
cell phone companies lacked the ability to explain - let alone document - what they charge data users for! It is not that one cannot get a verbal answer from cellular providers' engineers; one can get too many different answers.
However, there are some facts we can know.
An example: Modbus/RTU via TCP/IP, one poll per 10 minutesLet us build up an example. Start with a customer named Joe who plans to poll 10 words of data every 10 minutes, or 4320 polls per month. Under
Modbus/
RTU this would be 8 bytes in the request and 25 bytes in the response. So Joe starts with a the wonderful view that he'll only be moving 143K per month and maybe one of those $3.95/month plans for half-a-meg will fit nicely.
Sorry to throw some cold water on Joe's euphoria, but Joe still must pay for the
TCP and
IP header overhead. After all, the cell data network is in effect "tunneling" his
TCP/
IP and
Modbus/
RTU and so treats even the
TCP and
IP headers a billable payload. So Joe needs to consider that 4320 round-trip polls per month results in 8640
TCP/
IP data packets and potentially another 8640
TCP acknowledge packets. Perhaps half of these
TCP acknowledge packets will be merged with the
TCP/
IP data packet returning the
Modbus/
RTU response ... but then again maybe they won't. So to keep it simple and budget safe, Joe should assume worst case and that all 8640
TCP acknowledgements travel alone. Assuming each
IP header is 20 bytes and each
TCP header is another 20 bytes (they may be 28 is you use Linux), this amounts to another 17,280 times 40 bytes or 691K bytes (0.7MB) JUST for the theoretical
TCP/
IP overhead. Joe is up to 834K per month now - clearly a 1MB/mo or larger plan is required.
Ok, wait a second ... now why did I say "theoretical
TCP/
IP overhead"? Because in reality Joe will end up moving more
TCP/
IP traffic than the 4320 polls strictly require. The first extra overhead will be from premature
TCP retransmissions. The high variable latency of cellular means Joe will see from 2% to 10% retransmissions, and since cellular is very reliable, each transmission will result in duplicate
TCP acknowledgements as well. Sticking to worst case, budget-safe assumptions Joe should budget about 10% or 100K per month for premature
TCP retransmissions. So now Joe is up to 934K per month.
However, there is yet another overhead Joe should budget for -
TCP Keepalive probes to detect lose or death of the
TCP socket. Without this, one end of the connection could go away and the other end would never know and never recover the socket resource. Since wide-area-networking is involved, Joe also needs to assume at least one intermediate device will abort and discard the
TCP context if idle more than 5 minutes. Given Joe polls every 10 minutes, he'll need at least one
TCP keepalive exchange between each poll. Each
TCP keepalive exchange consists of another 40 plus 40 bytes, so we are talking 4320 x 80 bytes or another 346K of billable traffic. This puts Joe up to 1.28MB of billable traffic to move 143K of
Modbus traffic.
Now, why not close and reopen the socket? Yes, that is an option but each
TCP close and reopen generates about 320 bytes - not including
TCP retransmissions. So Joe can either pay for 346K worth of
TCP Keepalive or 1.38M of
TCP socket thrashing; which would be 1.28MB and 2.32MB per month respectively.
So Joe is up near 1.5MB per month just to move his 10 registers of data once per 10 minutes, and this doesn't include any time he checks the web interface of his cellular device for status (say another 200-500K per access), nor does it include any on-demand
HMI data access screens which trigger other
Modbus/
RTU polls. These could easily create many MB of traffic per month and requires carefully, mindful behavior by Joe and his
colleges to control costs. One careless person can easily drive the cellular bill up by hundreds of dollars in a month!
Summary:- Raw Modbus/RTU data = 140K per month
- Basic TCP/IP headers to move and acknowledge data = 691K per month
- Estimated 10% premature retransmission = 100K per month
- One TCP Keepalive exchange between 10 minute polls = 346K per month
- Overall, Joe should expect at least 1.5MB per month and I'd suggest he budget for 3MB or even 5MB. This puts him up into the $20/month cell plan range.
Labels: Cellular, Modbus, Rockwell