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
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
0x1016,0x00,Consumer Heartbeat Time Number of entries,UNSIGNED8,ro,1,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
0x1017,0x00,Producer Heartbeat Time,UNSIGNED16,rw,1500,NONE,0,65535,no,no,no,no,0,ManagedVariable,0,,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,500,NONE,0,4294967295,yes,no,no,no,1,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,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
@ -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,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
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,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
@ -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,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,0x01, Pressue and Flowmeter Data OUT2 Mapping Entry 1,UNSIGNED32,const,1610679072,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,tpdo
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,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,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
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,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
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
EDSVersion=4.0
Description=EDS
CreationTime=14:59PM
CreationDate=02-25-25
ModificationTime=14:59PM
ModificationDate=02-25-25
CreationTime=13:57PM
CreationDate=04-25-25
ModificationTime=13:57PM
ModificationDate=04-25-25
CreatedBy=Aniket Saha
ModifiedBy=Aniket Saha
@ -32,7 +32,7 @@ BaudRate_500=0
BaudRate_800=0
BaudRate_1000=0
NrOfRxPDO=3
NrOfTxPDO=5
NrOfTxPDO=8
SimpleBootupSlave=1
SimpleBootupMaster=0
LSS_Supported=0
@ -61,7 +61,7 @@ SupportedObjects=2
2=0x3000
[OptionalObjects]
SupportedObjects=51
SupportedObjects=58
1=0x1003
2=0x1008
3=0x1014
@ -102,17 +102,24 @@ SupportedObjects=51
38=0x1802
39=0x1803
40=0x1804
41=0x1a00
42=0x1a01
43=0x1a02
44=0x1a03
45=0x1a04
46=0x6000
47=0x6001
48=0x6002
49=0x6003
50=0x6004
51=0x6005
41=0x1805
42=0x1806
43=0x1807
44=0x1a00
45=0x1a01
46=0x1a02
47=0x1a03
48=0x1a04
49=0x1a05
50=0x1a06
51=0x1a07
52=0x6000
53=0x6001
54=0x6002
55=0x6003
56=0x6004
57=0x6005
58=0x6006
[1000]
ParameterName=Device Type
@ -1672,6 +1679,174 @@ DataType=5
AccessType=rw
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]
ParameterName=Conductivity Data OUT1
ObjectType=9
@ -1806,16 +1981,95 @@ ParameterName=Mapping Entry 1
ObjectType=7
DataType=7
AccessType=const
PDOMapping=1
DefaultValue=0x60010320
PDOMapping=0
DefaultValue=0x60040220
[1a04sub2]
ParameterName=Mapping Entry 2
ObjectType=7
DataType=7
AccessType=const
PDOMapping=1
DefaultValue=0x60010420
PDOMapping=0
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]
ParameterName=Manufacturer Object
@ -2160,3 +2414,10 @@ DataType=8
AccessType=rw
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
0x1016,,ARRAY,UNSIGNED32,Consumer Heartbeat Time,,,,,,,,,,,,,,
0x1016,0x00,,UNSIGNED32,Number of entries,,ro,no,1,1,1,,0,ManagedConst,no,0,255,no
0x1016,0x01,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,0,,0,ManagedVariable,no,0,4294967295,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,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,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,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,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
@ -257,8 +303,22 @@ index,sub,objectcode,datatype,edsname,varname,access,mapable,hasdefault,defaulti
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,0x01,,UNSIGNED32,Mapping Entry 1,,const,tpdo,1,1,1610679072,,0,ManagedConst,no,0,0,no
0x1a04,0x02,,UNSIGNED32,Mapping Entry 2,,const,tpdo,1,1,1610679328,,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,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
@ -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,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
Sub: 0x00 - Number of entries
DataType: UNSIGNED8
DefaultValue: 1
DefaultValue: 20
AccessType: ro
PDOMapping: 0
Sub: 0x01 - Consumer Heartbeat Time
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
PDOMapping: 0
@ -78,7 +173,7 @@ DataType: UNSIGNED16
ObjectCode: Variable
Sub: 0x00 - Producer Heartbeat Time
DataType: UNSIGNED16
DefaultValue: 1500
DefaultValue: 100
AccessType: rw
PDOMapping: 0
@ -946,6 +1041,114 @@ ObjectCode: Record
AccessType: rw
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
DataType: UNSIGNED8
ObjectCode: Record
@ -1032,14 +1235,66 @@ ObjectCode: Record
PDOMapping: 0
Sub: 0x01 - Mapping Entry 1
DataType: UNSIGNED32
DefaultValue: 0x60010320
DefaultValue: 0x60040220
AccessType: const
PDOMapping: 4
PDOMapping: 0
Sub: 0x02 - Mapping Entry 2
DataType: UNSIGNED32
DefaultValue: 0x60010420
DefaultValue: 0x60050220
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
DataType: INTEGER32
@ -1253,3 +1508,11 @@ ObjectCode: Array
DataType: REAL32
AccessType: rw
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
* */
* 25 04 2025 13:57:30 */
/* protect against multiple inclusion of the file */
#ifndef GEN_DEFINE_H
@ -19,10 +19,10 @@
#define CO_REC_BUFFER_COUNTS 10u
#define CO_TR_BUFFER_COUNTS 20u
/* Number of objects per line */
#define CO_OBJECTS_LINE_0_CNT 56u
#define CO_OBJECT_COUNTS 56u
#define CO_COB_COUNTS 75u
#define CO_TXPDO_COUNTS 5u
#define CO_OBJECTS_LINE_0_CNT 63u
#define CO_OBJECT_COUNTS 63u
#define CO_COB_COUNTS 78u
#define CO_TXPDO_COUNTS 8u
#define CO_RXPDO_COUNTS 3u
#define CO_SSDO_COUNTS 1u
#define CO_CSDO_COUNTS 20u
@ -42,7 +42,7 @@
#define CO_LSS_INQUIRY_SERVICES 1u
#define CO_SDO_SERVER_CNT 1u
#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_MAX_MAP_ENTRIES 2u
#define CO_HB_CONSUMER_CNT 20u
@ -55,7 +55,7 @@
#define CO_SDO_QUEUE_LEN 0u
#define CO_INHIBIT_SUPPORTED 1u
/* 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*/

