Compare commits

..

No commits in common. "77d8b4f997d52effb603ccc30245336800974cc5" and "25d8dc7d056eb8d5c2ebf576901de99a1d3e71c1" have entirely different histories.

16 changed files with 268 additions and 2456 deletions

View File

@ -6,28 +6,9 @@ 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,20,NONE,0,255,yes,no,no,no,1,ManagedConst,0,ARRAY,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,500,NONE,0,4294967295,yes,no,no,no,1,ManagedVariable,0,,no 0x1016,0x01,Consumer Heartbeat Time Consumer Heartbeat Time,UNSIGNED32,rw,0,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 0x1017,0x00,Producer Heartbeat Time,UNSIGNED16,rw,1500,NONE,0,65535,no,no,no,no,0,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
@ -172,27 +153,6 @@ 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
@ -206,16 +166,8 @@ 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,1610875424,NONE,0,0,yes,no,no,no,1,ManagedConst,0,,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,1610940960,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
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
@ -261,4 +213,3 @@ 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 171.

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=13:57PM CreationTime=14:59PM
CreationDate=04-25-25 CreationDate=02-25-25
ModificationTime=13:57PM ModificationTime=14:59PM
ModificationDate=04-25-25 ModificationDate=02-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=8 NrOfTxPDO=5
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=58 SupportedObjects=51
1=0x1003 1=0x1003
2=0x1008 2=0x1008
3=0x1014 3=0x1014
@ -102,24 +102,17 @@ SupportedObjects=58
38=0x1802 38=0x1802
39=0x1803 39=0x1803
40=0x1804 40=0x1804
41=0x1805 41=0x1a00
42=0x1806 42=0x1a01
43=0x1807 43=0x1a02
44=0x1a00 44=0x1a03
45=0x1a01 45=0x1a04
46=0x1a02 46=0x6000
47=0x1a03 47=0x6001
48=0x1a04 48=0x6002
49=0x1a05 49=0x6003
50=0x1a06 50=0x6004
51=0x1a07 51=0x6005
52=0x6000
53=0x6001
54=0x6002
55=0x6003
56=0x6004
57=0x6005
58=0x6006
[1000] [1000]
ParameterName=Device Type ParameterName=Device Type
@ -1679,174 +1672,6 @@ 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
@ -1981,95 +1806,16 @@ ParameterName=Mapping Entry 1
ObjectType=7 ObjectType=7
DataType=7 DataType=7
AccessType=const AccessType=const
PDOMapping=0 PDOMapping=1
DefaultValue=0x60040220 DefaultValue=0x60010320
[1a04sub2] [1a04sub2]
ParameterName=Mapping Entry 2 ParameterName=Mapping Entry 2
ObjectType=7 ObjectType=7
DataType=7 DataType=7
AccessType=const AccessType=const
PDOMapping=0 PDOMapping=1
DefaultValue=0x60050220 DefaultValue=0x60010420
[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
@ -2414,10 +2160,3 @@ 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,29 +17,10 @@ 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,20,,0,ManagedConst,no,0,255,no 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,500,,0,ManagedVariable,no,0,4294967295,no 0x1016,0x01,,UNSIGNED32,Consumer Heartbeat Time,,rw,no,1,1,0,,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,100,,0,ManagedVariable,no,0,65535,no 0x1017,0x00,VARIABLE,UNSIGNED16,Producer Heartbeat Time,,rw,no,0,0,1500,,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
@ -254,33 +235,6 @@ 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
@ -303,22 +257,8 @@ 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,no,1,1,1610875424,,0,ManagedConst,no,0,0,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,no,1,1,1610940960,,0,ManagedConst,no,0,0,no 0x1a04,0x02,,UNSIGNED32,Mapping Entry 2,,const,tpdo,1,1,1610679328,,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
@ -380,5 +320,3 @@ 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,107 +64,12 @@ DataType: UNSIGNED32
ObjectCode: Array ObjectCode: Array
Sub: 0x00 - Number of entries Sub: 0x00 - Number of entries
DataType: UNSIGNED8 DataType: UNSIGNED8
DefaultValue: 20 DefaultValue: 1
AccessType: ro AccessType: ro
PDOMapping: 0 PDOMapping: 0
Sub: 0x01 - Consumer Heartbeat Time Sub: 0x01 - Consumer Heartbeat Time
DataType: UNSIGNED32 DataType: UNSIGNED32
DefaultValue: 500 DefaultValue: 0x0000
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
@ -173,7 +78,7 @@ DataType: UNSIGNED16
ObjectCode: Variable ObjectCode: Variable
Sub: 0x00 - Producer Heartbeat Time Sub: 0x00 - Producer Heartbeat Time
DataType: UNSIGNED16 DataType: UNSIGNED16
DefaultValue: 100 DefaultValue: 1500
AccessType: rw AccessType: rw
PDOMapping: 0 PDOMapping: 0
@ -1041,114 +946,6 @@ 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
@ -1235,66 +1032,14 @@ ObjectCode: Record
PDOMapping: 0 PDOMapping: 0
Sub: 0x01 - Mapping Entry 1 Sub: 0x01 - Mapping Entry 1
DataType: UNSIGNED32 DataType: UNSIGNED32
DefaultValue: 0x60040220 DefaultValue: 0x60010320
AccessType: const AccessType: const
PDOMapping: 0 PDOMapping: 4
Sub: 0x02 - Mapping Entry 2 Sub: 0x02 - Mapping Entry 2
DataType: UNSIGNED32 DataType: UNSIGNED32
DefaultValue: 0x60050220 DefaultValue: 0x60010420
AccessType: const AccessType: const
PDOMapping: 0 PDOMapping: 4
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
@ -1508,11 +1253,3 @@ 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 63u #define CO_OBJECTS_LINE_0_CNT 56u
#define CO_OBJECT_COUNTS 63u #define CO_OBJECT_COUNTS 56u
#define CO_COB_COUNTS 78u #define CO_COB_COUNTS 75u
#define CO_TXPDO_COUNTS 8u #define CO_TXPDO_COUNTS 5u
#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 8u #define CO_PDO_TRANSMIT_CNT 5u
#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 78u #define CO_COB_CNT 75u
/* 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
* Fri Apr 25 13:57:30 2025 * Tue Feb 25 14:59:00 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
* Fri Apr 25 13:57:30 2025 * Tue Feb 25 14:58:59 2025
*/ */
/* protect against multiple inclusion of the file */ /* protect against multiple inclusion of the file */
@ -72,17 +72,11 @@
#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
@ -126,7 +120,6 @@
#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
* Fri Apr 25 13:57:30 2025 * Tue Feb 25 14:59:00 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 63u #define CO_OD_ASSIGN_CNT 56u
#define CO_OBJ_DESC_CNT 261u #define CO_OBJ_DESC_CNT 231u
/* 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[24]= { static UNSIGNED32 CO_STORAGE_CLASS od_u32[23]= {
(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,8 +69,7 @@ static UNSIGNED32 CO_STORAGE_CLASS od_u32[24]= {
(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 */};
@ -103,7 +102,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[35] = { static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[28] = {
(UNSIGNED32)0UL, (UNSIGNED32)0UL,
(UNSIGNED32)128UL, (UNSIGNED32)128UL,
(UNSIGNED32)500UL, (UNSIGNED32)500UL,
@ -131,14 +130,7 @@ static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[35] = {
(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};
@ -328,27 +320,6 @@ 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*/
@ -362,16 +333,8 @@ 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)28u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)28u},/* 0x1a04:1*/ { (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)29u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)29u},/* 0x1a04:2*/ { (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)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*/
@ -415,7 +378,6 @@ 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 */
@ -463,26 +425,19 @@ 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 },
{ 0x1805u, 7u, 6u, CO_ODTYPE_STRUCT, 173u }, { 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 173u },
{ 0x1806u, 7u, 6u, CO_ODTYPE_STRUCT, 180u }, { 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 176u },
{ 0x1807u, 7u, 6u, CO_ODTYPE_STRUCT, 187u }, { 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 179u },
{ 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 194u }, { 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 182u },
{ 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 197u }, { 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 185u },
{ 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 200u }, { 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 188u },
{ 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 203u }, { 0x3000u, 3u, 2u, CO_ODTYPE_ARRAY, 189u },
{ 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 206u }, { 0x6000u, 6u, 5u, CO_ODTYPE_ARRAY, 192u },
{ 0x1a05u, 3u, 2u, CO_ODTYPE_STRUCT, 209u }, { 0x6001u, 7u, 6u, CO_ODTYPE_ARRAY, 198u },
{ 0x1a06u, 3u, 2u, CO_ODTYPE_STRUCT, 212u }, { 0x6002u, 7u, 6u, CO_ODTYPE_ARRAY, 205u },
{ 0x1a07u, 2u, 1u, CO_ODTYPE_STRUCT, 215u }, { 0x6003u, 9u, 8u, CO_ODTYPE_ARRAY, 212u },
{ 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 217u }, { 0x6004u, 5u, 4u, CO_ODTYPE_ARRAY, 221u },
{ 0x3000u, 3u, 2u, CO_ODTYPE_ARRAY, 218u }, { 0x6005u, 5u, 4u, CO_ODTYPE_ARRAY, 226u },
{ 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 */
@ -522,32 +477,8 @@ 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_r32[1], 4u, CO_TRUE, 0x60040220UL }, {&od_u32[5], 4u, CO_TRUE, 0x60010320UL },
{&od_r32[5], 4u, CO_TRUE, 0x60050220UL }, {&od_u32[6], 4u, CO_TRUE, 0x60010420UL },
}
};
/* 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 */
@ -844,24 +775,6 @@ 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) {
@ -1107,14 +1020,5 @@ 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,12 +32,6 @@ 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)
@ -51,14 +45,11 @@ void GrundfosPmpEnable(uint8 state_u8)
} }
void GrundfosPmpFeedback(GrundfosMain_st *grundfos_pst) uint32 GrundfosPmpFeedback(uint8 channel_u8)
{ {
if (grundfos_pst == NULL) uint32 feedbackSpeed_u32 = (GrundfosPmpReadVoltage(channel_u8)) * 360u;
{
/* Error */
}
grundfos_pst->rawQ_f32 = (GrundfosPmpReadVoltage(grundfos_pst->channel_u32)) * 100 * 360u; return feedbackSpeed_u32;
} }

