Try to sync SDO, WIP

This commit is contained in:
Anders Sandstrom
2021-03-09 16:51:34 +01:00
parent e5e754f5e8
commit 8f5ea3acd9
9 changed files with 152 additions and 39 deletions

View File

@@ -1,15 +1,12 @@
IOC_TEST:PLC-0-enable
REQMOD:mcag-trgt-muts--5302:MODULES
REQMOD:mcag-trgt-muts--5302:VERSIONS
REQMOD:mcag-trgt-muts--5302:MOD_VER
REQMOD:mcag-trgt-muts--5302:exit
REQMOD:mcag-trgt-muts--5302:BaseVersion
REQMOD:mcag-trgt-muts--5302:require_VER
REQMOD:mcag-trgt-muts--5302:ecmccfg_VER
REQMOD:mcag-trgt-muts--5302:asyn_VER
REQMOD:mcag-trgt-muts--5302:exprtk_VER
REQMOD:mcag-trgt-muts--5302:motor_VER
REQMOD:mcag-trgt-muts--5302:ecmc_VER
REQMOD:mcag-trgt-muts--5302:ecmc_plugin_socketcan_VER
IOC_TEST:PLC-0-scantime
IOC_TEST:PLC-0-error
REQMOD:mcag-trgt-muts--20872:MODULES
REQMOD:mcag-trgt-muts--20872:VERSIONS
REQMOD:mcag-trgt-muts--20872:MOD_VER
REQMOD:mcag-trgt-muts--20872:exit
REQMOD:mcag-trgt-muts--20872:BaseVersion
REQMOD:mcag-trgt-muts--20872:require_VER
REQMOD:mcag-trgt-muts--20872:ecmccfg_VER
REQMOD:mcag-trgt-muts--20872:asyn_VER
REQMOD:mcag-trgt-muts--20872:exprtk_VER
REQMOD:mcag-trgt-muts--20872:motor_VER
REQMOD:mcag-trgt-muts--20872:ecmc_VER
REQMOD:mcag-trgt-muts--20872:ecmc_plugin_socketcan_VER

View File

@@ -21,17 +21,78 @@ $(ECMCCFG_INIT)$(SCRIPTEXEC) ${ecmccfg_DIR}startup.cmd, "IOC=$(IOC),ECMC_VER=6.3
##############################################################################
## Load plugin:
require ecmc_plugin_socketcan master # do not require then loaded twice..
require ecmc_plugin_socketcan master
epicsEnvSet(ECMC_PLUGIN_FILNAME,"/home/dev/epics/base-7.0.4/require/${E3_REQUIRE_VERSION}/siteMods/ecmc_plugin_socketcan/master/lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_socketcan.so")
epicsEnvSet(ECMC_PLUGIN_CONFIG,"IF=can0;DBG_PRINT=1;") # Only one option implemented in this plugin
epicsEnvSet(ECMC_PLUGIN_CONFIG,"IF=vcan0;DBG_PRINT=1;") # Only one option implemented in this plugin
${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=0,FILE=${ECMC_PLUGIN_FILNAME},CONFIG='${ECMC_PLUGIN_CONFIG}', REPORT=1"
epicsEnvUnset(ECMC_PLUGIN_FILNAME)
epicsEnvUnset(ECMC_PLUGIN_CONFIG)
##############################################################################
## PLC 0
$(SCRIPTEXEC) $(ecmccfg_DIR)loadPLCFile.cmd, "PLC_ID=0, SAMPLE_RATE_MS=1000,FILE=./plc/can.plc")
# $(SCRIPTEXEC) $(ecmccfg_DIR)loadPLCFile.cmd, "PLC_ID=0, SAMPLE_RATE_MS=1000,FILE=./plc/can.plc")
##############################################################################
############# Prepare virt can for test:
# Install can utils:
# $ git clone https://github.com/linux-can/can-utils
# $ cd can-utils
# $ make
# $ make install
#
# Start virt can 0 (vcan0) and candump:
# $ sudo modprobe vcan
# $ sudo ip link add dev vcan0 type vcan
# $ sudo ip link set up vcan0
# $ candump vcan0
##############################################################################
############# Configure CAN plugin:
# Commands:
# ecmcCANOpenAddMaster -h
# Use ecmcCANOpenAddMaster(<name>, <node id>,....)
# <name> : Name of master device.
# <node id> : CANOpen node id of master.
# <LSS sample time ms> : Sample time for LSS.
# <Sync sample time ms> : Sample time for SYNC.
# <Heartbeat sample time ms> : Sample time for Heartbeat.
#
ecmcCANOpenAddMaster("ecmcCANOpenMaster",0,1000,1000,1000)
# ecmcCANOpenAddDevice -h
# Use ecmcCANOpenAddDevice(<name>, <node id>)
# <name> : Name of device.
# <node id> : CANOpen node id of device.
#
ecmcCANOpenAddDevice("testDevice",3)
# ecmcCANOpenAddPDO -h
# Use "ecmcCANOpenAddPDO(<name>, <node id>
# <name> : Name of master device.
# <node id> : CANOpen node id of device/master.
# <cob id> : CANOpen cob id of PDO.
# <dir> : Direction 1=write and 2=read.
# <ODSize> : Size of PDO (max 8 bytes).
# <readTimeoutMs> : Readtimeout in ms.
# <writeCycleMs> : Cycle time for write (if <= 0 then only write on change).
ecmcCANOpenAddPDO("status",3,0x183,2,8,10000,0) # READ
# ecmcCANOpenAddSDO -h
# Use ecmcCANOpenAddSDO(<name>, <node id>,.....)
# <name> : Name of master device.
# <node id> : CANOpen node id of device/master.
# <cob id tx> : CANOpen cob id of Tx of slave SDO.
# <cob id rx> : CANOpen cob id of Rx of slave SDO.
# <dir> : Direction 1=write and 2=read.
# <ODIndex> : OD index of SDO.
# <ODSubIndex> : OD sub index of SDO.
# <ODSize> : OS Size.
# <readTimeoutMs> : Readtimeout in ms.
#
ecmcCANOpenAddSDO("analogValues",3,0x583,0x603,2,0x2640,0x0,56,7000) # READ
ecmcCANOpenAddSDO("basicConfig",3,0x583,0x603,1,0x2690,0x1,7,0) # WRITE
##############################################################################
############# Go to realtime: