Compare commits

...

2 Commits

16 changed files with 2454 additions and 266 deletions

View File

@ -6,9 +6,28 @@ Index,Sub,EDSname,Datatype,Access,Value,varname,LowLimit,UpLimit,hasDefault,hasL
0x1008,0x00,Manufacturer device name,VISIBLE_STRING,const,emotas Slave 1,NONE,0,0,yes,no,no,no,1,ManagedConst,14,,no 0x1008,0x00,Manufacturer device name,VISIBLE_STRING,const,emotas Slave 1,NONE,0,0,yes,no,no,no,1,ManagedConst,14,,no
0x1014,0x00,COB ID EMCY,UNSIGNED32,ro,$NODEID+0x80,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no 0x1014,0x00,COB ID EMCY,UNSIGNED32,ro,$NODEID+0x80,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1015,0x00,Inhibit Time Emergency,UNSIGNED16,rw,0,NONE,0,65535,yes,no,no,no,1,ManagedVariable,0,,no 0x1015,0x00,Inhibit Time Emergency,UNSIGNED16,rw,0,NONE,0,65535,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x00,Consumer Heartbeat Time Number of entries,UNSIGNED8,ro,1,NONE,0,255,yes,no,no,no,1,ManagedConst,0,ARRAY,no 0x1016,0x00,Consumer Heartbeat Time Number of entries,UNSIGNED8,ro,20,NONE,0,255,yes,no,no,no,1,ManagedConst,0,ARRAY,no
0x1016,0x01,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,0,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no 0x1016,0x01,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1017,0x00,Producer Heartbeat Time,UNSIGNED16,rw,1500,NONE,0,65535,no,no,no,no,0,ManagedVariable,0,,no 0x1016,0x02,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x03,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x04,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x05,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x06,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x07,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x08,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x09,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x0a,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x0b,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x0c,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x0d,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x0e,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x0f,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x10,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x11,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x12,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x13,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1016,0x14,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no
0x1017,0x00,Producer Heartbeat Time,UNSIGNED16,rw,100,NONE,0,65535,no,no,no,no,0,ManagedVariable,0,,no
0x1018,0x00,Identity Object Number of entries,UNSIGNED8,ro,4,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no 0x1018,0x00,Identity Object Number of entries,UNSIGNED8,ro,4,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no
0x1018,0x01,Identity Object Vendor Id,UNSIGNED32,ro,793,NONE,0,4294967295,yes,no,no,no,1,ManagedConst,0,,no 0x1018,0x01,Identity Object Vendor Id,UNSIGNED32,ro,793,NONE,0,4294967295,yes,no,no,no,1,ManagedConst,0,,no
0x1018,0x02,Identity Object Product Code,UNSIGNED32,ro,1234,NONE,0,4294967295,yes,no,no,no,1,ManagedConst,0,,no 0x1018,0x02,Identity Object Product Code,UNSIGNED32,ro,1234,NONE,0,4294967295,yes,no,no,no,1,ManagedConst,0,,no
@ -153,6 +172,27 @@ Index,Sub,EDSname,Datatype,Access,Value,varname,LowLimit,UpLimit,hasDefault,hasL
0x1804,0x04,TPDO communication parameter Inhibit time,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no 0x1804,0x04,TPDO communication parameter Inhibit time,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no
0x1804,0x05,TPDO communication parameter Event timer,UNSIGNED16,rw,500,NONE,0,0xffff,yes,no,no,no,0,ManagedVariable,0,,no 0x1804,0x05,TPDO communication parameter Event timer,UNSIGNED16,rw,500,NONE,0,0xffff,yes,no,no,no,0,ManagedVariable,0,,no
0x1804,0x06,TPDO communication parameter SYNC start value,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no 0x1804,0x06,TPDO communication parameter SYNC start value,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no
0x1805,0x00,TPDO communication parameter Highest sub-index supported,UNSIGNED8,const,6,NONE,2,6,yes,no,no,no,1,ManagedConst,0,RECORD,both
0x1805,0x01,TPDO communication parameter COB-ID used by TPDO,UNSIGNED32,rw,$NODEID+0x180+2,NONE,128,4294967295,yes,no,no,no,2,ManagedVariable,0,,tpdo
0x1805,0x02,TPDO communication parameter Transmission type,UNSIGNED8,rw,254,NONE,0,255,yes,no,no,no,0,ManagedVariable,0,,no
0x1805,0x03,TPDO communication parameter Inhibit time,UNSIGNED16,rw,,NONE,0,0xffff,yes,no,no,no,0,ManagedVariable,0,,no
0x1805,0x04,TPDO communication parameter Inhibit time,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no
0x1805,0x05,TPDO communication parameter Event timer,UNSIGNED16,rw,500,NONE,0,0xffff,yes,no,no,no,0,ManagedVariable,0,,no
0x1805,0x06,TPDO communication parameter SYNC start value,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no
0x1806,0x00,TPDO communication parameter Highest sub-index supported,UNSIGNED8,const,6,NONE,2,6,yes,no,no,no,1,ManagedConst,0,RECORD,both
0x1806,0x01,TPDO communication parameter COB-ID used by TPDO,UNSIGNED32,rw,$NODEID+0x180+3,NONE,128,4294967295,yes,no,no,no,2,ManagedVariable,0,,tpdo
0x1806,0x02,TPDO communication parameter Transmission type,UNSIGNED8,rw,254,NONE,0,255,yes,no,no,no,0,ManagedVariable,0,,no
0x1806,0x03,TPDO communication parameter Inhibit time,UNSIGNED16,rw,,NONE,0,0xffff,yes,no,no,no,0,ManagedVariable,0,,no
0x1806,0x04,TPDO communication parameter Inhibit time,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no
0x1806,0x05,TPDO communication parameter Event timer,UNSIGNED16,rw,500,NONE,0,0xffff,yes,no,no,no,0,ManagedVariable,0,,no
0x1806,0x06,TPDO communication parameter SYNC start value,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no
0x1807,0x00,TPDO communication parameter Highest sub-index supported,UNSIGNED8,const,6,NONE,2,6,yes,no,no,no,1,ManagedConst,0,RECORD,both
0x1807,0x01,TPDO communication parameter COB-ID used by TPDO,UNSIGNED32,rw,$NODEID+0x180+4,NONE,128,4294967295,yes,no,no,no,2,ManagedVariable,0,,tpdo
0x1807,0x02,TPDO communication parameter Transmission type,UNSIGNED8,rw,254,NONE,0,255,yes,no,no,no,0,ManagedVariable,0,,no
0x1807,0x03,TPDO communication parameter Inhibit time,UNSIGNED16,rw,,NONE,0,0xffff,yes,no,no,no,0,ManagedVariable,0,,no
0x1807,0x04,TPDO communication parameter Inhibit time,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no
0x1807,0x05,TPDO communication parameter Event timer,UNSIGNED16,rw,500,NONE,0,0xffff,yes,no,no,no,0,ManagedVariable,0,,no
0x1807,0x06,TPDO communication parameter SYNC start value,UNSIGNED8,rw,,NONE,0,0xff,yes,no,no,no,0,ManagedVariable,0,,no
0x1a00,0x00,Conductivity Data OUT1 Number of entries,UNSIGNED8,const,2,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no 0x1a00,0x00,Conductivity Data OUT1 Number of entries,UNSIGNED8,const,2,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no
0x1a00,0x01,Conductivity Data OUT1 Mapping Entry 1,UNSIGNED32,const,1610744096,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo 0x1a00,0x01,Conductivity Data OUT1 Mapping Entry 1,UNSIGNED32,const,1610744096,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo
0x1a00,0x02,Conductivity Data OUT1 Mapping Entry 2,UNSIGNED32,const,1610744352,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo 0x1a00,0x02,Conductivity Data OUT1 Mapping Entry 2,UNSIGNED32,const,1610744352,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo
@ -166,8 +206,16 @@ Index,Sub,EDSname,Datatype,Access,Value,varname,LowLimit,UpLimit,hasDefault,hasL
0x1a03,0x01, Pressue and Flowmeter Data OUT1 Mapping Entry 1,UNSIGNED32,const,1610875168,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo 0x1a03,0x01, Pressue and Flowmeter Data OUT1 Mapping Entry 1,UNSIGNED32,const,1610875168,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo
0x1a03,0x02, Pressue and Flowmeter Data OUT1 Mapping Entry 2,UNSIGNED32,const,1610940704,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo 0x1a03,0x02, Pressue and Flowmeter Data OUT1 Mapping Entry 2,UNSIGNED32,const,1610940704,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo
0x1a04,0x00, Pressue and Flowmeter Data OUT2 Number of entries,UNSIGNED8,const,2,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no 0x1a04,0x00, Pressue and Flowmeter Data OUT2 Number of entries,UNSIGNED8,const,2,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no
0x1a04,0x01, Pressue and Flowmeter Data OUT2 Mapping Entry 1,UNSIGNED32,const,1610679072,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo 0x1a04,0x01, Pressue and Flowmeter Data OUT2 Mapping Entry 1,UNSIGNED32,const,1610875424,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,no
0x1a04,0x02, Pressue and Flowmeter Data OUT2 Mapping Entry 2,UNSIGNED32,const,1610679328,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo 0x1a04,0x02, Pressue and Flowmeter Data OUT2 Mapping Entry 2,UNSIGNED32,const,1610940960,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,no
0x1a05,0x00, Pressue and Flowmeter Data OUT3 Number of entries,UNSIGNED8,const,2,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no
0x1a05,0x01, Pressue and Flowmeter Data OUT3 Mapping Entry 1,UNSIGNED32,const,1610875680,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,no
0x1a05,0x02, Pressue and Flowmeter Data OUT3 Mapping Entry 2,UNSIGNED32,const,1610941216,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,no
0x1a06,0x00, Pressue and Flowmeter Data OUT4 Number of entries,UNSIGNED8,const,2,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no
0x1a06,0x01, Pressue and Flowmeter Data OUT4 Mapping Entry 1,UNSIGNED32,const,1610875936,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,no
0x1a06,0x02, Pressue and Flowmeter Data OUT4 Mapping Entry 2,UNSIGNED32,const,1610941472,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,no
0x1a07,0x00,Pump Data OUT Number of entries,UNSIGNED8,const,1,NONE,0,255,yes,no,no,no,1,ManagedConst,0,RECORD,no
0x1a07,0x01,Pump Data OUT Mapping Entry 1,UNSIGNED32,const,1611005984,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,no
0x2001,0x00,Manufacturer Object,INTEGER32,rw,4,NONE,0,0,no,no,no,no,0,ManagedVariable,0,,both 0x2001,0x00,Manufacturer Object,INTEGER32,rw,4,NONE,0,0,no,no,no,no,0,ManagedVariable,0,,both
0x3000,0x00,Managed Array NUmber of Entries,UNSIGNED8,ro,2,NONE,0,0,yes,no,no,no,1,ManagedConst,0,ARRAY,no 0x3000,0x00,Managed Array NUmber of Entries,UNSIGNED8,ro,2,NONE,0,0,yes,no,no,no,1,ManagedConst,0,ARRAY,no
@ -213,3 +261,4 @@ Index,Sub,EDSname,Datatype,Access,Value,varname,LowLimit,UpLimit,hasDefault,hasL
0x6005,0x02,Pressure Sensor Data OUT PS2 OUT,REAL32,rw,,NONE,,,yes,no,no,no,1,ManagedVariable,0,,both 0x6005,0x02,Pressure Sensor Data OUT PS2 OUT,REAL32,rw,,NONE,,,yes,no,no,no,1,ManagedVariable,0,,both
0x6005,0x03,Pressure Sensor Data OUT PS3 OUT,REAL32,rw,,NONE,,,yes,no,no,no,1,ManagedVariable,0,,both 0x6005,0x03,Pressure Sensor Data OUT PS3 OUT,REAL32,rw,,NONE,,,yes,no,no,no,1,ManagedVariable,0,,both
0x6005,0x04,Pressure Sensor Data OUT PS4 OUT,REAL32,rw,,NONE,,,yes,no,no,no,1,ManagedVariable,0,,both 0x6005,0x04,Pressure Sensor Data OUT PS4 OUT,REAL32,rw,,NONE,,,yes,no,no,no,1,ManagedVariable,0,,both
0x6006,0x00,Pump Data OUT,UNSIGNED32,rw,,NONE,0,0xffffffff,yes,no,no,no,1,ManagedVariable,0,,tpdo