View File

@ -34,8 +34,7 @@ typedef struct
/****************************************************************************** /******************************************************************************
* Extern Function Declarations * Extern Function Declarations
******************************************************************************/ ******************************************************************************/
void GrundfosPmpInit(GrundfosMain_st *grundfos_pst); uint32 GrundfosPmpFeedback(uint8 channel_u8);
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 0x00 #define OD_ENTRY_PU_GRUNDFOS_PUMP_FEEDBACK_SUB_INDEX 0x03
#endif /* OD_ENTRIES_H_ */ #endif /* OD_ENTRIES_H_ */

View File

@ -119,8 +119,6 @@ void ProcessBoardInit(void)
PressureSensorInit(&pressureSensorPS2_gst); PressureSensorInit(&pressureSensorPS2_gst);
PressureSensorInit(&pressureSensorPS3_gst); PressureSensorInit(&pressureSensorPS3_gst);
PressureSensorInit(&pressureSensorPS4_gst); PressureSensorInit(&pressureSensorPS4_gst);
GrundfosPmpInit(&grundfosPMP_gst);
} }
@ -168,8 +166,6 @@ 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();
@ -219,12 +215,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 */
GrundfosPmpFeedback(&grundfosPMP_gst); pmpSpeed_u32 = GrundfosPmpFeedback(PMP_ADC_CHANNEL);
if (grundfosPMP_gst.rawQ_f32 > PU_PMP_RATED_SPEED) if (pmpSpeed_u32 > PU_PMP_RATED_SPEED)
{ {
GrundfosPmpEnable(PU_PMP_DISABLE); GrundfosPmpEnable(PU_PMP_DISABLE);
} }
@ -272,25 +268,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, 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); NmsCanPutObj_f32(OD_ENTRY_PU_FLOWMETER_DATA_OUT_INDEX, OD_ENTRY_PU_FLOWMETER1_DATA_OUT_SUB_INDEX, rawQ_f32);
} }
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, 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); NmsCanPutObj_f32(OD_ENTRY_PU_PRESSURE_DATA_OUT_INDEX, OD_ENTRY_PU_PRESSURE1_DATA_OUT_SUB_INDEX, rawT_f32);
} }
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, 3.0f); NmsCanPutObj_u32(OD_ENTRY_PU_GRUNDFOS_PUMP_CONTROL_INDEX, OD_ENTRY_PU_GRUNDFOS_PUMP_FEEDBACK_SUB_INDEX, pmpSpeed_u32);
} }

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 15u /* To be 20, one node not in working state currently */ #define SDL_MIN_OPERATIONAL_NODES 18u /* To be 20, one node not in working state currently */
/****************************************************************************** /******************************************************************************
* Type Declarations * Type Declarations
******************************************************************************/ ******************************************************************************/

