1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 <2021> 2022 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 <2021> 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | 回复: modbus TCP |
From: | liuxiaomin via Tech-talk <tech-talk at aps.anl.gov> |
To: | Mark Rivers <rivers at cars.uchicago.edu> |
Cc: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Fri, 24 Sep 2021 18:50:36 +0800 |
Hi Mark, I am sorry to have sent you two emails,the first one can be ignored. Thank you for your answer, My type of device at that IP address is MPDU. I changed the IP address.( 192.168.1.163:8055) . And the complete output is as follows: #!../../bin/linux-x86_64/sinModbus < envPaths epicsEnvSet("IOC","iocsinModbus") epicsEnvSet("TOP","/home/iocusr/sinModbus") epicsEnvSet("MODULES","/opt/epics/base/../modules") epicsEnvSet("AUTOSAVE","/opt/epics/base/../modules/autosave-R5-7-1") epicsEnvSet("ASYN","/opt/epics/base/../modules/asyn-R4-41") epicsEnvSet("BUSY","/opt/epics/base/../modules/busy-1-6-1") epicsEnvSet("CALC","/opt/epics/base/../modules/calc-R3-7-4") epicsEnvSet("CAPUTLOG","/opt/epics/base/../modules/caPutLog-3-5") epicsEnvSet("IOCSTATS","/opt/epics/base/../modules/iocStats-3-1-16") epicsEnvSet("MODBUS","/opt/epics/base/../modules/modbus-R3-2") epicsEnvSet("NETDEV","/opt/epics/base/../modules/netDev-1-0-6") epicsEnvSet("PC-MONITOR","/opt/epics/base/../modules/PC-MONITOR1-0-2") epicsEnvSet("PROCSERVCONTROL","/opt/epics/base/../modules/procServControl-1-9") epicsEnvSet("S7NODAVE","/opt/epics/base/../modules/s7nodave-2-1-3") epicsEnvSet("S7PLC","/opt/epics/base/../modules/s7plc") epicsEnvSet("SSCAN","/opt/epics/base/../modules/sscan-2-10") epicsEnvSet("STREAM","/opt/epics/base/../modules/StreamDevice-2-8-9") epicsEnvSet("SNCSEQ","/opt/epics/base/../modules/seq-2-2-6") epicsEnvSet("EPICS_BASE","/opt/epics/base") epicsEnvSet("EPICS_CA_SERVER_PORT", 5064) #epicsEnvSet("IOCNAME","sinModbus") ## Register all support components dbLoadDatabase "../../dbd/sinModbus.dbd" sinModbus_registerRecordDeviceDriver pdbbase #asynReport(10,"CAT1") # Configure IP port drvAsynIPPortConfigure("CAT1","192.168.1.163:8055",0,0,1) # Configure modbus modbusInterposeConfig("CAT1",0,2000,0) drvModbusAsynConfigure("AI1R","CAT1",0,3,0010,2,0,100,"CAT") #cd "${TOP}/iocBoot/${IOC}" dbLoadRecords "../../db/dbpdu.db", "DEVNAME=TEST" iocInit Starting iocInit ############################################################################ ## EPICS R7.0.5 ## Rev. 2021-09-13T15:44+0800 ############################################################################ drvStreamInit: Warning! STREAM_PROTOCOL_PATH not set. Defaults to "." sevr=info s7plcInit: no stations configured iocRun: All initialization complete dbl TEST:IN1 epics> 2021/09/24 18:14:37.388 drvModbusAsyn::doModbusIO port AI1R error calling writeRead, error=192.168.1.163:8055 timeout: Resource temporarily unavailable, nwrite=6/6, nread=0 After I typing asynReport 1,the complete output is as follows: epics> asynReport 1 CAT1 multiDevice:No canBlock:Yes autoConnect:Yes enabled:Yes connected:Yes numberConnects 1 nDevices 0 nQueued 0 blocked:No asynManagerLock:No synchronousLock:No exceptionActive:No exceptionUsers 0 exceptionNotifys 0 traceMask:0x1 traceIOMask:0x0 traceInfoMask:0x1 Port 192.168.1.163:8055: Connected AI1R multiDevice:Yes canBlock:Yes autoConnect:Yes enabled:Yes connected:Yes numberConnects 1 nDevices 1 nQueued 0 blocked:No asynManagerLock:No synchronousLock:No exceptionActive:No exceptionUsers 0 exceptionNotifys 0 traceMask:0x1 traceIOMask:0x0 traceInfoMask:0x1 addr 0 autoConnect Yes enabled Yes connected Yes exceptionActive No exceptionActive No exceptionUsers 0 exceptionNotifys 0 blocked No traceMask:0x1 traceIOMask:0x0 traceInfoMask:0x1 modbus port: AI1R initialized: true asynOctet server: CAT1 modbusSlave: 0 modbusFunction: 3 modbusStartAddress: 010 modbusLength: 02 absoluteAddressing: false dataType: 0 (INT16) plcType: I/O errors: 9 Read OK: 0 Write OK: 0 pollDelay: 0.100000 Time for last I/O 0 msec Max. I/O time: 0 msec Time per hist. bin: 1 msec Port: AI1R Timestamp: <undefined> Input EOS[0]: Output EOS[0]: Parameter list 0 Number of parameters is: 12 Parameter 0 type=asynInt32, name=MODBUS_DATA, value is undefined Parameter 1 type=asynInt32, name=MODBUS_READ, value is undefined Parameter 2 type=asynUInt32Digital, name=ENABLE_HISTOGRAM, value is undefined Parameter 3 type=asynInt32, name=READ_HISTOGRAM, value is undefined Parameter 4 type=asynInt32, name=HISTOGRAM_BIN_TIME, value is undefined Parameter 5 type=asynInt32Array, name=HISTOGRAM_TIME_AXIS, value is undefined Parameter 6 type=asynFloat64, name=POLL_DELAY, value is undefined Parameter 7 type=asynInt32, name=READ_OK, value=0, status=0 Parameter 8 type=asynInt32, name=WRITE_OK, value=0, status=0 Parameter 9 type=asynInt32, name=IO_ERRORS, value=9, status=0 Parameter 10 type=asynInt32, name=LAST_IO_TIME, value=0, status=0 Parameter 11 type=asynInt32, name=MAX_IO_TIME, value=0, status=0 epics> Then, $ caget TEST:IN1 CA.Client.Exception…............................................ Warning: “Identical process variable names on multiple servers” Context: “Channel: “TEST:IN1”, Connecting to: 192.168.1.160:41299, Ignored: 192.168.1.160:5064” Source File: ../cac.cpp line 1320 Current Time: Fri Sep 24 2021 18:16:53.789456666 …............................................................... TEST:IN1 0 Finally, I found the result read value was wrong. 从 Windows 版邮件发送 发件人: Mark Rivers Hi, Sorry I did not see your second message before I answered your first one. The st.cmd looks OK to me. Please send the complete output when the IOC boots. Mark ________________________________ From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of liuxiaomin via Tech-talk <tech-talk at aps.anl.gov> Sent: Wednesday, September 22, 2021 1:45 AM To: tech-talk at aps.anl.gov Subject: modbus TCP Hi, I am trying to use modbus on debian system to control device, The st.cmd files is as follows: drvAsynIPPortConfigure("CAT1","192.168.1.163:502",0,0,1) modbusInterposeConfig("CAT1",0,2000,0) drvModbusAsynConfigure("CAT_AI1R","CAT1",0,3,0008,2,0,100, "CAT") The db files is as follows: record(ai, "$(DEVNAME):IN1") { field(DTYP,"asynInt32") field(INP,"@asynMask(CAT_AI1R 0 16)INT16") field(PREC,"1") field(SCAN,"I/O Intr") } When I execute the st.cmd file,it shows the following error: drvStreamInit: Warning! STREAM_PROTOCOL_PATH not set. Defaults to "." TEST:CAT1:IN1 devAsynInt32::initCommon connectDevice failed asynManager:connectDevice port CAT_AI1R not found How can I solve this problem? Thanks, Xiaomin 从 Windows 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>发送 |