Typical Setting for Modbus to Modbus/TCP and Testing for Digi One IA

I was hoping someone could post the settings to get a Digi One IA up and running for Modbus (slave) to ModbusTCP.

I have configured the device for Modbus and ModbusTCP with all the security features turned off at this point.

I want to connect a PLC (slave) to our DCS (master). The PLC already works with an Wonderware HMI using modbus+, but I want to bring it over to the DCS and do away with the HMI. Our DCS has a lot more functionality in trending and historical data retrieval when compared to the HMI.

I can ping the device from our DCS PC’s. The DCS is setup as the master and ModbusTCP and all the lights on the ethernet side of the Digi One IA are lit and talking. When I go to test the serial side with the Wonderware software (HMI) setup with dummy data I can’t get any serial Tx/Rx. My problem could be I’m trying to use the HMI software as a psuedo slave, but I don’t know of any other way to test it with a PC as the modbus slave.

If anyone could post the settings to get this working and a way to test it w/ a PC I would be very grateful… I haven’t had any luck so far. Also, I’ve already tried support via email and they haven’t gotten back to me, yet. I could see this device being very useful in similar applications at our site… assuming I can get it up and running. THANKS IN ADVANCE!!!

This is from a Digi One IAP. I don’t see any Digi One IA config files in my archives, but I know that I’ve used the IA before as well.

Digi One IAP Version 82000770_F1_SA3 10/06/2006

set config dhcp=off
set config myname=“” domain=“”
set config ip=192.168.0.68 submask=255.255.255.0
set config realport=771 securerealport=1027 sockets=2000 redirect=ignore tbreak=std
set config optimize=latency
set keys prevcmd=^P nextcmd=^N forwchar=^F backchar=^B
set config boothost=0.0.0.0 bootfile=“” tftpboot=no
set ethernet speed=auto duplex=half
set config rarp=on
set config ping-arp=on
set web timeout=300
set profile range=1 profile=ia
set profile range=2 profile=realport
set line range=1 parity=E csize=8 error=ignore
set line range=1 baud=9600 stopb=1 break=ignore inpck=off istrip=off onlcr=off otab=off
set flow range=1 ixon=off aixon=off ixoff=off ixany=off itoss=off altpin=off forcedcd=off
set flow range=1 dtr=off cts=off dcd=off dsr=off ri=off
set flow range=1 rts=off pre-delay=0 post-delay=0

set keys range=1 xon=^Q xoff=^S xona=^Q xoffa=^S lnext=^V

set line range=2 parity=N csize=8 error=ignore
set line range=2 baud=9600 stopb=1 break=ignore inpck=off istrip=off onlcr=off otab=off
set flow range=2 ixon=off aixon=off ixoff=off ixany=off itoss=off altpin=off forcedcd=off
set flow range=2 dtr=off cts=off dcd=off dsr=off ri=off
set flow range=2 rts=off pre-delay=0 post-delay=0

set keys range=2 xon=^Q xoff=^S xona=^Q xoffa=^S lnext=^V

set keys range=1 eof=^D erase=^H intr=^C kill=^U
set keys range=2 eof=^D erase=^H intr=^C kill=^U
set snmp run=on auth_trap=off login_trap=off
set snmp cold_start_trap=off link_up_trap=off

set snmp location=“” name=“” contact=“”

set device name=“gendialer” baud=no dialer=genmdm chat=no
set buffers range=1 size=32 state=off
set buffers range=2 size=32 state=off
set port range=1 dev=ia sess=4 termtype=“vt100” edelay=1 auto=off bin=off
set port range=1 uid=none group=none dport=none
set port range=1 dest=none
set port range=1 scriptname=none
set port range=1 keepalive=off flushstchar=default autoservice=default
set port range=1 idletime=0

set port range=2 dev=rp sess=4 termtype=“vt100” edelay=1 auto=off bin=off
set port range=2 uid=none group=none dport=none
set port range=2 dest=none
set port range=2 scriptname=none
set port range=2 keepalive=off flushstchar=default autoservice=default
set port range=2 idletime=0

set socketid range=1 state=off string=“SOCKETID”
set socketid range=2 state=off string=“SOCKETID”

set ia table=1 name=table1
set ia table=1 addroute=1 active=on protocol=modbusrtu
set ia table=1 route=1 protaddr=0-255 type=serial port=1

