read modbus in OPC

Hello world.

I’m using a ConnectPort X4, a Xbee SmartPlug and Xbee sensor.

My CPX4

Model: ConnectPort X4
Firmware: 2.15.0.6 (Version 82001536_L 07/25/2012)
POST: 1.1.3 (release_82001753_F)

I need to read smart plug and sensor variables in a OPC server(Kepserver).

this is my configuration for IA:

#> show ia all

set ia table=1 state=on name=Modbus Sensor family=modbus accessmode=multi
set ia table=1 ownerperiod=15000
set ia table=1 addroute=1
set ia table=1 route=1 active=on type=ip protaddr=1-10 protocol=modbustcp
set ia table=1 route=1 transport=udp connect=passive address=127.0.0.1
set ia table=1 route=1 ipport=8502 replaceip=off slavetimeout=1000
set ia table=1 route=1 chartimeout=50 idletimeout=0 lineturnmode=off
set ia table=1 route=1 fixedaddress=0 rbx=off

IA Serial: Nothing Configured

set ia master=1 active=on type=tcp ipport=502 protocol=modbustcp table=1
set ia master=1 priority=medium messagetimeout=5500 chartimeout=50
set ia master=1 idletimeout=0 lineturnmode=off errorresponse=on
set ia master=1 broadcast=replace
set ia master=2 active=on type=udp ipport=502 protocol=modbustcp table=1
set ia master=2 priority=medium messagetimeout=5500 chartimeout=50
set ia master=2 idletimeout=0 lineturnmode=off errorresponse=on
set ia master=2 broadcast=replace

this is a trace:

#> set trace state=on mask=ia:i

1102418:ia:INFO:mbtcp:m00 recv req 250
1102421:ia:INFO:mbtcp:s00 send req 250
1102549:ia:INFO:mbtcp:s00 recv resp 250
1102549:ia:INFO:mbtcp:s00 last message, 127 msec to complete
1102549:ia:INFO:mbtcp:s00 start rsp min:15 avg:124 max:322 msec
1102549:ia:INFO:mbtcp:s00 full rsp min:15 avg:124 max:323 msec
1102552:ia:INFO:mbtcp:m00 last message, 134 msec to complete
1102553:ia:INFO:mbtcp:m00 send resp 250
1102553:ia:INFO:mbtcp:m00 full rsp min:62 avg:130 max:242 msec
1132245:ia:INFO:mbtcp:m00 recv req 251
1132250:ia:INFO:mbtcp:s00 send req 251
1132389:ia:INFO:mbtcp:s00 recv resp 251
1132389:ia:INFO:mbtcp:s00 last message, 139 msec to complete
1132389:ia:INFO:mbtcp:s00 start rsp min:15 avg:124 max:322 msec
1132389:ia:INFO:mbtcp:s00 full rsp min:15 avg:125 max:323 msec
1132393:ia:INFO:mbtcp:m00 last message, 147 msec to complete
1132393:ia:INFO:mbtcp:m00 send resp 251
1132393:ia:INFO:mbtcp:m00 full rsp min:62 avg:131 max:242 msec
1162924:ia:INFO:mbtcp:m00 recv req 252
1162928:ia:INFO:mbtcp:s00 send req 252
1162982:ia:INFO:mbtcp:s00 recv resp 252
1162983:ia:INFO:mbtcp:s00 last message, 54 msec to complete
1162983:ia:INFO:mbtcp:s00 start rsp min:15 avg:121 max:322 msec
1162983:ia:INFO:mbtcp:s00 full rsp min:15 avg:121 max:323 msec

this is my yml file:

