Dogs

I read the other day that there is a Russian dog trainer that doesn’t really train dogs. He actually trains their owners.

 

His philosophy is that people aren’t communicating with the dogs in ways that the dog understands. Say for example, you keep yelling “NO” at a dog. The dog starts to think that his name is NO.

 

Instead of using English, this trainer teaches the owners to talk to their pets in the same way that a mother dog would. Low growls when they do something wrong. High pitched squeals to indicate positive affirmations.

 

I thought this was really fascinating. It got me thinking about how simple things usually have a lot of complexity beneath the surface that just isn’t recognized.

 

Take Modbus for example. We have a lot of Modbus products. We have a product that moves Modbus to BACnet IP. Another that converts Modbus RTU data to Ethernet/IP. Another that moves ASCII Barcode data into Modbus registers. All really cool products but there is more complexity beneath the surface than you would think.

 

Take the Modbus to ASCII product. Simple? Well, not really. How do you want these series of bytes to look in Modbus registers. Here’s a couple of ways to store the letters “RTA” in 2 (or 3)  Modbus registers:

 

The reason we have this particular problem is that a long time ago, Motorola and Intel didn’t agree on what is called “Endian” behavior in the first microprocessors. If I remember right, Motorola wanted Big Endian (High half first) and the other wanted Little Endian (Low half first). So numbers like 1234 hexadecimal are either stored 34 in the first byte of memory or 12 in the first byte of memory. And it’s made everything more difficult ever since.

 

It gets worse as the numbers gets larger. Double words, values like 12345678 hexadecimal now have an Endian issue and a word order issue. Two words of memory could look like [5678 1234] or [7856 3412] or [1234 5678] or [3412 7856]. And for 64 bit numbers we have even more combinations, 16 of them in fact.

 

So, how do we sort this all out? Well, that’s why in our new gateway products we have automatic swapping of digits and we make you tell us what the data types are. If we know for example that you have double words, we can make sure we get the data to your destination with all the bytes in the right place.

 

Modbus is the worst for all this because everything is 16-bit unsigned integers or simple bit representation. Bits aren’t as bit a problem with the 16-bit unsigned are. They can be ASCII, bytes, integers, double integers, floats or other weird types.

 

So, just like teaching the dog owners to talk in ways that the dogs can understand we’re hoping that our new product will all you to talk to us in ways that we can understand. And move your data where you need it, when you need it and HOW you need it.