Can't render this file because it has a wrong number of fields in line 219.

View File

@ -5,10 +5,10 @@ FileVersion=1.0
FileRevision=1.0 FileRevision=1.0
EDSVersion=4.0 EDSVersion=4.0
Description=EDS Description=EDS
CreationTime=14:59PM CreationTime=13:57PM
CreationDate=02-25-25 CreationDate=04-25-25
ModificationTime=14:59PM ModificationTime=13:57PM
ModificationDate=02-25-25 ModificationDate=04-25-25
CreatedBy=Aniket Saha CreatedBy=Aniket Saha
ModifiedBy=Aniket Saha ModifiedBy=Aniket Saha
@ -32,7 +32,7 @@ BaudRate_500=0
BaudRate_800=0 BaudRate_800=0
BaudRate_1000=0 BaudRate_1000=0
NrOfRxPDO=3 NrOfRxPDO=3
NrOfTxPDO=5 NrOfTxPDO=8
SimpleBootupSlave=1 SimpleBootupSlave=1
SimpleBootupMaster=0 SimpleBootupMaster=0
LSS_Supported=0 LSS_Supported=0
@ -61,7 +61,7 @@ SupportedObjects=2
2=0x3000 2=0x3000
[OptionalObjects] [OptionalObjects]
SupportedObjects=51 SupportedObjects=58
1=0x1003 1=0x1003
2=0x1008 2=0x1008
3=0x1014 3=0x1014
@ -102,17 +102,24 @@ SupportedObjects=51
38=0x1802 38=0x1802
39=0x1803 39=0x1803
40=0x1804 40=0x1804
41=0x1a00 41=0x1805
42=0x1a01 42=0x1806
43=0x1a02 43=0x1807
44=0x1a03 44=0x1a00
45=0x1a04 45=0x1a01
46=0x6000 46=0x1a02
47=0x6001 47=0x1a03
48=0x6002 48=0x1a04
49=0x6003 49=0x1a05
50=0x6004 50=0x1a06
51=0x6005 51=0x1a07
52=0x6000
53=0x6001
54=0x6002
55=0x6003
56=0x6004
57=0x6005
58=0x6006
[1000] [1000]
ParameterName=Device Type ParameterName=Device Type
@ -1672,6 +1679,174 @@ DataType=5
AccessType=rw AccessType=rw
PDOMapping=0 PDOMapping=0
[1805]
ParameterName=TPDO communication parameter
ObjectType=9
SubNumber=7
[1805sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=1
DefaultValue=6
[1805sub1]
ParameterName=COB-ID used by TPDO
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=1
DefaultValue=$NODEID+0x180+2
[1805sub2]
ParameterName=Transmission type
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1805sub3]
ParameterName=Inhibit time
ObjectType=7
DataType=6
AccessType=rw
PDOMapping=0
[1805sub4]
ParameterName=Inhibit time
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1805sub5]
ParameterName=Event timer
ObjectType=7
DataType=6
AccessType=rw
PDOMapping=0
[1805sub6]
ParameterName=SYNC start value
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1806]
ParameterName=TPDO communication parameter
ObjectType=9
SubNumber=7
[1806sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=1
DefaultValue=6
[1806sub1]
ParameterName=COB-ID used by TPDO
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=1
DefaultValue=$NODEID+0x180+3
[1806sub2]
ParameterName=Transmission type
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1806sub3]
ParameterName=Inhibit time
ObjectType=7
DataType=6
AccessType=rw
PDOMapping=0
[1806sub4]
ParameterName=Inhibit time
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1806sub5]
ParameterName=Event timer
ObjectType=7
DataType=6
AccessType=rw
PDOMapping=0
[1806sub6]
ParameterName=SYNC start value
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1807]
ParameterName=TPDO communication parameter
ObjectType=9
SubNumber=7
[1807sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=1
DefaultValue=6
[1807sub1]
ParameterName=COB-ID used by TPDO
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=1
DefaultValue=$NODEID+0x180+4
[1807sub2]
ParameterName=Transmission type
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1807sub3]
ParameterName=Inhibit time
ObjectType=7
DataType=6
AccessType=rw
PDOMapping=0
[1807sub4]
ParameterName=Inhibit time
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1807sub5]
ParameterName=Event timer
ObjectType=7
DataType=6
AccessType=rw
PDOMapping=0
[1807sub6]
ParameterName=SYNC start value
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1a00] [1a00]
ParameterName=Conductivity Data OUT1 ParameterName=Conductivity Data OUT1
ObjectType=9 ObjectType=9
@ -1806,16 +1981,95 @@ ParameterName=Mapping Entry 1
ObjectType=7 ObjectType=7
DataType=7 DataType=7
AccessType=const AccessType=const
PDOMapping=1 PDOMapping=0
DefaultValue=0x60010320 DefaultValue=0x60040220
[1a04sub2] [1a04sub2]
ParameterName=Mapping Entry 2 ParameterName=Mapping Entry 2
ObjectType=7 ObjectType=7
DataType=7 DataType=7
AccessType=const AccessType=const
PDOMapping=1 PDOMapping=0
DefaultValue=0x60010420 DefaultValue=0x60050220
[1a05]
ParameterName= Pressue and Flowmeter Data OUT3
ObjectType=9
SubNumber=3
[1a05sub0]
ParameterName=Number of entries
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=2
[1a05sub1]
ParameterName=Mapping Entry 1
ObjectType=7
DataType=7
AccessType=const
PDOMapping=0
DefaultValue=0x60040320
[1a05sub2]
ParameterName=Mapping Entry 2
ObjectType=7
DataType=7
AccessType=const
PDOMapping=0
DefaultValue=0x60050320
[1a06]
ParameterName= Pressue and Flowmeter Data OUT4
ObjectType=9
SubNumber=3
[1a06sub0]
ParameterName=Number of entries
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=2
[1a06sub1]
ParameterName=Mapping Entry 1
ObjectType=7
DataType=7
AccessType=const
PDOMapping=0
DefaultValue=0x60040420
[1a06sub2]
ParameterName=Mapping Entry 2
ObjectType=7
DataType=7
AccessType=const
PDOMapping=0
DefaultValue=0x60050420
[1a07]
ParameterName=Pump Data OUT
ObjectType=9
SubNumber=2
[1a07sub0]
ParameterName=Number of entries
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=1
[1a07sub1]
ParameterName=Mapping Entry 1
ObjectType=7
DataType=7
AccessType=const
PDOMapping=0
DefaultValue=0x60060020
[2001] [2001]
ParameterName=Manufacturer Object ParameterName=Manufacturer Object
@ -2160,3 +2414,10 @@ DataType=8
AccessType=rw AccessType=rw
PDOMapping=1 PDOMapping=1
[6006]
ParameterName=Pump Data OUT
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=1

File diff suppressed because it is too large Load Diff

View File