devices:

  • name: xbee_device_manager
    driver: devices.xbee.xbee_device_manager.xbee_device_manager:XBeeDeviceManager

  • name: xbee_autoenum
    driver: devices.xbee.xbee_devices.xbee_autoenum:XBeeAutoEnum
    settings:
    discover_rate: 600
    xbee_device_manager: “xbee_device_manager”
    devices:
    - name: “auto_sensor”
    driver: “devices.modbus.mbdia_xbee_sensor:MBusXBeeSensor”
    settings:
    sleep: true
    sample_rate_ms: 12000
    awake_time_ms: 1000
    - name: “auto_smart_plug”
    driver: “devices.modbus.mbdia_xbee_rpm:MBusXBeeRPM”
    settings:
    sample_rate_ms: 10000
    default_state: “Off”
    device_profile: “fluor-mag”

  • name: mbus
    driver: devices.modbus.mbus_udp_device:MBusUDPDevice
    settings:
    poll_rate_sec: 30
    udp_peer: (‘127.0.0.1’,502)
    trace: ‘debug’
    round: 3
    poll_list:
    - poll: in01
    pollinfo: { ‘uid’:1, ‘fnc’:3, ‘ofs’:0, ‘cnt’:20 }
    channels:
    - parse: { ‘nam’:‘panel’, ‘ofs’:3, ‘frm’:‘]H’, ‘unt’:‘vdc’, ‘typ’:‘float’, ‘expr’:‘(%d/1000.0)*3.25’ }
    - parse: { ‘nam’:‘battery’, ‘ofs’:4, ‘frm’:‘]H’, ‘unt’:‘vdc’, ‘typ’:‘float’, ‘expr’:‘(%d/1000.0)*3.25’ }
    - parse: { ‘nam’:‘load’,‘ofs’:5,‘frm’:‘]H’,‘unt’:‘vdc’, ‘typ’:‘float’, ‘expr’:‘(%d/1000.0)*3.25’ }
    loggers:

  • name: embedded_log
    driver: channels.logging.file_logger.file_logger:FileLogger
    settings:
    filename: “WEB/python/idigi_dia.log”
    event_volume_size_k: 256

presentations:

  • name: web
    driver: presentations.web.web:Web
    settings:
    page: “idigi_dia”
    polling: 1
    use_default_httpserver: false

  • name: console0
    driver: presentations.console.console:Console

  • name: mbus_srv
    driver: presentations.modbus.mbdia_pres:MbDiaPresentation
    settings:
    mapping: “(‘auto’, 1, 20)”
    auto_enum_name: “xbee_autoenum”

this is my mbus_map.txt

Dia Modbus Server unit_id mapping as of 2012-09-07 13:52:18

1,‘IFD - Smart Plug’,‘XBeeRPM’,‘[00:13:a2:00:40:60:f3:3a]!’
2,‘IFD - Sensor’,‘XBeeSensor_LT’,‘[00:13:a2:00:40:69:05:09]!’

I follow all about modbus with this pages:

http://www.digi.com/wiki/developer/index.php/Modbus_Dia_Code_Add-On
http://www.digi.com/wiki/developer/index.php/Modbus_Dia_Server

Everything seems ok, but I cant read what I need

In Kepware this is the result:

Device ‘digi.CPX4’ block request [400001 to 400001] responded with exception 6

In modbuspoll I get:

Slave Device Busy

I need help to make it work properly…

Thanks a lot, see you soon.

I have deleted the IA table I created before, so the Dia server create a valid table.

#> show ia all
set ia table=1 state=on name=DiaModbus family=modbus accessmode=multi
set ia table=1 ownerperiod=15000
set ia table=1 addroute=1
set ia table=1 route=1 active=on type=ip protaddr=0-255 protocol=modbustcp
set ia table=1 route=1 transport=udp connect=passive address=127.0.0.1
set ia table=1 route=1 ipport=8502 replaceip=off slavetimeout=1000
set ia table=1 route=1 chartimeout=50 idletimeout=0 lineturnmode=off
set ia table=1 route=1 fixedaddress=0 rbx=off
IA Serial: Nothing Configured
set ia master=1 active=on type=tcp ipport=502 protocol=modbustcp table=1
set ia master=1 priority=medium messagetimeout=5500 chartimeout=50
set ia master=1 idletimeout=0 lineturnmode=off errorresponse=off broadcast=off
set ia master=2 active=on type=udp ipport=502 protocol=modbustcp table=1
set ia master=2 priority=medium messagetimeout=5500 chartimeout=50
set ia master=2 idletimeout=0 lineturnmode=off errorresponse=off broadcast=off

But nothing yet…

Any idea please…

Thanks, see you soon.