|
For the waveform record NELM is the maximum number of elements and cannot be changed a run time. However, NORD is the actual number of elements currently in the array, and it can be changed at run time.
Please explain what you are trying to do. I suspect that you should be able to use NORD.
Mark
Sent from my iPhone
Hello everyone,
I used waveform to read 8 channels data, the waveform record is:
record(waveform, "$(P)Countxxyy")
{
field(DTYP, "stream")
field(INP, "@ct0801f.proto Counters_in $(PORT)")
field(NELM, "8")
field(FTVL, "LONG")
field(SCAN, "$(SCAN)")
}
The user hope that the NELM is a variable, so I used $(P)N to controller the readout numbers:
record(waveform, "$(P)Counters")
{
field(DTYP, "stream")
field(INP, "@ct0801f.proto Counters_in $(PORT)")
field(NELM, "$(P)N")
field(FTVL, "LONG")
field(SCAN, "$(SCAN)")
}
When $(P)N changed, the $(P)Countxxyy keep an initial value. I think that the NELM can not be modified:
Then I found the modify property about NELM in subArray is ‘yes’,
So I changed the record like this:
record(waveform, "$(P)Counters")
{
field(DTYP, "stream")
field(INP, "@ct0801f.proto Counters_in $(PORT)")
field(NELM, "8")
field(FTVL, "LONG")
field(SCAN, "$(SCAN)")
}
record(subArray,"$(P)Countersxy")
{
field (DESC, "Read counterx~countery")
field (INP, "$(P)Counters")
field (MALM, "8")
field (NELM, "$(P)N")
field (INDX, "0")
field (SCAN, "$(SCAN)")
}
When
the $(P)N changed tobe 4, $(P)Countersxy.NELM doesn't change. It is still the inital value 1, and $(P)Countersxy read only 1 channel data.
Can we set the NELM tobe a variable?
How could we read changing channels from the above 8 channel datas?
I am confused and ask for help. Thank you so much.
With my best reguards,
Kevin
|