@ -17,10 +17,29 @@ index,sub,objectcode,datatype,edsname,varname,access,mapable,hasdefault,defaulti
0x1015,0x00,VARIABLE,UNSIGNED16,Inhibit Time Emergency,,rw,no,1,1,0,,0,ManagedVariable,no,0,65535,no 0x1015,0x00,VARIABLE,UNSIGNED16,Inhibit Time Emergency,,rw,no,1,1,0,,0,ManagedVariable,no,0,65535,no
0x1016,,ARRAY,UNSIGNED32,Consumer Heartbeat Time,,,,,,,,,,,,,, 0x1016,,ARRAY,UNSIGNED32,Consumer Heartbeat Time,,,,,,,,,,,,,,
0x1016,0x00,,UNSIGNED32,Number of entries,,ro,no,1,1,1,,0,ManagedConst,no,0,255,no 0x1016,0x00,,UNSIGNED32,Number of entries,,ro,no,1,1,20,,0,ManagedConst,no,0,255,no
0x1016,0x01,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,0,,0,ManagedVariable,no,0,4294967295,no 0x1016,0x01,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x02,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x03,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x04,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x05,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x06,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x07,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x08,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x09,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x0a,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x0b,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x0c,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x0d,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x0e,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x0f,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x10,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x11,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x12,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x13,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1016,0x14,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,500,,0,ManagedVariable,no,0,4294967295,no
0x1017,0x00,VARIABLE,UNSIGNED16,Producer Heartbeat Time,,rw,no,0,0,1500,,0,ManagedVariable,no,0,65535,no 0x1017,0x00,VARIABLE,UNSIGNED16,Producer Heartbeat Time,,rw,no,0,0,100,,0,ManagedVariable,no,0,65535,no
0x1018,,RECORD,UNSIGNED8,Identity Object,,,,,,,,,,,,,, 0x1018,,RECORD,UNSIGNED8,Identity Object,,,,,,,,,,,,,,
0x1018,0x00,,UNSIGNED8,Number of entries,,ro,no,1,1,4,,0,ManagedConst,no,0,255,no 0x1018,0x00,,UNSIGNED8,Number of entries,,ro,no,1,1,4,,0,ManagedConst,no,0,255,no
@ -235,6 +254,33 @@ index,sub,objectcode,datatype,edsname,varname,access,mapable,hasdefault,defaulti
0x1804,0x05,,UNSIGNED16,Event timer,,rw,no,1,0,500,,0,ManagedVariable,no,0,0xffff,no 0x1804,0x05,,UNSIGNED16,Event timer,,rw,no,1,0,500,,0,ManagedVariable,no,0,0xffff,no
0x1804,0x06,,UNSIGNED8,SYNC start value,,rw,no,1,0,,,0,ManagedVariable,no,0,0xff,no 0x1804,0x06,,UNSIGNED8,SYNC start value,,rw,no,1,0,,,0,ManagedVariable,no,0,0xff,no
0x1805,,RECORD,UNSIGNED8,TPDO communication parameter,,,,,,,,,,,,,,
0x1805,0x00,,UNSIGNED8,Highest sub-index supported,,const,both,1,1,6,,0,ManagedConst,no,2,6,no
0x1805,0x01,,UNSIGNED32,COB-ID used by TPDO,,rw,tpdo,1,2,$NODEID+0x180+2,,0,ManagedVariable,no,128,4294967295,no
0x1805,0x02,,UNSIGNED8,Transmission type,,rw,no,1,0,254,,0,ManagedVariable,no,0,255,no
0x1805,0x03,,UNSIGNED16,Inhibit time,,rw,no,1,0,,,0,ManagedVariable,no,0,0xffff,no
0x1805,0x04,,UNSIGNED8,Inhibit time,,rw,no,1,0,,,0,ManagedVariable,no,0,0xff,no
0x1805,0x05,,UNSIGNED16,Event timer,,rw,no,1,0,500,,0,ManagedVariable,no,0,0xffff,no
0x1805,0x06,,UNSIGNED8,SYNC start value,,rw,no,1,0,,,0,ManagedVariable,no,0,0xff,no
0x1806,,RECORD,UNSIGNED8,TPDO communication parameter,,,,,,,,,,,,,,
0x1806,0x00,,UNSIGNED8,Highest sub-index supported,,const,both,1,1,6,,0,ManagedConst,no,2,6,no
0x1806,0x01,,UNSIGNED32,COB-ID used by TPDO,,rw,tpdo,1,2,$NODEID+0x180+3,,0,ManagedVariable,no,128,4294967295,no
0x1806,0x02,,UNSIGNED8,Transmission type,,rw,no,1,0,254,,0,ManagedVariable,no,0,255,no
0x1806,0x03,,UNSIGNED16,Inhibit time,,rw,no,1,0,,,0,ManagedVariable,no,0,0xffff,no
0x1806,0x04,,UNSIGNED8,Inhibit time,,rw,no,1,0,,,0,ManagedVariable,no,0,0xff,no
0x1806,0x05,,UNSIGNED16,Event timer,,rw,no,1,0,500,,0,ManagedVariable,no,0,0xffff,no
0x1806,0x06,,UNSIGNED8,SYNC start value,,rw,no,1,0,,,0,ManagedVariable,no,0,0xff,no
0x1807,,RECORD,UNSIGNED8,TPDO communication parameter,,,,,,,,,,,,,,
0x1807,0x00,,UNSIGNED8,Highest sub-index supported,,const,both,1,1,6,,0,ManagedConst,no,2,6,no
0x1807,0x01,,UNSIGNED32,COB-ID used by TPDO,,rw,tpdo,1,2,$NODEID+0x180+4,,0,ManagedVariable,no,128,4294967295,no
0x1807,0x02,,UNSIGNED8,Transmission type,,rw,no,1,0,254,,0,ManagedVariable,no,0,255,no
0x1807,0x03,,UNSIGNED16,Inhibit time,,rw,no,1,0,,,0,ManagedVariable,no,0,0xffff,no
0x1807,0x04,,UNSIGNED8,Inhibit time,,rw,no,1,0,,,0,ManagedVariable,no,0,0xff,no
0x1807,0x05,,UNSIGNED16,Event timer,,rw,no,1,0,500,,0,ManagedVariable,no,0,0xffff,no
0x1807,0x06,,UNSIGNED8,SYNC start value,,rw,no,1,0,,,0,ManagedVariable,no,0,0xff,no
0x1a00,,RECORD,UNSIGNED8,Conductivity Data OUT1,,,,,,,,,,,,,, 0x1a00,,RECORD,UNSIGNED8,Conductivity Data OUT1,,,,,,,,,,,,,,
0x1a00,0x00,,UNSIGNED8,Number of entries,,const,no,1,1,2,,0,ManagedConst,no,0,255,no 0x1a00,0x00,,UNSIGNED8,Number of entries,,const,no,1,1,2,,0,ManagedConst,no,0,255,no
0x1a00,0x01,,UNSIGNED32,Mapping Entry 1,,const,tpdo,1,1,1610744096,,0,ManagedConst,no,0,0,no 0x1a00,0x01,,UNSIGNED32,Mapping Entry 1,,const,tpdo,1,1,1610744096,,0,ManagedConst,no,0,0,no
@ -257,8 +303,22 @@ index,sub,objectcode,datatype,edsname,varname,access,mapable,hasdefault,defaulti
0x1a04,,RECORD,UNSIGNED8, Pressue and Flowmeter Data OUT2,,,,,,,,,,,,,, 0x1a04,,RECORD,UNSIGNED8, Pressue and Flowmeter Data OUT2,,,,,,,,,,,,,,
0x1a04,0x00,,UNSIGNED8,Number of entries,,const,no,1,1,2,,0,ManagedConst,no,0,255,no 0x1a04,0x00,,UNSIGNED8,Number of entries,,const,no,1,1,2,,0,ManagedConst,no,0,255,no
0x1a04,0x01,,UNSIGNED32,Mapping Entry 1,,const,tpdo,1,1,1610679072,,0,ManagedConst,no,0,0,no 0x1a04,0x01,,UNSIGNED32,Mapping Entry 1,,const,no,1,1,1610875424,,0,ManagedConst,no,0,0,no
0x1a04,0x02,,UNSIGNED32,Mapping Entry 2,,const,tpdo,1,1,1610679328,,0,ManagedConst,no,0,0,no 0x1a04,0x02,,UNSIGNED32,Mapping Entry 2,,const,no,1,1,1610940960,,0,ManagedConst,no,0,0,no
0x1a05,,RECORD,UNSIGNED8, Pressue and Flowmeter Data OUT3,,,,,,,,,,,,,,
0x1a05,0x00,,UNSIGNED8,Number of entries,,const,no,1,1,2,,0,ManagedConst,no,0,255,no
0x1a05,0x01,,UNSIGNED32,Mapping Entry 1,,const,no,1,1,1610875680,,0,ManagedConst,no,0,0,no
0x1a05,0x02,,UNSIGNED32,Mapping Entry 2,,const,no,1,1,1610941216,,0,ManagedConst,no,0,0,no
0x1a06,,RECORD,UNSIGNED8, Pressue and Flowmeter Data OUT4,,,,,,,,,,,,,,
0x1a06,0x00,,UNSIGNED8,Number of entries,,const,no,1,1,2,,0,ManagedConst,no,0,255,no
0x1a06,0x01,,UNSIGNED32,Mapping Entry 1,,const,no,1,1,1610875936,,0,ManagedConst,no,0,0,no
0x1a06,0x02,,UNSIGNED32,Mapping Entry 2,,const,no,1,1,1610941472,,0,ManagedConst,no,0,0,no
0x1a07,,RECORD,UNSIGNED8,Pump Data OUT,,,,,,,,,,,,,,
0x1a07,0x00,,UNSIGNED8,Number of entries,,const,no,1,1,1,,0,ManagedConst,no,0,255,no
0x1a07,0x01,,UNSIGNED32,Mapping Entry 1,,const,no,1,1,1611005984,,0,ManagedConst,no,0,0,no
0x2001,0x00,VARIABLE,INTEGER32,Manufacturer Object,,rw,both,0,0,4,,0,ManagedVariable,no,0,0,no 0x2001,0x00,VARIABLE,INTEGER32,Manufacturer Object,,rw,both,0,0,4,,0,ManagedVariable,no,0,0,no
@ -320,3 +380,5 @@ index,sub,objectcode,datatype,edsname,varname,access,mapable,hasdefault,defaulti
0x6005,0x03,,REAL32,PS3 OUT,,rw,both,1,1,,,0,ManagedVariable,no,,,no 0x6005,0x03,,REAL32,PS3 OUT,,rw,both,1,1,,,0,ManagedVariable,no,,,no
0x6005,0x04,,REAL32,PS4 OUT,,rw,both,1,1,,,0,ManagedVariable,no,,,no 0x6005,0x04,,REAL32,PS4 OUT,,rw,both,1,1,,,0,ManagedVariable,no,,,no
0x6006,0x00,VARIABLE,UNSIGNED32,Pump Data OUT,,rw,tpdo,1,1,,,0,ManagedVariable,no,0,0xffffffff,no

View File