View File

@ -1,6 +1,6 @@
/*
* 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 */

View File

@ -1,6 +1,6 @@
/*
* 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 */
@ -72,11 +72,17 @@
#define I_TPDO_COMMUNICATION_PARAMETER2 0x1802u
#define I_TPDO_COMMUNICATION_PARAMETER3 0x1803u
#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_OUT2 0x1a01u
#define I_CONDUCTIVITY_DATA_OUT3 0x1a02u
#define I_PRESSUE_AND_FLOWMETER_DATA_OUT1 0x1a03u
#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_MANAGED_ARRAY 0x3000u
#define S_SUB_1 0x1u
@ -120,6 +126,7 @@
#define S_PS2_OUT 0x2u
#define S_PS3_OUT 0x3u
#define S_PS4_OUT 0x4u
#define I_PUMP_DATA_OUT1 0x6006u
#define S_NUMBER_OF_ENTRIES 0x0u
#endif /* GEN_INDICES_H */

View File

@ -1,6 +1,6 @@
/*
* 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>
@ -31,8 +31,8 @@
/* definition of static indication function pointers */
/* number of objects */
#define CO_OD_ASSIGN_CNT 56u
#define CO_OBJ_DESC_CNT 231u
#define CO_OD_ASSIGN_CNT 63u
#define CO_OBJ_DESC_CNT 261u
/* definition of managed variables */
static UNSIGNED8 CO_STORAGE_CLASS od_u8[8]= {
@ -46,7 +46,7 @@ static UNSIGNED8 CO_STORAGE_CLASS od_u8[8]= {
(UNSIGNED8)0u /* 0x6000:5 */};
static UNSIGNED16 CO_STORAGE_CLASS od_u16[1]= {
(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 /* 0x1014:0 */,
(UNSIGNED32)0UL /* 0x1018:4 */,
@ -69,7 +69,8 @@ static UNSIGNED32 CO_STORAGE_CLASS od_u32[23]= {
(UNSIGNED32)0UL /* 0x6003:5 */,
(UNSIGNED32)0UL /* 0x6003:6 */,
(UNSIGNED32)0UL /* 0x6003:7 */,
(UNSIGNED32)0UL /* 0x6003:8 */};
(UNSIGNED32)0UL /* 0x6003:8 */,
(UNSIGNED32)0UL /* 0x6006:0 */};
static INTEGER16 CO_STORAGE_CLASS od_i16[2]= {
(INTEGER16)0 /* 0x3000:1 */,
(INTEGER16)2 /* 0x3000:2 */};
@ -102,7 +103,7 @@ static CO_CONST UNSIGNED16 CO_CONST_STORAGE_CLASS od_const_u16[4] = {
(UNSIGNED16)100u,
(UNSIGNED16)10u,
(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)128UL,
(UNSIGNED32)500UL,
@ -130,7 +131,14 @@ static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[28] = {
(UNSIGNED32)1610745120UL,
(UNSIGNED32)1610745376UL,
(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] = {
(INTEGER16)0,
(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)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)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)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*/
@ -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)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)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)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)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)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_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*/
@ -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)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)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 */
@ -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 },
{ 0x1803u, 7u, 6u, CO_ODTYPE_STRUCT, 159u },
{ 0x1804u, 7u, 6u, CO_ODTYPE_STRUCT, 166u },
{ 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 173u },
{ 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 176u },
{ 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 179u },
{ 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 182u },
{ 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 185u },
{ 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 188u },
{ 0x3000u, 3u, 2u, CO_ODTYPE_ARRAY, 189u },
{ 0x6000u, 6u, 5u, CO_ODTYPE_ARRAY, 192u },
{ 0x6001u, 7u, 6u, CO_ODTYPE_ARRAY, 198u },
{ 0x6002u, 7u, 6u, CO_ODTYPE_ARRAY, 205u },
{ 0x6003u, 9u, 8u, CO_ODTYPE_ARRAY, 212u },
{ 0x6004u, 5u, 4u, CO_ODTYPE_ARRAY, 221u },
{ 0x6005u, 5u, 4u, CO_ODTYPE_ARRAY, 226u },
{ 0x1805u, 7u, 6u, CO_ODTYPE_STRUCT, 173u },
{ 0x1806u, 7u, 6u, CO_ODTYPE_STRUCT, 180u },
{ 0x1807u, 7u, 6u, CO_ODTYPE_STRUCT, 187u },
{ 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 194u },
{ 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 197u },
{ 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 200u },
{ 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 203u },
{ 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 206u },
{ 0x1a05u, 3u, 2u, CO_ODTYPE_STRUCT, 209u },
{ 0x1a06u, 3u, 2u, CO_ODTYPE_STRUCT, 212u },
{ 0x1a07u, 2u, 1u, CO_ODTYPE_STRUCT, 215u },
{ 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 217u },
{ 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 */
@ -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 = {
(UNSIGNED8)2u,
{
{&od_u32[5], 4u, CO_TRUE, 0x60010320UL },
{&od_u32[6], 4u, CO_TRUE, 0x60010420UL },
{&od_r32[1], 4u, CO_TRUE, 0x60040220UL },
{&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 */
@ -775,6 +844,24 @@ CO_COMMON_INIT_VAL_T commonInitVars = {
return(retVal);
}
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 */
retVal = coPdoReceiveInit(1u, od_const_u8[6], 0u, 0u, &mapTableRPDO0);
if (retVal != RET_OK) {
@ -1020,5 +1107,14 @@ RET_T userOverwriteCobIdSettings(void)
cobId = nodeId + 0x180+1;
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;
}

View File

@ -32,6 +32,12 @@ static uint32 GrundfosPmpReadVoltage(uint8 channel_u8);
/******************************************************************************
* Extern Function Definitions
******************************************************************************/
void GrundfosPmpInit(GrundfosMain_st *grundfos_pst)
{
grundfos_pst->rawQ_f32 = 0.0f;
}
void GrundfosPmpEnable(uint8 state_u8)
{
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
******************************************************************************/
uint32 GrundfosPmpFeedback(uint8 channel_u8);
void GrundfosPmpInit(GrundfosMain_st *grundfos_pst);
void GrundfosPmpFeedback(GrundfosMain_st *grundfos_pst);
void GrundfosPmpEnable(uint8_t state_u8);
bool GrundfosPmpSetSpeed(float setSpeed_f);
#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_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_ */

View File

@ -119,6 +119,8 @@ void ProcessBoardInit(void)
PressureSensorInit(&pressureSensorPS2_gst);
PressureSensorInit(&pressureSensorPS3_gst);
PressureSensorInit(&pressureSensorPS4_gst);
GrundfosPmpInit(&grundfosPMP_gst);
}
@ -166,6 +168,8 @@ void ProcessBoardRun(void)
ProcessBoardPressureSensorDataOUT(pressureSensorPS3_gst.rawT_f32);
ProcessBoardPressureSensorDataOUT(pressureSensorPS4_gst.rawT_f32);
ProcessBoardPumpSpeedDataOUT(grundfosPMP_gst.rawQ_f32);
ProcessBoardGrundfosPumpHandler();
ProcessBoardReadCondDataIN();
@ -215,12 +219,12 @@ static void ProcessBoardGrundfosPumpHandler(void)
startTime_u64 = currentTimeMs_u64;
}
GrundfosPmpSetSpeed(speed_u8);
// GrundfosPmpSetSpeed(speed_u8);
/* 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);
}
@ -268,25 +272,25 @@ static void ProcessBoardWriteCondDataOUT(void)
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, 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, 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_FLOWMETER2_DATA_OUT_SUB_INDEX, 1.0f);
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_FLOWMETER4_DATA_OUT_SUB_INDEX, 1.0f);
}
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, 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, 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_PRESSURE2_DATA_OUT_SUB_INDEX, 2.0f);
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_PRESSURE4_DATA_OUT_SUB_INDEX, 2.0f);
}
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_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
******************************************************************************/

360
gui.py
View File

@ -1,183 +1,100 @@
import sys
import time
import struct
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.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'
puBoardEdsPath = r'C:\Users\vineetagupta\Documents\NorthStar-Production-Unit-Board-Firmware\ProcessBoardV1\coappl\processBoard_1.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}")
puBoardEdsPath = r'C:\Users\vineetagupta\Documents\NorthStar-Endurance-TestBench\EnduranceTestBench\coappl\enduranceTestBench.eds'
def motorNode():
for node_id in range(5, 27):
try:
node = canopen.RemoteNode(node_id, motorBoardEdsPath)
network.add_node(node)
time.sleep(0.1)
class SDOSetpointListener(Listener):
def __init__(self, parent):
self.parent = parent
# Add to node list early so it's visible in GUI
nodes[node_id] = node
motorBoardTpdoData[node_id] = {'setpoint': '-', 'feedback': '-'}
def on_message_received(self, msg):
if 0x600 <= msg.arbitration_id <= 0x61F and len(msg.data) >= 8:
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 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:
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}")
if index == 0x6000 and subindex == 0x01 and cmd == 0x20:
setpoint_val = msg.data[4]
self.parent.motorBoardTpdoData[node_id]['setpoint'] = setpoint_val
# --------------------------- PyQt GUI -------------------------------
class NodeTableWindow(QWidget):
def __init__(self, nodes):
super().__init__()
self.setWindowTitle("Valve Node Status")
self.setWindowTitle("Endurance Test Bench")
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.start_timer()
def init_ui(self):
layout = QHBoxLayout(self)
# Left side - Table
layout = QVBoxLayout(self)
button_row = QHBoxLayout()
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)
table_layout = QVBoxLayout(self.table_widget)
# Heading for the table
table_heading = QLabel("Valve Details", self)
table_layout = QVBoxLayout()
table_heading = QLabel("Valve Details")
table_heading.setAlignment(Qt.AlignLeft)
table_layout.addWidget(table_heading)
# Table
self.table = QTableWidget(self.num_nodes, 4)
self.table = QTableWidget(0, 4)
self.table.setHorizontalHeaderLabels(["Node ID", "Setpoint", "Feedback", "Status"])
# Dynamic height based on the number of nodes
self.table.setFixedHeight(30 * self.num_nodes) # 30px height per row
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)
self.table.horizontalHeader().setStretchLastSection(True)
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.table.verticalHeader().setVisible(False)
table_layout.addWidget(self.table)
self.table_widget.setLayout(table_layout)
# Right side - Pump, Flowmeter, and Pressure Sensor Details
self.details_widget = QWidget(self)
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_layout = QFormLayout(pressure_group)
self.pressure_value_label = QLabel("Pressure: 0 bar", self) # Assign object name
self.pressure_value_label.setObjectName("Pressure")
pressure_layout.addRow("Pressure", self.pressure_value_label)
self.pressure_labels = []
for i in range(1, 5):
label = QLabel("0 bar", self)
self.pressure_labels.append(label)
pressure_layout.addRow(f"Pressure Sensor {i}", label)
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)
# Add both widgets (table and details) to the main layout
layout.addWidget(self.table_widget)
layout.addWidget(self.details_widget)
self.setLayout(layout)
# Set window size
main_layout.addWidget(self.table_widget)
main_layout.addWidget(self.details_widget)
layout.addLayout(main_layout)
screen = QApplication.primaryScreen()
screen_geometry = screen.availableGeometry()
width = int(screen_geometry.width() * 0.4)
@ -186,56 +103,161 @@ class NodeTableWindow(QWidget):
y = int((screen_geometry.height() - height) / 2)
self.setGeometry(x, y, width, height)
def start_timer(self):
self.timer = QTimer()
self.timer.setInterval(500)
self.timer.timeout.connect(self.update_table)
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):
if not self.connected:
return
for row, node_id in enumerate(sorted(self.nodes.keys())):
node = self.nodes[node_id]
# Node status
try:
status = node.nmt.state
except:
status = "UNKNOWN"
# Color Node ID based on status
node_item = self.table.item(row, 0)
node_item.setBackground(QColor("green") if status == "OPERATIONAL" else QColor("red"))
# Setpoint
set_val = str(motorBoardTpdoData.get(node_id, {}).get('setpoint', '-'))
if node_item:
node_item.setBackground(
QColor("green") if status == "OPERATIONAL" else
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.setTextAlignment(Qt.AlignCenter)
self.table.setItem(row, 1, setpoint_item)
# Feedback
fb_val = str(motorBoardTpdoData.get(node_id, {}).get('feedback', '-'))
fb_val = str(self.motorBoardTpdoData.get(node_id, {}).get('feedback', '-'))
feedback_item = QTableWidgetItem(fb_val)
feedback_item.setTextAlignment(Qt.AlignCenter)
self.table.setItem(row, 2, feedback_item)
# Status
status_item = QTableWidgetItem(status)
status_item.setTextAlignment(Qt.AlignCenter)
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():
# Initialize all the nodes
motorNode()
PUBoardNode()
# Start the GUI
app = QApplication(sys.argv)
window = NodeTableWindow(nodes)
window = NodeTableWindow({})
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()