set ia master=1 active=on protocol=modbustcp transport=tcp ipport=502 table=1
set ia master=1 chartimeout=50ms messagetimeout=2500ms idletimeout=2sec
set ia master=1 permit=all priority=medium
set ia master=1 errorresponse=on broadcast=on fixedaddress=auto
set ia master=1 exttimeout=disabled

set ia serial=1 protocol=modbusrtu type=slave table=1
set ia serial=1 messagetimeout=2500ms slavetimeout=200ms chartimeout=20ms
set ia serial=1 lineturndelay=50ms
set ia serial=1 errorresponse=off broadcast=on fixedaddress=1
set ia serial=1 rbx=off
set ia serial=1 exttimeout=disabled

set udpserial range=1 rmax=1024 rtime=100 closetime=0 overflow=forward strip=off
set udpserial range=1 delimiters=“”
set udpserial range=2 rmax=1024 rtime=100 closetime=0 overflow=forward strip=off
set udpserial range=2 delimiters=“”
set udpdest port=1 range=1 ipaddr=192.168.0.235 ipport=2102 description=“dest1”
set udpdest port=1 range=2 ipaddr=192.168.0.235 ipport=210 description=“dest1”
set secureaccess ssh=on
set secureaccess ssh-keyauth=on
set secureaccess ssh-pwdauth=on
set secureaccess telnet=on
set secureaccess http=on
set secureaccess rlogin=on
set secureaccess rsh=on
set secureaccess realport=on
set secureaccess reversetcp=on
set secureaccess reversetelnet=on
set secureaccess snmp=on
set secureaccess securerealport=on
set secureaccess securesockets=on
set secureaccess https=on
set secureaccess lpd=on

set logport ra=1 state=off
set logport ra=1 mode=syslog
set logport ra=1 udpport=514
set logport ra=1 rmax=1024
set logport ra=1 rtime=100
set logport ra=1 pri=134
set logport ra=1 strip=off
set logport ra=1 delim=“”
set logport ra=2 state=off
set logport ra=2 mode=syslog
set logport ra=2 udpport=514
set logport ra=2 rmax=1024
set logport ra=2 rtime=100
set logport ra=2 pri=134
set logport ra=2 strip=off
set logport ra=2 delim=“”

Hah! I did have one for the Digi One IA:

Digi One IA Version 82000774_G 07/06/2005

set profile range=1 profile=ia
set line range=1 parity=E csize=8 error=ignore
set line range=1 baud=9600 stopb=1 break=ignore inpck=off istrip=off onlcr=off otab=off
set flow range=1 ixon=off aixon=off ixoff=off ixany=off itoss=off altpin=off forcedcd=off
set flow range=1 dtr=off cts=off dcd=off dsr=off ri=off
set flow range=1 rts=off pre-delay=0 post-delay=0

set keys range=1 xon=^Q xoff=^S xona=^Q xoffa=^S lnext=^V

set port range=1 dev=ia sess=4 termtype=“vt100” edelay=1 auto=off bin=off
set port range=1 uid=none group=none dport=none
set port range=1 dest=none
set port range=1 scriptname=none
set port range=1 keepalive=off flushstchar=default autoservice=default

set socketid range=1 state=off string=“SOCKETID”

set ia serial=1 protocol=modbusrtu type=slave table=1
set ia serial=1 messagetimeout=2500ms slavetimeout=1sec chartimeout=20ms
set ia serial=1 lineturndelay=0ms
set ia serial=1 errorresponse=off broadcast=replace fixedaddress=auto
set ia serial=1 exttimeout=disabled

set ia master=1 active=on protocol=modbustcp transport=tcp ipport=502 table=1
set ia master=1 chartimeout=50ms messagetimeout=2500ms idletimeout=0ms
set ia master=1 errorresponse=on broadcast=replace fixedaddress=auto
set ia master=1 exttimeout=disabled

set ia table=1 name=table1
set ia table=1 addroute=1 active=on protocol=modbusrtu
set ia table=1 route=1 protaddr=0-255 type=serial port=1

set udpserial range=1 rmax=1024 rtime=100 closetime=0 overflow=forward strip=off
set udpserial range=1 delimiters=“”
set logport ra=1 state=off
set logport ra=1 mode=syslog
set logport ra=1 udpport=514
set logport ra=1 rmax=1024
set logport ra=1 rtime=100
set logport ra=1 pri=134
set logport ra=1 strip=off
set logport ra=1 delim=“”
set sharing range=1 clients=1 control=shared timeout=0 wrpolicy=all