@ -64,12 +64,107 @@ DataType: UNSIGNED32
ObjectCode: Array ObjectCode: Array
Sub: 0x00 - Number of entries Sub: 0x00 - Number of entries
DataType: UNSIGNED8 DataType: UNSIGNED8
DefaultValue: 1 DefaultValue: 20
AccessType: ro AccessType: ro
PDOMapping: 0 PDOMapping: 0
Sub: 0x01 - Consumer Heartbeat Time Sub: 0x01 - Consumer Heartbeat Time
DataType: UNSIGNED32 DataType: UNSIGNED32
DefaultValue: 0x0000 DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x02 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x03 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x04 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x05 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x06 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x07 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x08 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x09 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x0a - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x0b - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x0c - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x0d - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x0e - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x0f - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x10 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x11 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x12 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x13 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x14 - Consumer Heartbeat Time
DataType: UNSIGNED32
DefaultValue: 500
AccessType: rw AccessType: rw
PDOMapping: 0 PDOMapping: 0
@ -78,7 +173,7 @@ DataType: UNSIGNED16
ObjectCode: Variable ObjectCode: Variable
Sub: 0x00 - Producer Heartbeat Time Sub: 0x00 - Producer Heartbeat Time
DataType: UNSIGNED16 DataType: UNSIGNED16
DefaultValue: 1500 DefaultValue: 100
AccessType: rw AccessType: rw
PDOMapping: 0 PDOMapping: 0
@ -946,6 +1041,114 @@ ObjectCode: Record
AccessType: rw AccessType: rw
PDOMapping: 0 PDOMapping: 0
Index: 0x1805 - TPDO communication parameter
DataType: UNSIGNED8
ObjectCode: Record
Sub: 0x00 - Highest sub-index supported
DataType: UNSIGNED8
DefaultValue: 6
AccessType: const
PDOMapping: 1
Sub: 0x01 - COB-ID used by TPDO
DataType: UNSIGNED32
DefaultValue: $NODEID+0x180+2
AccessType: rw
PDOMapping: 4
Sub: 0x02 - Transmission type
DataType: UNSIGNED8
DefaultValue: 254
AccessType: rw
PDOMapping: 0
Sub: 0x03 - Inhibit time
DataType: UNSIGNED16
AccessType: rw
PDOMapping: 0
Sub: 0x04 - Inhibit time
DataType: UNSIGNED8
AccessType: rw
PDOMapping: 0
Sub: 0x05 - Event timer
DataType: UNSIGNED16
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x06 - SYNC start value
DataType: UNSIGNED8
AccessType: rw
PDOMapping: 0
Index: 0x1806 - TPDO communication parameter
DataType: UNSIGNED8
ObjectCode: Record
Sub: 0x00 - Highest sub-index supported
DataType: UNSIGNED8
DefaultValue: 6
AccessType: const
PDOMapping: 1
Sub: 0x01 - COB-ID used by TPDO
DataType: UNSIGNED32
DefaultValue: $NODEID+0x180+3
AccessType: rw
PDOMapping: 4
Sub: 0x02 - Transmission type
DataType: UNSIGNED8
DefaultValue: 254
AccessType: rw
PDOMapping: 0
Sub: 0x03 - Inhibit time
DataType: UNSIGNED16
AccessType: rw
PDOMapping: 0
Sub: 0x04 - Inhibit time
DataType: UNSIGNED8
AccessType: rw
PDOMapping: 0
Sub: 0x05 - Event timer
DataType: UNSIGNED16
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x06 - SYNC start value
DataType: UNSIGNED8
AccessType: rw
PDOMapping: 0
Index: 0x1807 - TPDO communication parameter
DataType: UNSIGNED8
ObjectCode: Record
Sub: 0x00 - Highest sub-index supported
DataType: UNSIGNED8
DefaultValue: 6
AccessType: const
PDOMapping: 1
Sub: 0x01 - COB-ID used by TPDO
DataType: UNSIGNED32
DefaultValue: $NODEID+0x180+4
AccessType: rw
PDOMapping: 4
Sub: 0x02 - Transmission type
DataType: UNSIGNED8
DefaultValue: 254
AccessType: rw
PDOMapping: 0
Sub: 0x03 - Inhibit time
DataType: UNSIGNED16
AccessType: rw
PDOMapping: 0
Sub: 0x04 - Inhibit time
DataType: UNSIGNED8
AccessType: rw
PDOMapping: 0
Sub: 0x05 - Event timer
DataType: UNSIGNED16
DefaultValue: 500
AccessType: rw
PDOMapping: 0
Sub: 0x06 - SYNC start value
DataType: UNSIGNED8
AccessType: rw
PDOMapping: 0
Index: 0x1a00 - Conductivity Data OUT1 Index: 0x1a00 - Conductivity Data OUT1
DataType: UNSIGNED8 DataType: UNSIGNED8
ObjectCode: Record ObjectCode: Record
@ -1032,14 +1235,66 @@ ObjectCode: Record
PDOMapping: 0 PDOMapping: 0
Sub: 0x01 - Mapping Entry 1 Sub: 0x01 - Mapping Entry 1
DataType: UNSIGNED32 DataType: UNSIGNED32
DefaultValue: 0x60010320 DefaultValue: 0x60040220
AccessType: const AccessType: const
PDOMapping: 4 PDOMapping: 0
Sub: 0x02 - Mapping Entry 2 Sub: 0x02 - Mapping Entry 2
DataType: UNSIGNED32 DataType: UNSIGNED32
DefaultValue: 0x60010420 DefaultValue: 0x60050220
AccessType: const AccessType: const
PDOMapping: 4 PDOMapping: 0
Index: 0x1a05 - Pressue and Flowmeter Data OUT3
DataType: UNSIGNED8
ObjectCode: Record
Sub: 0x00 - Number of entries
DataType: UNSIGNED8
DefaultValue: 2
AccessType: const
PDOMapping: 0
Sub: 0x01 - Mapping Entry 1
DataType: UNSIGNED32
DefaultValue: 0x60040320
AccessType: const
PDOMapping: 0
Sub: 0x02 - Mapping Entry 2
DataType: UNSIGNED32
DefaultValue: 0x60050320
AccessType: const
PDOMapping: 0
Index: 0x1a06 - Pressue and Flowmeter Data OUT4
DataType: UNSIGNED8
ObjectCode: Record
Sub: 0x00 - Number of entries
DataType: UNSIGNED8
DefaultValue: 2
AccessType: const
PDOMapping: 0
Sub: 0x01 - Mapping Entry 1
DataType: UNSIGNED32
DefaultValue: 0x60040420
AccessType: const
PDOMapping: 0
Sub: 0x02 - Mapping Entry 2
DataType: UNSIGNED32
DefaultValue: 0x60050420
AccessType: const
PDOMapping: 0
Index: 0x1a07 - Pump Data OUT
DataType: UNSIGNED8
ObjectCode: Record
Sub: 0x00 - Number of entries
DataType: UNSIGNED8
DefaultValue: 1
AccessType: const
PDOMapping: 0
Sub: 0x01 - Mapping Entry 1
DataType: UNSIGNED32
DefaultValue: 0x60060020
AccessType: const
PDOMapping: 0
Index: 0x2001 - Manufacturer Object Index: 0x2001 - Manufacturer Object
DataType: INTEGER32 DataType: INTEGER32
@ -1253,3 +1508,11 @@ ObjectCode: Array
DataType: REAL32 DataType: REAL32
AccessType: rw AccessType: rw
PDOMapping: 1 PDOMapping: 1
Index: 0x6006 - Pump Data OUT
DataType: UNSIGNED32
ObjectCode: Variable
Sub: 0x00 - Pump Data OUT
DataType: UNSIGNED32
AccessType: rw
PDOMapping: 4

View File

@ -1,6 +1,6 @@
/* /*
* Stack definitions for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 * Stack definitions for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2
* */ * 25 04 2025 13:57:30 */
/* protect against multiple inclusion of the file */ /* protect against multiple inclusion of the file */
#ifndef GEN_DEFINE_H #ifndef GEN_DEFINE_H
@ -19,10 +19,10 @@
#define CO_REC_BUFFER_COUNTS 10u #define CO_REC_BUFFER_COUNTS 10u
#define CO_TR_BUFFER_COUNTS 20u #define CO_TR_BUFFER_COUNTS 20u
/* Number of objects per line */ /* Number of objects per line */
#define CO_OBJECTS_LINE_0_CNT 56u #define CO_OBJECTS_LINE_0_CNT 63u
#define CO_OBJECT_COUNTS 56u #define CO_OBJECT_COUNTS 63u
#define CO_COB_COUNTS 75u #define CO_COB_COUNTS 78u
#define CO_TXPDO_COUNTS 5u #define CO_TXPDO_COUNTS 8u
#define CO_RXPDO_COUNTS 3u #define CO_RXPDO_COUNTS 3u
#define CO_SSDO_COUNTS 1u #define CO_SSDO_COUNTS 1u
#define CO_CSDO_COUNTS 20u #define CO_CSDO_COUNTS 20u
@ -42,7 +42,7 @@
#define CO_LSS_INQUIRY_SERVICES 1u #define CO_LSS_INQUIRY_SERVICES 1u
#define CO_SDO_SERVER_CNT 1u #define CO_SDO_SERVER_CNT 1u
#define CO_SDO_CLIENT_CNT 20u #define CO_SDO_CLIENT_CNT 20u
#define CO_PDO_TRANSMIT_CNT 5u #define CO_PDO_TRANSMIT_CNT 8u
#define CO_PDO_RECEIVE_CNT 3u #define CO_PDO_RECEIVE_CNT 3u
#define CO_MAX_MAP_ENTRIES 2u #define CO_MAX_MAP_ENTRIES 2u
#define CO_HB_CONSUMER_CNT 20u #define CO_HB_CONSUMER_CNT 20u
@ -55,7 +55,7 @@
#define CO_SDO_QUEUE_LEN 0u #define CO_SDO_QUEUE_LEN 0u
#define CO_INHIBIT_SUPPORTED 1u #define CO_INHIBIT_SUPPORTED 1u
/* number of used COB objects */ /* number of used COB objects */
#define CO_COB_CNT 75u #define CO_COB_CNT 78u
/* Definition of number of call-back functions for each service*/ /* Definition of number of call-back functions for each service*/

View File

@ -1,6 +1,6 @@
/* /*
* static indication definitions for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 * static indication definitions for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2
* Tue Feb 25 14:59:00 2025 * Fri Apr 25 13:57:30 2025
*/ */
/* protect against multiple inclusion of the file */ /* protect against multiple inclusion of the file */

View File