382
gui.py
View File

@ -1,167 +1,83 @@
import sys import sys
import time import time
import struct
import canopen import canopen
import can from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout, QHBoxLayout, QLabel, QGroupBox, QFormLayout
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-Endurance-TestBench\EnduranceTestBench\coappl\enduranceTestBench.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 = {}
class SDOSetpointListener(Listener): def PUBoardNode():
def __init__(self, parent): global PuBoardData
self.parent = parent
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]
if index == 0x6000 and subindex == 0x01 and cmd == 0x20:
setpoint_val = msg.data[4]
self.parent.motorBoardTpdoData[node_id]['setpoint'] = setpoint_val
class NodeTableWindow(QWidget):
def __init__(self, nodes):
super().__init__()
self.setWindowTitle("Endurance Test Bench")
self.nodes = 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 = 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()
table_heading = QLabel("Valve Details")
table_heading.setAlignment(Qt.AlignLeft)
table_layout.addWidget(table_heading)
self.table = QTableWidget(0, 4)
self.table.setHorizontalHeaderLabels(["Node ID", "Setpoint", "Feedback", "Status"])
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)
self.details_widget = QWidget(self)
details_layout = QVBoxLayout(self.details_widget)
pressure_group = QGroupBox("Pressure Sensor Details", self)
pressure_layout = QFormLayout(pressure_group)
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)
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)
height = int(screen_geometry.height() * 0.7)
x = int((screen_geometry.width() - width) / 2)
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: try:
self.network = canopen.Network() PuBoardData = canopen.RemoteNode(0x1, puBoardEdsPath)
self.network.connect(channel='PCAN_USBBUS1', bustype='pcan', bitrate=250000) network.add_node(PuBoardData)
self.nodes = {} time.sleep(0.1)
self.motorBoardTpdoData = {}
self.PuBoardData = {} # Add to node list early for visibility
self.init_motor_nodes() nodes[1] = PuBoardData
self.init_pu_node()
self.listener = SDOSetpointListener(self) # Now check if extra node is OPERATIONAL
self.notifier = can.Notifier(self.network.bus, [self.listener]) 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
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: except Exception as e:
QMessageBox.critical(self, "Connection Error", f"Failed to connect:\n{e}") print(f"Extra Node {1} error: {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): def motorNode():
for node_id in range(5, 27): for node_id in range(5, 27):
try: try:
node = canopen.RemoteNode(node_id, motorBoardEdsPath) node = canopen.RemoteNode(node_id, motorBoardEdsPath)
self.network.add_node(node) network.add_node(node)
time.sleep(0.1) time.sleep(0.1)
self.nodes[node_id] = node
self.motorBoardTpdoData[node_id] = {'setpoint': '-', 'feedback': '-'} # Add to node list early so it's visible in GUI
nodes[node_id] = node
motorBoardTpdoData[node_id] = {'setpoint': '-', 'feedback': '-'}
# Now check if node is OPERATIONAL
if node.nmt.state == 'OPERATIONAL': if node.nmt.state == 'OPERATIONAL':
node.tpdo.read() node.tpdo.read()
node.tpdo[1].enabled = True node.tpdo[1].enabled = True
@ -170,94 +86,156 @@ class NodeTableWindow(QWidget):
def cb(map_obj): def cb(map_obj):
for var in map_obj: for var in map_obj:
if var.index == 0x6002: if var.index == 0x6002:
self.motorBoardTpdoData[nid]['feedback'] = var.raw motorBoardTpdoData[nid]['setpoint'] = var.raw
elif var.index == 0x6004:
motorBoardTpdoData[nid]['feedback'] = var.raw
return cb return cb
node.tpdo[1].add_callback(make_callback(node_id)) node.tpdo[1].add_callback(make_callback(node_id))
else:
pass
except Exception as e: except Exception as e:
print(f"Motor node {node_id} error: {e}") print(f"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': # --------------------------- PyQt GUI -------------------------------
node.tpdo.read() class NodeTableWindow(QWidget):
def __init__(self, nodes):
super().__init__()
self.setWindowTitle("Valve Node Status")
self.nodes = nodes
self.num_nodes = len(nodes)
self.init_ui()
self.start_timer()
# Enable all relevant TPDOs def init_ui(self):
for tpdo_id in range(4, 9): # TPDO4 to TPDO8 layout = QHBoxLayout(self)
if tpdo_id in node.tpdo:
node.tpdo[tpdo_id].enabled = True
def make_callback(): # Left side - Table
def cb(map_obj): self.table_widget = QWidget(self)
for var in map_obj: table_layout = QVBoxLayout(self.table_widget)
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()) # Heading for the table
except Exception as e: table_heading = QLabel("Valve Details", self)
print(f"PU node error: {e}") table_layout.addWidget(table_heading)
# Table
self.table = QTableWidget(self.num_nodes, 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)
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)
details_layout.addWidget(pressure_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
screen = QApplication.primaryScreen()
screen_geometry = screen.availableGeometry()
width = int(screen_geometry.width() * 0.4)
height = int(screen_geometry.height() * 0.7)
x = int((screen_geometry.width() - width) / 2)
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 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)
if node_item: node_item.setBackground(QColor("green") if status == "OPERATIONAL" else QColor("red"))
node_item.setBackground(
QColor("green") if status == "OPERATIONAL" else # Setpoint
QColor("yellow") if status == "PRE-OPERATIONAL" else set_val = str(motorBoardTpdoData.get(node_id, {}).get('setpoint', '-'))
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():
app = QApplication(sys.argv) # Initialize all the nodes
window = NodeTableWindow({}) motorNode()
window.show() PUBoardNode()
sys.exit(app.exec_())
# Start the GUI
app = QApplication(sys.argv)
window = NodeTableWindow(nodes)
window.show()
sys.exit(app.exec_())
if __name__ == "__main__": if __name__ == "__main__":
main() main()