If you just go to the Digi One IA and select having a Modbus Serial Slave you should be Ok (now I don’t even own an IA :slight_smile: so I have to take this somewhat on faith)

You can also use telnet to the Digi One IA to obtain an event trace showing the messages as they show up and so on. Make sure you didn’t LIMIT the slave address to 1 as some Modbus/TCP masters default to use only slave zero. By default the Digi One IA “fixes” zero to be 1, but for testing you should allow all messages to this slave.

I have more info on the use of this event trace at my Wiki site here:
http://digitips.wikispaces.com/Digi_IA_Event_Trace

Here is an EXAMPLE trace from the Digi One IAP with a ControlLogix polling a Modbus/TCP slave. The Digi One IA firmware is older and the trace may not be so helpful as we’ve been working to make this trace LESS of an in-house programmer tool and MORE of an end-user tool:

> set trace state=on mask=ia:i+d+w
22:55:11 IA INFO: eip:m05 cmd:Req/Rsp Data
22:55:11 IA INFO: cip cls:pccc srv:76 inst:1 attr:0
22:55:11 IA DEBG: PCCC request
22:55:11 IA DEBG: SbFnc:68 By:12 F:310 O:0
22:55:11 IA DEBG: Converting pccc request to IADB
22:55:11 IA INFO: eip:m05 recv req 34675
22:55:11 IA DEBG: Converting IADB request to modbus
22:55:11 IA DEBG: Ok[006] 01 03 75 30 00 06
22:55:11 IA INFO: mbtcp:s04 Snd Req(34675) Seq:0x58f3 Len:6
22:55:11 IA INFO: mbtcp:s04 Slv:1 RdRegs:4x30001 Cnt=6
22:55:11 IA DEBG: 1 3 75 30 0 6
22:55:11 IA INFO: mbtcp:s04 Rcv Rsp(34675) Seq:0x58f3 Len:15
22:55:11 IA INFO: mbtcp:s04 Slv:1 Rd Bytes=12 (0000 0000 0000 3F80 +)
22:55:11 IA DEBG: 1 3 c 0 0 0 0 0 0 3f 80 0
22:55:11 IA DEBG: 0 0 0
22:55:11 IA DEBG: Converting modbus response to IADB
22:55:11 IA DEBG: Ok[015] 01 03 0C 00 00 00 00 00 00 3F 80 00 00 00 00
22:55:11 IA DEBG: Converting IADB response to pccc
22:55:11 IA DEBG: Ok[022] 00 01 4F 00 86 82 99 09 0D 42 00 00 00 00 00 +

Also be aware that the web ui back (Mr Newell’s file) is just a simple text file and you can edit it as desired. I frequently edit them down to just the essentials, plus if you manually edit the “set config” lines you can apply the SAME backup to hundreds of units.

I BOLD-HIGH-LIGHTED three items to double-check as they frequently stop configs from working. The active=on should make sense - since you edit things in REAL-TIME the Web UI uses this to disable things it edits. The protaddr=0-255 is how it knows ALL slaves 0 to 255 are on port 1.

Digi One IA Version 82000774_G 07/06/2005

set profile range=1 profile=ia

set line range=1 parity=E csize=8 error=ignore
set line range=1 baud=9600 stopb=1 break=ignore

set port range=1 dev=ia

set ia serial=1 protocol=modbusrtu type=slave table=1
set ia serial=1 messagetimeout=2500ms slavetimeout=1sec chartimeout=20ms
set ia serial=1 lineturndelay=0ms
set ia serial=1 errorresponse=off broadcast=replace fixedaddress=auto
set ia serial=1 exttimeout=disabled

set ia master=1 active=on protocol=modbustcp transport=tcp ipport=502 table=1
set ia master=1 chartimeout=50ms messagetimeout=2500ms idletimeout=0ms
set ia master=1 errorresponse=on broadcast=replace fixedaddress=auto
set ia master=1 exttimeout=disabled

set ia table=1 name=table1
set ia table=1 addroute=1 active=on protocol=modbusrtu
set ia table=1 route=1 protaddr=0-255 type=serial port=1

> helpful as we’ve been working to make this trace LESS
> of an in-house programmer tool and MORE of an
> end-user tool:

Hey, that’s great news!