@ -1,6 +1,6 @@
/* /*
* CO index/J1939 PGN/raw CAN-ID defines for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 * CO index/J1939 PGN/raw CAN-ID defines for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2
* Tue Feb 25 14:58:59 2025 * Fri Apr 25 13:57:30 2025
*/ */
/* protect against multiple inclusion of the file */ /* protect against multiple inclusion of the file */
@ -72,11 +72,17 @@
#define I_TPDO_COMMUNICATION_PARAMETER2 0x1802u #define I_TPDO_COMMUNICATION_PARAMETER2 0x1802u
#define I_TPDO_COMMUNICATION_PARAMETER3 0x1803u #define I_TPDO_COMMUNICATION_PARAMETER3 0x1803u
#define I_TPDO_COMMUNICATION_PARAMETER4 0x1804u #define I_TPDO_COMMUNICATION_PARAMETER4 0x1804u
#define I_TPDO_COMMUNICATION_PARAMETER5 0x1805u
#define I_TPDO_COMMUNICATION_PARAMETER6 0x1806u
#define I_TPDO_COMMUNICATION_PARAMETER7 0x1807u
#define I_CONDUCTIVITY_DATA_OUT1 0x1a00u #define I_CONDUCTIVITY_DATA_OUT1 0x1a00u
#define I_CONDUCTIVITY_DATA_OUT2 0x1a01u #define I_CONDUCTIVITY_DATA_OUT2 0x1a01u
#define I_CONDUCTIVITY_DATA_OUT3 0x1a02u #define I_CONDUCTIVITY_DATA_OUT3 0x1a02u
#define I_PRESSUE_AND_FLOWMETER_DATA_OUT1 0x1a03u #define I_PRESSUE_AND_FLOWMETER_DATA_OUT1 0x1a03u
#define I_PRESSUE_AND_FLOWMETER_DATA_OUT2 0x1a04u #define I_PRESSUE_AND_FLOWMETER_DATA_OUT2 0x1a04u
#define I_PRESSUE_AND_FLOWMETER_DATA_OUT3 0x1a05u
#define I_PRESSUE_AND_FLOWMETER_DATA_OUT4 0x1a06u
#define I_PUMP_DATA_OUT 0x1a07u
#define I_MANUFACTURER_OBJECT 0x2001u #define I_MANUFACTURER_OBJECT 0x2001u
#define I_MANAGED_ARRAY 0x3000u #define I_MANAGED_ARRAY 0x3000u
#define S_SUB_1 0x1u #define S_SUB_1 0x1u
@ -120,6 +126,7 @@
#define S_PS2_OUT 0x2u #define S_PS2_OUT 0x2u
#define S_PS3_OUT 0x3u #define S_PS3_OUT 0x3u
#define S_PS4_OUT 0x4u #define S_PS4_OUT 0x4u
#define I_PUMP_DATA_OUT1 0x6006u
#define S_NUMBER_OF_ENTRIES 0x0u #define S_NUMBER_OF_ENTRIES 0x0u
#endif /* GEN_INDICES_H */ #endif /* GEN_INDICES_H */

View File

