Blocking behaviour and Pass through

Hi Folks, I’m new to Digi IAP and have been searching for some tips on how to get over some startup hurtles. So far I haven’t found the magic…

I have two machines with Realport installed and I am trying to use Hyperterminal to talk to an RS-485 device that is attached to the screw terminal port. I am fine as long as only one machine is connected, but when I try to connect the second machine it seems to be blocked. Disconnect the first machine and the second works fine. Any thoughts on what I am missing would be appreciated.

Also, I’m thinking that I should be able to connect an RS-232 port from a machine to the db-9 port and control devices on the screw terminal port on RS-485 if the pass-through switch is on and so far I haven’t been able to come up with the combination that works for that. Am I misinterpreting the functionality on this or do I just not have the right configuration yet.

Any help is appreciated.

LVDJ

Yes, the ‘pass-thru’ port is mis-named.

Enable both serial ports. Run the “Industrial Auomation” wizard and define the second (DB9) serial port as the master for half-duplex, then define the first (Terminals) serial port the slave. This will allow you/a master to issue requests from:

  1. the second serial port
  2. Digi RealPort to the first serial port of the DOIAP
  3. via raw TCP/IP to port 2101
    The DOIAP will work a bit like a printer, queueing well-formed request, giving each request access to the slave for s short time, expecting a response.

To make the ‘multi-master’ work, you need a clear definition of what ends a transaction. The default will be idle time with no more data, which will NOT work if you are typing manually from Hyperterimal. Using a would be better.

Thanks:

I am now able to use the pass-through port using the following configuration table:

table=1 name=Test1
table=1 route=1 protocol=custom protaddr=0-255 type=serial port=1
table=1 route=1 active=on

Network Sources (Masters):
master=1 protocol=custom table=1 transport=tcp ipport=771 chartimeout=50ms
master=1 messagetimeout=2500ms idletimeout=0ms permit=all priority=medium
master=1 duplex=half addrtype=off
master=1 active=on

Serial Sources/Destinations (Masters/Slaves):
serial=1 protocol=custom type=slave table=1 messagetimeout=2500ms
serial=1 slavetimeout=1sec chartimeout=50ms
serial=1 duplex=half addrtype=off

serial=2 protocol=custom type=master table=1 messagetimeout=25sec
serial=2 slavetimeout=1sec chartimeout=5sec
serial=2 duplex=half addrtype=off

I have to wait for the 5 sec character timeout right now, but I expect to work that out as I get into a mode where I am not entering data manually and/or when I work out the delimiter issues.

With this configuration though I am not able to get any response when I use Realport and reading item number 2 of the previous post I was thinking I should be able to.

Also, with resepct to the delimiter for EOT, I see where you can enter it but I haven’t yet found a statement of what the format of it should be and if you can specify mulitple EOT delimiters. One of the downstream products uses 04H and I’m still researching the other.

Is there a good white paper that has some description of the internal workings of the device or more indepth information related to the individual configuration parameters?

Finally, one document I was reading refers to a Chat profile. I have not found this, does it exist.

Thanks in andvance for any input.

LVDJ

The pain continues, I’ve got to say that having setup hundreds of different types of devices over the decades that I have been doing this type of thing, I’m used to inadequate documentation and having to search for solutions, but in this case things are particularly frustrating.

Looking at the web interface it seems that this is only a 2 port device when the “pass-through” switch is in the on position and that when it is in that position the only choice you have is RS-232

It looks like when the pass-through switch is in the off position all that happens is the DB-9 connector gets whatever is imposed on port one in whatever format the dip switches are set to and that you only have one port.

Reading the data sheet carefully I can see where one might come to this conclusion, but looking at the documentation and Quick Start Guide you might think that when it says “port 2” you actually would have a second port not just a connector on the first port.

I would certainly appreciate confirmation if I’ve got the situation right in my descriptions above.

It would also be very nice to get an answer to my other question regarding the format of what to enter in the delimeter boxes. Is what you would enter for 'carraige rturn" or would it be 0DH or /n … it is frustrating to try them all and not even know if you are barking up the right tree…

I’m still confident that somehow this device will work in a multimaster mode and some number of them will solve my problem, but as of now, I am regretting having chosen this device for my application…

I would be happy to have my mind changed about that.

So far nothing I have done can get it to work both over the network and through the pass-through port … it’s one or the other … and here the picture in the data sheet gives a pretty clear indication that I should be able to do this…

LVDJ

For anyone struggling with this same dilemma I found this in the help file for the IA Wizard…

“Specifies the character patterns that define where the protocol messages begin and end. The delimiter may consist of printable or unprintable characters up to 4 characters or bytes. To use an unprintable character, enter the character in hexadecimal format such as \x03 or \x7E. Predefined characters can also be used as shortcuts including tab ( ), carriage return (\r), or line feed (
). To specify a character or byte that changes from request to request such as a protocol address, checksum, or message identifier use the shortcut ‘*’. For example, to specify the DF1 4-byte sequence DLE ETX with 2 CRC bytes at the end of messages, use “\x10\x03**”.”

That answers one set of questions…

LVDJ

First, as you discovered, the DOIAP web ui has context sensitive help.

As for the 1-vs-2, you are correct. It is a bit convoluted because early wishful thinking for the product was “lets make a product where this second port lets any 2nd master talk to any serial device in the universe”. That obviously cannot work because most serial devices expect detailed one-master-at-a-time behavior.

The IA custom protocol you’re struggling with was an attempt to handle MOST serial devices, but not all. For example, it will work with Modbus or DF1 RM, but not DF1 FD or Mitsubishi FX. It needs a well defined 1-request = 1-response half-duplex paradigm. However, once this term “pass-thru” made it into management’s mind, it could never be exorcised.

With the DIP switch set to one port, the second DB9 will mimic the first screw terminals, including being RS-232 or RS-485. There is no second port (in this mode).

With the DIP switch set to two ports, the second DB9 will be a seperate port, but only RS-232 since there is only 1 usable RS-485 chip in there. This is also left over from the early days when this was assumed to an IBM PC-like thing only.

As for RealPort, it inherits the IA settings of the port you connect to, but with inverted master/slave settings. So assuming you have the DOIAP in 2 port mode, with a ‘slave’ on port 1 and ‘master’ on port 2, then you must connect to the first port only of RealPort. To the DOIAP, your real-port session then looks like a third serial port set up as master-attached.

Trying to use the 2nd port via RealPort won’t accomplish anything since there is no way to ‘route’ to the internal thing which RealPort connected to. Anything you send goes into the bit-bucket.

This is all documented in (probably too many) manuals on the support page such as:

  • Digi One IAP User’s Guide (IA Profiles)
  • Command Reference: Device and Terminal Server Products
  • Users Guide: Portserver TS Family
  • Application Guide: Understanding Timeout Settings in Digi One IAP

Unfortunately, this driver also has 3 names: ‘generic’, ‘user-defined’, and ‘custom’. Not sure when/why the name changed.

Hello:

Thanks for getting back about this. Unfortunately I have been through every one of those references (and many more) several times and have not had success in setting up even the simplest of multi-master operation.

They are long on specifc examples, but short on general concepts that would help one understand what the device is actually doing or suggestions for how to troublshoot. I am currently trying to see what a telnet trace to the device might tell me.

The device I’m talking to is a simple slave. It doesn’t speak when not spoken to, it gives one response terminated by a Carriage Return when it is spoken to.

To eliminate complexity I setup the IAP device in single port mode.

Using a RealPort profile everything is fine as long as I don’t attempt to connect more than one master. By master I mean hyperterminal sending a manual command. Once one master is connected I have not been able to find a set of comfiguration parameters that lets the other master connect and communicate to the device.

It appears that perhaps this is because the IAP reflects back an indication that port is already open when the second port attempts to connect or just doesn’t allwo for anything to come through the second connection.

Trying IA Wizard generated configurations generates no results at all. Commands seem to go out but nothing comes back.

I’ve also tried setting the differnent machines up on different TCP/IP ports to no avail.

I have opened a support case for this.

With the device in the IA Wizrd generated mode that appears right, I telnet to it and do a

“set trace state=on mask=ia:i+d+w”

and after I modify the character timeout etc. to account for the fact that I am typing I can see the message going out in the INFO field and a state machine transition from Wait ->1stChar … immediately followed by an “impatient master” indication and a transition from end -> fatal err and an Abort message.

What’s an “impatient master” and how do I get rid of it…

LVDJ

“Impatient Master” is a master who has sent a ‘new transaction’ before the old transaction has complete the half-duplex cycle.

So as example, if:
messagetimeout = 2500
slavetimeout=1sec
chartimeout=50ms

You need to have less than 50msec delay between bytes, or the transaction will begin and the engine expect you (the master) to not send any more data until either the slave replies or the slavetime expires. You are deemed ‘impatient’ if you break this rule. So your EOM condition is going true too fast. (Remember, with RealPort, your incoming ‘master’ uses the settings from the port #1 ‘slave’, which is why the ‘slave’ has settings like ‘messagetimeout’ which only apply to master tasks.

Perhaps using settings like this MAY work:
messagetimeout = 10sec
slavetimeout=6sec
chartimeout=5sec

You will find manual typing very hard to control.

If you are using Hyperterminal or some such tool, using a ‘put file’ option to send/dump a small text file into the socket or RealPort will make your manual testing easier. That will allow the original 2500/1000/50 settings to work.

Thanks for that I will into that shortly.

The “Impatient Master” goes away if you uncheck the setting in Hyperterminal Properties -> Settings -> Ascii setup ->send line ends with line feeds. The “impatient master” does not go away if you just change the end delimiter to
which one might think would fix the problem …

This results in data coming back from the slave, however, it is garbled data…

LVDJ

Garbled data was a result of the fact that a cable was still connected to the DB-9 and the device due to not ending one experiment before the next experiment begins … my bad …

So the basic issue is that once you adjust the timeout settings, to account for typing - mine have been:

MessageTimeout - 25000 ms
Character timeout - 5000 ms
Slave timeout -10000 ms

You just need to make sure not to send line feeds with the data …

It looks like unless you are willing to suffer a delay waiting for one of the timeouts to expire the delimiter on the master transmission has to be the same as the delimiter on the slave transmission.

Thanks for the support … I hope this thread helps others that are stuck in this situation … so that they can avoid days worth of frustration can be avoided.

Assuming this is RS-485, do you have correct signal grounding and line bias enabled?

Seeing unexpected 0xFF or 0xFE or 0x7F bytes is a common sign of floating RS-485 lines.

Thanks Lynn … problem with garbeled data was a result of poor labe technique … I didn’t disconnect one experiment before starting another and it is all resolved…

Thanks