@ -1,6 +1,6 @@
/* /*
* object dictionary for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 * object dictionary for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2
* Tue Feb 25 14:59:00 2025 * Fri Apr 25 13:57:30 2025
*/ */
#include <stdlib.h> #include <stdlib.h>
@ -31,8 +31,8 @@
/* definition of static indication function pointers */ /* definition of static indication function pointers */
/* number of objects */ /* number of objects */
#define CO_OD_ASSIGN_CNT 56u #define CO_OD_ASSIGN_CNT 63u
#define CO_OBJ_DESC_CNT 231u #define CO_OBJ_DESC_CNT 261u
/* definition of managed variables */ /* definition of managed variables */
static UNSIGNED8 CO_STORAGE_CLASS od_u8[8]= { static UNSIGNED8 CO_STORAGE_CLASS od_u8[8]= {
@ -46,7 +46,7 @@ static UNSIGNED8 CO_STORAGE_CLASS od_u8[8]= {
(UNSIGNED8)0u /* 0x6000:5 */}; (UNSIGNED8)0u /* 0x6000:5 */};
static UNSIGNED16 CO_STORAGE_CLASS od_u16[1]= { static UNSIGNED16 CO_STORAGE_CLASS od_u16[1]= {
(UNSIGNED16)0u /* 0x1015:0 */}; (UNSIGNED16)0u /* 0x1015:0 */};
static UNSIGNED32 CO_STORAGE_CLASS od_u32[23]= { static UNSIGNED32 CO_STORAGE_CLASS od_u32[24]= {
(UNSIGNED32)0UL /* 0x1003:1 */, (UNSIGNED32)0UL /* 0x1003:1 */,
(UNSIGNED32)0UL /* 0x1014:0 */, (UNSIGNED32)0UL /* 0x1014:0 */,
(UNSIGNED32)0UL /* 0x1018:4 */, (UNSIGNED32)0UL /* 0x1018:4 */,
@ -69,7 +69,8 @@ static UNSIGNED32 CO_STORAGE_CLASS od_u32[23]= {
(UNSIGNED32)0UL /* 0x6003:5 */, (UNSIGNED32)0UL /* 0x6003:5 */,
(UNSIGNED32)0UL /* 0x6003:6 */, (UNSIGNED32)0UL /* 0x6003:6 */,
(UNSIGNED32)0UL /* 0x6003:7 */, (UNSIGNED32)0UL /* 0x6003:7 */,
(UNSIGNED32)0UL /* 0x6003:8 */}; (UNSIGNED32)0UL /* 0x6003:8 */,
(UNSIGNED32)0UL /* 0x6006:0 */};
static INTEGER16 CO_STORAGE_CLASS od_i16[2]= { static INTEGER16 CO_STORAGE_CLASS od_i16[2]= {
(INTEGER16)0 /* 0x3000:1 */, (INTEGER16)0 /* 0x3000:1 */,
(INTEGER16)2 /* 0x3000:2 */}; (INTEGER16)2 /* 0x3000:2 */};
@ -102,7 +103,7 @@ static CO_CONST UNSIGNED16 CO_CONST_STORAGE_CLASS od_const_u16[4] = {
(UNSIGNED16)100u, (UNSIGNED16)100u,
(UNSIGNED16)10u, (UNSIGNED16)10u,
(UNSIGNED16)500u}; (UNSIGNED16)500u};
static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[28] = { static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[35] = {
(UNSIGNED32)0UL, (UNSIGNED32)0UL,
(UNSIGNED32)128UL, (UNSIGNED32)128UL,
(UNSIGNED32)500UL, (UNSIGNED32)500UL,
@ -130,7 +131,14 @@ static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[28] = {
(UNSIGNED32)1610745120UL, (UNSIGNED32)1610745120UL,
(UNSIGNED32)1610745376UL, (UNSIGNED32)1610745376UL,
(UNSIGNED32)1610875168UL, (UNSIGNED32)1610875168UL,
(UNSIGNED32)1610940704UL}; (UNSIGNED32)1610940704UL,
(UNSIGNED32)1610875424UL,
(UNSIGNED32)1610940960UL,
(UNSIGNED32)1610875680UL,
(UNSIGNED32)1610941216UL,
(UNSIGNED32)1610875936UL,
(UNSIGNED32)1610941472UL,
(UNSIGNED32)1611005984UL};
static CO_CONST INTEGER16 CO_CONST_STORAGE_CLASS od_const_i16[2] = { static CO_CONST INTEGER16 CO_CONST_STORAGE_CLASS od_const_i16[2] = {
(INTEGER16)0, (INTEGER16)0,
(INTEGER16)2}; (INTEGER16)2};
@ -320,6 +328,27 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT]
{ (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1804:4*/ { (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1804:4*/
{ (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1804:5*/ { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1804:5*/
{ (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1804:6*/ { (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1804:6*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1805:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1805:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1805:2*/
{ (UNSIGNED8)3u, CO_DTYPE_U16_TPDO , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1805:3*/
{ (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1805:4*/
{ (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1805:5*/
{ (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1805:6*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1806:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1806:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1806:2*/
{ (UNSIGNED8)3u, CO_DTYPE_U16_TPDO , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1806:3*/
{ (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1806:4*/
{ (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1806:5*/
{ (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1806:6*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1807:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1807:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1807:2*/
{ (UNSIGNED8)3u, CO_DTYPE_U16_TPDO , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1807:3*/
{ (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1807:4*/
{ (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1807:5*/
{ (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1807:6*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a00:0*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a00:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)20u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)20u},/* 0x1a00:1*/ { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)20u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)20u},/* 0x1a00:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)21u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)21u},/* 0x1a00:2*/ { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)21u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)21u},/* 0x1a00:2*/
@ -333,8 +362,16 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT]
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)26u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)26u},/* 0x1a03:1*/ { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)26u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)26u},/* 0x1a03:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)27u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)27u},/* 0x1a03:2*/ { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)27u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)27u},/* 0x1a03:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a04:0*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a04:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)12u},/* 0x1a04:1*/ { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)28u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)28u},/* 0x1a04:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)13u},/* 0x1a04:2*/ { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)29u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)29u},/* 0x1a04:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a05:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)30u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)30u},/* 0x1a05:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)31u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)31u},/* 0x1a05:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a06:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)32u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)32u},/* 0x1a06:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)33u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)33u},/* 0x1a06:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1a07:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)34u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)34u},/* 0x1a07:1*/
{ (UNSIGNED8)0u, CO_DTYPE_I32_VAR , (UNSIGNED16)0u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC, (UNSIGNED16)0u},/* 0x2001:0*/ { (UNSIGNED8)0u, CO_DTYPE_I32_VAR , (UNSIGNED16)0u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC, (UNSIGNED16)0u},/* 0x2001:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x3000:0*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x3000:0*/
{ (UNSIGNED8)1u, CO_DTYPE_I16_VAR , (UNSIGNED16)0u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR, (UNSIGNED16)0u},/* 0x3000:1*/ { (UNSIGNED8)1u, CO_DTYPE_I16_VAR , (UNSIGNED16)0u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR, (UNSIGNED16)0u},/* 0x3000:1*/
@ -378,6 +415,7 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT]
{ (UNSIGNED8)2u, CO_DTYPE_R32_VAR , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6005:2*/ { (UNSIGNED8)2u, CO_DTYPE_R32_VAR , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6005:2*/
{ (UNSIGNED8)3u, CO_DTYPE_R32_VAR , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6005:3*/ { (UNSIGNED8)3u, CO_DTYPE_R32_VAR , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6005:3*/
{ (UNSIGNED8)4u, CO_DTYPE_R32_VAR , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6005:4*/ { (UNSIGNED8)4u, CO_DTYPE_R32_VAR , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6005:4*/
{ (UNSIGNED8)0u, CO_DTYPE_U32_VAR , (UNSIGNED16)23u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6006:0*/
}; };
/* object dictionary assignment */ /* object dictionary assignment */
@ -425,19 +463,26 @@ CO_CONST CO_OD_ASSIGN_T CO_CONST_STORAGE_CLASS od_assign[CO_OD_ASSIGN_CNT] = {
{ 0x1802u, 7u, 6u, CO_ODTYPE_STRUCT, 152u }, { 0x1802u, 7u, 6u, CO_ODTYPE_STRUCT, 152u },
{ 0x1803u, 7u, 6u, CO_ODTYPE_STRUCT, 159u }, { 0x1803u, 7u, 6u, CO_ODTYPE_STRUCT, 159u },
{ 0x1804u, 7u, 6u, CO_ODTYPE_STRUCT, 166u }, { 0x1804u, 7u, 6u, CO_ODTYPE_STRUCT, 166u },
{ 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 173u }, { 0x1805u, 7u, 6u, CO_ODTYPE_STRUCT, 173u },
{ 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 176u }, { 0x1806u, 7u, 6u, CO_ODTYPE_STRUCT, 180u },
{ 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 179u }, { 0x1807u, 7u, 6u, CO_ODTYPE_STRUCT, 187u },
{ 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 182u }, { 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 194u },
{ 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 185u }, { 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 197u },
{ 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 188u }, { 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 200u },
{ 0x3000u, 3u, 2u, CO_ODTYPE_ARRAY, 189u }, { 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 203u },
{ 0x6000u, 6u, 5u, CO_ODTYPE_ARRAY, 192u }, { 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 206u },
{ 0x6001u, 7u, 6u, CO_ODTYPE_ARRAY, 198u }, { 0x1a05u, 3u, 2u, CO_ODTYPE_STRUCT, 209u },
{ 0x6002u, 7u, 6u, CO_ODTYPE_ARRAY, 205u }, { 0x1a06u, 3u, 2u, CO_ODTYPE_STRUCT, 212u },
{ 0x6003u, 9u, 8u, CO_ODTYPE_ARRAY, 212u }, { 0x1a07u, 2u, 1u, CO_ODTYPE_STRUCT, 215u },
{ 0x6004u, 5u, 4u, CO_ODTYPE_ARRAY, 221u }, { 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 217u },
{ 0x6005u, 5u, 4u, CO_ODTYPE_ARRAY, 226u }, { 0x3000u, 3u, 2u, CO_ODTYPE_ARRAY, 218u },
{ 0x6000u, 6u, 5u, CO_ODTYPE_ARRAY, 221u },
{ 0x6001u, 7u, 6u, CO_ODTYPE_ARRAY, 227u },
{ 0x6002u, 7u, 6u, CO_ODTYPE_ARRAY, 234u },
{ 0x6003u, 9u, 8u, CO_ODTYPE_ARRAY, 241u },
{ 0x6004u, 5u, 4u, CO_ODTYPE_ARRAY, 250u },
{ 0x6005u, 5u, 4u, CO_ODTYPE_ARRAY, 255u },
{ 0x6006u, 1u, 0u, CO_ODTYPE_VAR, 260u },
}; };
/* static PDO mapping tables */ /* static PDO mapping tables */
@ -477,8 +522,32 @@ static CO_CONST PDO_TR_MAP_TABLE_T CO_CONST_STORAGE_CLASS mapTableTPDO4 = {
static CO_CONST PDO_TR_MAP_TABLE_T CO_CONST_STORAGE_CLASS mapTableTPDO5 = { static CO_CONST PDO_TR_MAP_TABLE_T CO_CONST_STORAGE_CLASS mapTableTPDO5 = {
(UNSIGNED8)2u, (UNSIGNED8)2u,
{ {
{&od_u32[5], 4u, CO_TRUE, 0x60010320UL }, {&od_r32[1], 4u, CO_TRUE, 0x60040220UL },
{&od_u32[6], 4u, CO_TRUE, 0x60010420UL }, {&od_r32[5], 4u, CO_TRUE, 0x60050220UL },
}
};
/* Mapping table TPDO 6*/
static CO_CONST PDO_TR_MAP_TABLE_T CO_CONST_STORAGE_CLASS mapTableTPDO6 = {
(UNSIGNED8)2u,
{
{&od_r32[2], 4u, CO_TRUE, 0x60040320UL },
{&od_r32[6], 4u, CO_TRUE, 0x60050320UL },
}
};
/* Mapping table TPDO 7*/
static CO_CONST PDO_TR_MAP_TABLE_T CO_CONST_STORAGE_CLASS mapTableTPDO7 = {
(UNSIGNED8)2u,
{
{&od_r32[3], 4u, CO_TRUE, 0x60040420UL },
{&od_r32[7], 4u, CO_TRUE, 0x60050420UL },
}
};
/* Mapping table TPDO 8*/
static CO_CONST PDO_TR_MAP_TABLE_T CO_CONST_STORAGE_CLASS mapTableTPDO8 = {
(UNSIGNED8)1u,
{
{&od_u32[23], 4u, CO_TRUE, 0x60060020UL },
{NULL, (UNSIGNED8)0u, CO_FALSE, 0ul}
} }
}; };
/* unique rpdo defintion */ /* unique rpdo defintion */
@ -775,6 +844,24 @@ CO_COMMON_INIT_VAL_T commonInitVars = {
return(retVal); return(retVal);
} }
CO_HANDLE_WATCHDOG CO_HANDLE_WATCHDOG
/* initialize TPDO 6 */
retVal = coPdoTransmitInit(6u, od_const_u8[6], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO6);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
/* initialize TPDO 7 */
retVal = coPdoTransmitInit(7u, od_const_u8[6], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO7);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
/* initialize TPDO 8 */
retVal = coPdoTransmitInit(8u, od_const_u8[6], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO8);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
/* initialize RPDO 1 */ /* initialize RPDO 1 */
retVal = coPdoReceiveInit(1u, od_const_u8[6], 0u, 0u, &mapTableRPDO0); retVal = coPdoReceiveInit(1u, od_const_u8[6], 0u, 0u, &mapTableRPDO0);
if (retVal != RET_OK) { if (retVal != RET_OK) {
@ -1020,5 +1107,14 @@ RET_T userOverwriteCobIdSettings(void)
cobId = nodeId + 0x180+1; cobId = nodeId + 0x180+1;
ret = coOdSetCobid(0x1804, 1, cobId); ret = coOdSetCobid(0x1804, 1, cobId);
cobId = nodeId + 0x180+2;
ret = coOdSetCobid(0x1805, 1, cobId);
cobId = nodeId + 0x180+3;
ret = coOdSetCobid(0x1806, 1, cobId);
cobId = nodeId + 0x180+4;
ret = coOdSetCobid(0x1807, 1, cobId);
return ret; return ret;
} }

View File

@ -32,6 +32,12 @@ static uint32 GrundfosPmpReadVoltage(uint8 channel_u8);
/****************************************************************************** /******************************************************************************
* Extern Function Definitions * Extern Function Definitions
******************************************************************************/ ******************************************************************************/
void GrundfosPmpInit(GrundfosMain_st *grundfos_pst)
{
grundfos_pst->rawQ_f32 = 0.0f;
}
void GrundfosPmpEnable(uint8 state_u8) void GrundfosPmpEnable(uint8 state_u8)
{ {
if(state_u8 == 0u) if(state_u8 == 0u)
@ -45,11 +51,14 @@ void GrundfosPmpEnable(uint8 state_u8)
} }
uint32 GrundfosPmpFeedback(uint8 channel_u8) void GrundfosPmpFeedback(GrundfosMain_st *grundfos_pst)
{ {
uint32 feedbackSpeed_u32 = (GrundfosPmpReadVoltage(channel_u8)) * 360u; if (grundfos_pst == NULL)
{
/* Error */
}
return feedbackSpeed_u32; grundfos_pst->rawQ_f32 = (GrundfosPmpReadVoltage(grundfos_pst->channel_u32)) * 100 * 360u;
} }

View File

@ -34,7 +34,8 @@ typedef struct
/****************************************************************************** /******************************************************************************
* Extern Function Declarations * Extern Function Declarations
******************************************************************************/ ******************************************************************************/
uint32 GrundfosPmpFeedback(uint8 channel_u8); void GrundfosPmpInit(GrundfosMain_st *grundfos_pst);
void GrundfosPmpFeedback(GrundfosMain_st *grundfos_pst);
void GrundfosPmpEnable(uint8_t state_u8); void GrundfosPmpEnable(uint8_t state_u8);
bool GrundfosPmpSetSpeed(float setSpeed_f); bool GrundfosPmpSetSpeed(float setSpeed_f);
#endif /* GRUNDFOS_H_ */ #endif /* GRUNDFOS_H_ */

View File

@ -56,6 +56,6 @@
#define OD_ENTRY_PU_GRUNDFOS_PUMP_ENABLE_SUB_INDEX 0x01 #define OD_ENTRY_PU_GRUNDFOS_PUMP_ENABLE_SUB_INDEX 0x01
#define OD_ENTRY_PU_GRUNDFOS_PUMP_SET_SPEED_SUB_INDEX 0x02 #define OD_ENTRY_PU_GRUNDFOS_PUMP_SET_SPEED_SUB_INDEX 0x02
#define OD_ENTRY_PU_GRUNDFOS_PUMP_FEEDBACK_SUB_INDEX 0x03 #define OD_ENTRY_PU_GRUNDFOS_PUMP_FEEDBACK_SUB_INDEX 0x00
#endif /* OD_ENTRIES_H_ */ #endif /* OD_ENTRIES_H_ */

View File

@ -119,6 +119,8 @@ void ProcessBoardInit(void)
PressureSensorInit(&pressureSensorPS2_gst); PressureSensorInit(&pressureSensorPS2_gst);
PressureSensorInit(&pressureSensorPS3_gst); PressureSensorInit(&pressureSensorPS3_gst);
PressureSensorInit(&pressureSensorPS4_gst); PressureSensorInit(&pressureSensorPS4_gst);
GrundfosPmpInit(&grundfosPMP_gst);
} }
@ -166,6 +168,8 @@ void ProcessBoardRun(void)
ProcessBoardPressureSensorDataOUT(pressureSensorPS3_gst.rawT_f32); ProcessBoardPressureSensorDataOUT(pressureSensorPS3_gst.rawT_f32);
ProcessBoardPressureSensorDataOUT(pressureSensorPS4_gst.rawT_f32); ProcessBoardPressureSensorDataOUT(pressureSensorPS4_gst.rawT_f32);
ProcessBoardPumpSpeedDataOUT(grundfosPMP_gst.rawQ_f32);
ProcessBoardGrundfosPumpHandler(); ProcessBoardGrundfosPumpHandler();
ProcessBoardReadCondDataIN(); ProcessBoardReadCondDataIN();
@ -215,12 +219,12 @@ static void ProcessBoardGrundfosPumpHandler(void)
startTime_u64 = currentTimeMs_u64; startTime_u64 = currentTimeMs_u64;
} }
GrundfosPmpSetSpeed(speed_u8); // GrundfosPmpSetSpeed(speed_u8);
/* Grundfos Pump feedback speed OUT */ /* Grundfos Pump feedback speed OUT */
pmpSpeed_u32 = GrundfosPmpFeedback(PMP_ADC_CHANNEL); GrundfosPmpFeedback(&grundfosPMP_gst);
if (pmpSpeed_u32 > PU_PMP_RATED_SPEED) if (grundfosPMP_gst.rawQ_f32 > PU_PMP_RATED_SPEED)
{ {
GrundfosPmpEnable(PU_PMP_DISABLE); GrundfosPmpEnable(PU_PMP_DISABLE);
} }
@ -268,25 +272,25 @@ static void ProcessBoardWriteCondDataOUT(void)
static void ProcessBoardFlowmeterDataOUT(float32 rawQ_f32) static void ProcessBoardFlowmeterDataOUT(float32 rawQ_f32)
{ {
NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER1_DATA_OUT_SUB_INDEX, rawQ_f32); NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER1_DATA_OUT_SUB_INDEX, 1.0f);
NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER1_DATA_OUT_SUB_INDEX, rawQ_f32); NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER2_DATA_OUT_SUB_INDEX, 1.0f);
NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER1_DATA_OUT_SUB_INDEX, rawQ_f32); NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER3_DATA_OUT_SUB_INDEX, 1.0f);
NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER1_DATA_OUT_SUB_INDEX, rawQ_f32); NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER4_DATA_OUT_SUB_INDEX, 1.0f);
} }
static void ProcessBoardPressureSensorDataOUT(float32 rawT_f32) static void ProcessBoardPressureSensorDataOUT(float32 rawT_f32)
{ {
NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE1_DATA_OUT_SUB_INDEX, rawT_f32); NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE1_DATA_OUT_SUB_INDEX, 2.0f);
NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE1_DATA_OUT_SUB_INDEX, rawT_f32); NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE2_DATA_OUT_SUB_INDEX, 2.0f);
NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE1_DATA_OUT_SUB_INDEX, rawT_f32); NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE3_DATA_OUT_SUB_INDEX, 2.0f);
NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE1_DATA_OUT_SUB_INDEX, rawT_f32); NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE4_DATA_OUT_SUB_INDEX, 2.0f);
} }
static void ProcessBoardPumpSpeedDataOUT(uint32 pmpSpeed_u32) static void ProcessBoardPumpSpeedDataOUT(uint32 pmpSpeed_u32)
{ {
NmsCanPutObj_u32(OD_ENTRY_PU_GRUNDFOS_PUMP_CONTROL_INDEX, OD_ENTRY_PU_GRUNDFOS_PUMP_FEEDBACK_SUB_INDEX, pmpSpeed_u32); NmsCanPutObj_u32(OD_ENTRY_PU_GRUNDFOS_PUMP_CONTROL_INDEX, OD_ENTRY_PU_GRUNDFOS_PUMP_FEEDBACK_SUB_INDEX, 3.0f);
} }

View File

@ -56,7 +56,7 @@
#define SDL_SDO_CLIENT_TO_SERVER_COB 0x600 #define SDL_SDO_CLIENT_TO_SERVER_COB 0x600
#define SDL_SDO_SERVER_TO_CLIENT_COB 0x580 #define SDL_SDO_SERVER_TO_CLIENT_COB 0x580
#define SDL_MIN_OPERATIONAL_NODES 18u /* To be 20, one node not in working state currently */ #define SDL_MIN_OPERATIONAL_NODES 15u /* To be 20, one node not in working state currently */
/****************************************************************************** /******************************************************************************
* Type Declarations * Type Declarations
******************************************************************************/ ******************************************************************************/

360
gui.py
View File

@ -1,183 +1,100 @@
import sys import sys
import time import time
import struct
import canopen import canopen
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout, QHBoxLayout, QLabel, QGroupBox, QFormLayout import can
from can.listener import Listener
from PyQt5.QtWidgets import (
QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout,
QHBoxLayout, QLabel, QGroupBox, QFormLayout, QPushButton, QMessageBox, QHeaderView
)
from PyQt5.QtCore import QTimer, Qt from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QColor from PyQt5.QtGui import QColor
# Connect to CAN network
network = canopen.Network()
network.connect(channel='PCAN_USBBUS1', bustype='pcan', bitrate=250000)
motorBoardEdsPath = r'C:\Users\vineetagupta\Documents\NorthStar-Motor-Valve-Board-Firmware\MotorValveBoard\coappl\motorcontrollervalve.eds' motorBoardEdsPath = r'C:\Users\vineetagupta\Documents\NorthStar-Motor-Valve-Board-Firmware\MotorValveBoard\coappl\motorcontrollervalve.eds'
puBoardEdsPath = r'C:\Users\vineetagupta\Documents\NorthStar-Production-Unit-Board-Firmware\ProcessBoardV1\coappl\processBoard_1.eds' puBoardEdsPath = r'C:\Users\vineetagupta\Documents\NorthStar-Endurance-TestBench\EnduranceTestBench\coappl\enduranceTestBench.eds'
nodes = {}
motorBoardTpdoData = {} # Store latest setpoint and feedback per node
PuBoardData = {}
def PUBoardNode():
global PuBoardData
try:
PuBoardData = canopen.RemoteNode(0x1, puBoardEdsPath)
network.add_node(PuBoardData)
time.sleep(0.1)
# Add to node list early for visibility
nodes[1] = PuBoardData
# Now check if extra node is OPERATIONAL
if PuBoardData.nmt.state == 'OPERATIONAL':
PuBoardData.tpdo.read()
PuBoardData.tpdo[1].enabled = True
def make_extra_callback():
def cb(map_obj):
global PuBoardData
for var in map_obj:
# Flow meter data (0x6005, 0x01 to 0x04)
if var.index == 0x6005:
if var.subindex == 0x01:
PuBoardData['flowmeter']['0x01'] = var.raw
elif var.subindex == 0x02:
PuBoardData['flowmeter']['0x02'] = var.raw
elif var.subindex == 0x03:
PuBoardData['flowmeter']['0x03'] = var.raw
elif var.subindex == 0x04:
PuBoardData['flowmeter']['0x04'] = var.raw
# Pressure sensor data (0x6006, 0x01 to 0x04)
elif var.index == 0x6006:
if var.subindex == 0x01:
PuBoardData['pressure']['0x01'] = var.raw
elif var.subindex == 0x02:
PuBoardData['pressure']['0x02'] = var.raw
elif var.subindex == 0x03:
PuBoardData['pressure']['0x03'] = var.raw
elif var.subindex == 0x04:
PuBoardData['pressure']['0x04'] = var.raw
return cb
PuBoardData.tpdo[1].add_callback(make_extra_callback())
else:
pass
except Exception as e:
print(f"Extra Node {1} error: {e}")
def motorNode(): class SDOSetpointListener(Listener):
for node_id in range(5, 27): def __init__(self, parent):
try: self.parent = parent
node = canopen.RemoteNode(node_id, motorBoardEdsPath)
network.add_node(node)
time.sleep(0.1)
# Add to node list early so it's visible in GUI def on_message_received(self, msg):
nodes[node_id] = node if 0x600 <= msg.arbitration_id <= 0x61F and len(msg.data) >= 8:
motorBoardTpdoData[node_id] = {'setpoint': '-', 'feedback': '-'} node_id = msg.arbitration_id - 0x600
cmd = msg.data[0] & 0xE0
index = msg.data[1] | (msg.data[2] << 8)
subindex = msg.data[3]
# Now check if node is OPERATIONAL if index == 0x6000 and subindex == 0x01 and cmd == 0x20:
if node.nmt.state == 'OPERATIONAL': setpoint_val = msg.data[4]
node.tpdo.read() self.parent.motorBoardTpdoData[node_id]['setpoint'] = setpoint_val
node.tpdo[1].enabled = True
def make_callback(nid):
def cb(map_obj):
for var in map_obj:
if var.index == 0x6002:
motorBoardTpdoData[nid]['setpoint'] = var.raw
elif var.index == 0x6004:
motorBoardTpdoData[nid]['feedback'] = var.raw
return cb
node.tpdo[1].add_callback(make_callback(node_id))
else:
pass
except Exception as e:
print(f"Node {node_id} error: {e}")
# --------------------------- PyQt GUI -------------------------------
class NodeTableWindow(QWidget): class NodeTableWindow(QWidget):
def __init__(self, nodes): def __init__(self, nodes):
super().__init__() super().__init__()
self.setWindowTitle("Valve Node Status") self.setWindowTitle("Endurance Test Bench")
self.nodes = nodes self.nodes = nodes
self.num_nodes = len(nodes) self.motorBoardTpdoData = {}
self.PuBoardData = {}
self.connected = False
self.network = None
self.num_nodes = 0
self.init_ui() self.init_ui()
self.start_timer() self.start_timer()
def init_ui(self): def init_ui(self):
layout = QHBoxLayout(self) layout = QVBoxLayout(self)
button_row = QHBoxLayout()
# Left side - Table self.connect_btn = QPushButton("Connect to CAN", self)
self.disconnect_btn = QPushButton("Disconnect", self)
self.disconnect_btn.setEnabled(False)
self.connect_btn.clicked.connect(self.handle_connect)
self.disconnect_btn.clicked.connect(self.handle_disconnect)
button_row.addWidget(self.connect_btn)
button_row.addWidget(self.disconnect_btn)
layout.addLayout(button_row)
main_layout = QHBoxLayout()
self.table_widget = QWidget(self) self.table_widget = QWidget(self)
table_layout = QVBoxLayout(self.table_widget) table_layout = QVBoxLayout()
table_heading = QLabel("Valve Details")
# Heading for the table table_heading.setAlignment(Qt.AlignLeft)
table_heading = QLabel("Valve Details", self)
table_layout.addWidget(table_heading) table_layout.addWidget(table_heading)
self.table = QTableWidget(0, 4)
# Table
self.table = QTableWidget(self.num_nodes, 4)
self.table.setHorizontalHeaderLabels(["Node ID", "Setpoint", "Feedback", "Status"]) self.table.setHorizontalHeaderLabels(["Node ID", "Setpoint", "Feedback", "Status"])
self.table.horizontalHeader().setStretchLastSection(True)
# Dynamic height based on the number of nodes self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.table.setFixedHeight(30 * self.num_nodes) # 30px height per row self.table.verticalHeader().setVisible(False)
self.table.setFixedWidth(500)
# Adjust column width to content
self.table.resizeColumnsToContents
for row, node_id in enumerate(sorted(self.nodes.keys())):
item = QTableWidgetItem(str(node_id))
item.setTextAlignment(Qt.AlignCenter)
self.table.setItem(row, 0, item)
table_layout.addWidget(self.table) table_layout.addWidget(self.table)
self.table_widget.setLayout(table_layout) self.table_widget.setLayout(table_layout)
# Right side - Pump, Flowmeter, and Pressure Sensor Details
self.details_widget = QWidget(self) self.details_widget = QWidget(self)
details_layout = QVBoxLayout(self.details_widget) details_layout = QVBoxLayout(self.details_widget)
# Pump Details
pump_group = QGroupBox("Pump Details", self)
pump_layout = QFormLayout(pump_group)
pump_speed_label = QLabel("Speed: 0 RPM", self) # Example pump speed
pump_layout.addRow("Pump 1", pump_speed_label)
pump_layout.addRow("Pump 2", pump_speed_label)
pump_layout.addRow("Pump 3", pump_speed_label)
pump_layout.addRow("Pump 4", pump_speed_label)
details_layout.addWidget(pump_group)
# Flow Meter Details
flow_group = QGroupBox("Flow Meter Details", self)
flow_layout = QFormLayout(flow_group)
self.flow_rate_label = QLabel("Flow Rate: 0 L/min", self) # Assign object name
self.flow_rate_label.setObjectName("Flow Rate")
flow_layout.addRow("Flow Rate", self.flow_rate_label)
details_layout.addWidget(flow_group)
# Pressure Sensor Details
pressure_group = QGroupBox("Pressure Sensor Details", self) pressure_group = QGroupBox("Pressure Sensor Details", self)
pressure_layout = QFormLayout(pressure_group) pressure_layout = QFormLayout(pressure_group)
self.pressure_value_label = QLabel("Pressure: 0 bar", self) # Assign object name self.pressure_labels = []
self.pressure_value_label.setObjectName("Pressure") for i in range(1, 5):
pressure_layout.addRow("Pressure", self.pressure_value_label) label = QLabel("0 bar", self)
self.pressure_labels.append(label)
pressure_layout.addRow(f"Pressure Sensor {i}", label)
details_layout.addWidget(pressure_group) details_layout.addWidget(pressure_group)
flow_group = QGroupBox("Flow Meter Details", self)
flow_layout = QFormLayout(flow_group)
self.flow_rate_label = []
for i in range(1, 5):
label = QLabel("0 L/h", self)
self.flow_rate_label.append(label)
flow_layout.addRow(f"Flowmeter {i}", label)
details_layout.addWidget(flow_group)
pump_group = QGroupBox("Pump Details", self)
pump_layout = QFormLayout(pump_group)
self.pump_value_label = QLabel("0 RPM", self)
pump_layout.addRow("Speed", self.pump_value_label)
details_layout.addWidget(pump_group)
self.details_widget.setLayout(details_layout) self.details_widget.setLayout(details_layout)
main_layout.addWidget(self.table_widget)
# Add both widgets (table and details) to the main layout main_layout.addWidget(self.details_widget)
layout.addWidget(self.table_widget) layout.addLayout(main_layout)
layout.addWidget(self.details_widget)
self.setLayout(layout)
# Set window size
screen = QApplication.primaryScreen() screen = QApplication.primaryScreen()
screen_geometry = screen.availableGeometry() screen_geometry = screen.availableGeometry()
width = int(screen_geometry.width() * 0.4) width = int(screen_geometry.width() * 0.4)
@ -186,56 +103,161 @@ class NodeTableWindow(QWidget):
y = int((screen_geometry.height() - height) / 2) y = int((screen_geometry.height() - height) / 2)
self.setGeometry(x, y, width, height) self.setGeometry(x, y, width, height)
def start_timer(self): def start_timer(self):
self.timer = QTimer() self.timer = QTimer()
self.timer.setInterval(500) self.timer.setInterval(500)
self.timer.timeout.connect(self.update_table) self.timer.timeout.connect(self.update_table)
self.timer.start() self.timer.start()
def handle_connect(self):
try:
self.network = canopen.Network()
self.network.connect(channel='PCAN_USBBUS1', bustype='pcan', bitrate=250000)
self.nodes = {}
self.motorBoardTpdoData = {}
self.PuBoardData = {}
self.init_motor_nodes()
self.init_pu_node()
self.listener = SDOSetpointListener(self)
self.notifier = can.Notifier(self.network.bus, [self.listener])
self.connected = True
self.num_nodes = len(self.nodes)
self.table.setRowCount(self.num_nodes)
for row, node_id in enumerate(sorted(self.nodes.keys())):
item = QTableWidgetItem(str(node_id))
item.setTextAlignment(Qt.AlignCenter)
self.table.setItem(row, 0, item)
self.connect_btn.setStyleSheet("background-color: lightgreen;")
self.disconnect_btn.setEnabled(True)
QMessageBox.information(self, "Connected", "Successfully connected to CAN and initialized nodes.")
except Exception as e:
QMessageBox.critical(self, "Connection Error", f"Failed to connect:\n{e}")
self.connected = False
def handle_disconnect(self):
try:
if hasattr(self, 'notifier'):
self.notifier.stop()
if self.network:
self.network.disconnect()
self.connected = False
self.nodes.clear()
self.motorBoardTpdoData.clear()
self.PuBoardData.clear()
self.table.clearContents()
self.table.setRowCount(0)
self.connect_btn.setEnabled(True)
self.disconnect_btn.setEnabled(False)
self.connect_btn.setStyleSheet("")
QMessageBox.information(self, "Disconnected", "CAN network disconnected.")
except Exception as e:
QMessageBox.warning(self, "Disconnect Error", f"Error while disconnecting:\n{e}")
def init_motor_nodes(self):
for node_id in range(5, 27):
try:
node = canopen.RemoteNode(node_id, motorBoardEdsPath)
self.network.add_node(node)
time.sleep(0.1)
self.nodes[node_id] = node
self.motorBoardTpdoData[node_id] = {'setpoint': '-', 'feedback': '-'}
if node.nmt.state == 'OPERATIONAL':
node.tpdo.read()
node.tpdo[1].enabled = True
def make_callback(nid):
def cb(map_obj):
for var in map_obj:
if var.index == 0x6002:
self.motorBoardTpdoData[nid]['feedback'] = var.raw
return cb
node.tpdo[1].add_callback(make_callback(node_id))
except Exception as e:
print(f"Motor node {node_id} error: {e}")
def init_pu_node(self):
try:
node = canopen.RemoteNode(0x1, puBoardEdsPath)
self.network.add_node(node)
time.sleep(0.1)
self.nodes[1] = node
self.PuBoardData = {'flowmeter': {}, 'pressure': {}, 'pump': {}}
if node.nmt.state == 'OPERATIONAL':
node.tpdo.read()
# Enable all relevant TPDOs
for tpdo_id in range(4, 9): # TPDO4 to TPDO8
if tpdo_id in node.tpdo:
node.tpdo[tpdo_id].enabled = True
def make_callback():
def cb(map_obj):
for var in map_obj:
if var.index == 0x6004:
self.PuBoardData['flowmeter'][f'0x{var.subindex:02X}'] = var.raw
elif var.index == 0x6005:
self.PuBoardData['pressure'][f'0x{var.subindex:02X}'] = var.raw
elif var.index == 0x6006:
self.PuBoardData['pump'][f'0x{var.subindex:02X}'] = var.raw
return cb
node.tpdo[tpdo_id].add_callback(make_callback())
except Exception as e:
print(f"PU node error: {e}")
def update_table(self): def update_table(self):
if not self.connected:
return
for row, node_id in enumerate(sorted(self.nodes.keys())): for row, node_id in enumerate(sorted(self.nodes.keys())):
node = self.nodes[node_id] node = self.nodes[node_id]
# Node status
try: try:
status = node.nmt.state status = node.nmt.state
except: except:
status = "UNKNOWN" status = "UNKNOWN"
# Color Node ID based on status
node_item = self.table.item(row, 0) node_item = self.table.item(row, 0)
node_item.setBackground(QColor("green") if status == "OPERATIONAL" else QColor("red")) if node_item:
node_item.setBackground(
# Setpoint QColor("green") if status == "OPERATIONAL" else
set_val = str(motorBoardTpdoData.get(node_id, {}).get('setpoint', '-')) QColor("yellow") if status == "PRE-OPERATIONAL" else
QColor("red")
)
set_val = str(self.motorBoardTpdoData.get(node_id, {}).get('setpoint', '-'))
setpoint_item = QTableWidgetItem(set_val) setpoint_item = QTableWidgetItem(set_val)
setpoint_item.setTextAlignment(Qt.AlignCenter) setpoint_item.setTextAlignment(Qt.AlignCenter)
self.table.setItem(row, 1, setpoint_item) self.table.setItem(row, 1, setpoint_item)
fb_val = str(self.motorBoardTpdoData.get(node_id, {}).get('feedback', '-'))
# Feedback
fb_val = str(motorBoardTpdoData.get(node_id, {}).get('feedback', '-'))
feedback_item = QTableWidgetItem(fb_val) feedback_item = QTableWidgetItem(fb_val)
feedback_item.setTextAlignment(Qt.AlignCenter) feedback_item.setTextAlignment(Qt.AlignCenter)
self.table.setItem(row, 2, feedback_item) self.table.setItem(row, 2, feedback_item)
# Status
status_item = QTableWidgetItem(status) status_item = QTableWidgetItem(status)
status_item.setTextAlignment(Qt.AlignCenter) status_item.setTextAlignment(Qt.AlignCenter)
self.table.setItem(row, 3, status_item) self.table.setItem(row, 3, status_item)
# Update flowmeter values
for i in range(1, 5):
value = self.PuBoardData.get("flowmeter", {}).get(f"0x{i:02X}", 0)
self.flow_rate_label[i-1].setText(f"{value} L/h")
# Update pressure sensor values
for i in range(1, 5):
value = self.PuBoardData.get("pressure", {}).get(f"0x{i:02X}", 0)
self.pressure_labels[i-1].setText(f"{value} bar")
# Update pump speed
value = self.PuBoardData.get("pump", {}).get("0x00", 0)
self.pump_value_label.setText(f"{value} RPM")
def main(): def main():
# Initialize all the nodes
motorNode()
PUBoardNode()
# Start the GUI
app = QApplication(sys.argv) app = QApplication(sys.argv)
window = NodeTableWindow(nodes) window = NodeTableWindow({})
window.show() window.show()
sys.exit(app.exec_()) sys.exit(app.exec_())
if __name__ == "__main__": if __name__ == "__main__":
main() main()