Campbell Scientific CR1000KD CR800 and CR850 Measurement and Control Systems - Page 235

SubScan, NextSubScan, Status, NextScan, EndScan, EndSubScan

Page 235 highlights

Section 7. Installation Many variations of this 200-Hz measurement program are possible to achieve other burst rates and duty cycles. The SubScan() / NextSubScan instruction pair introduce added complexities. The SubScan() / NextSubScan Details, introduces some of these. Caution dictates that a specific configuration be thoroughly tested before deployment. Generally, faster rates require measurement of fewer channels. When testing a program, monitoring the SkippedScan, BuffDepth, and MaxBuffDepth registers in the CR800 Status table may give insight into the use of buffer resources. Bear in mind that when the number of Scan() / NextScan buffers is exceeded, a skipped scan, and so a missed-data event, will occur. 7.8.12.2.1 SubScan() / NextSubScan Details • The number of Counts (loops) of a sub-scan is limited to 65535 • Sub-scans exist only within the Scan() / NextScan structure with the Scan() interval set large enough to allow a sub-scan to run to completion of its counts. • Sub-scan interval (i) multiplied by the number of sub-scans (n) equals a measure time fraction (MT1), a part of "measure time", which measure time is represented in the MeasureTime register in table Status Table Fields and Descriptions (p. 506). The EndScan instruction occupies an additional 100 µs of measure time, so the interval of the main scan has to be ≥ 100 µs plus measure time outside the SubScan() / EndSubScan construct, plus the time sub-scans consume. • Because the task sequencer controls sub-scans, it is not finished until all subscans and any following tasks are complete. Therefore, processing does not start until sub-scans are complete and the task sequencer has set the delay for the start of the next main scan. So, one Scan() / NextScan buffer holds all the raw measurements inside (and outside) the sub-scan; that is, all the measurements made in a single main scan. For example, one execution of the following code sequence stores 30000 measurements in one buffer: Scan(40,Sec,3,0) 'Scan(interval, units, buffers, count) SubScan(2,mSec,10000) VoltSe(Measurement(),3,mV5000,1,False,150,250,1.0,0) CallTable All4 NextSubScan NextScan Note measure time in the previous code is 300 µs + 19 ms, so a Scan() interval less than 20 ms will flag a compile error. • Sub scans have the advantage of going at a rate faster than 100 Hz. But measurements that can run at an integral 100 Hz have an advantage as follows: since all sub-scans have to complete before the task sequencer can set the delay for the main scan, processing is delayed until this point (20 ms in the above example). So more memory is required for the raw buffer space for the sub-scan mode to run at the same speed as the non-sub-scan mode, and there will be more delay before all the processing is complete for the burst. The pipeline (the raw buffer) has to fill further before processing can start. 235

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • 489
  • 490
  • 491
  • 492
  • 493
  • 494
  • 495
  • 496
  • 497
  • 498
  • 499
  • 500
  • 501
  • 502
  • 503
  • 504
  • 505
  • 506
  • 507
  • 508
  • 509
  • 510
  • 511
  • 512
  • 513
  • 514
  • 515
  • 516
  • 517
  • 518
  • 519
  • 520
  • 521
  • 522
  • 523
  • 524
  • 525
  • 526
  • 527
  • 528
  • 529
  • 530
  • 531
  • 532
  • 533
  • 534
  • 535
  • 536
  • 537
  • 538
  • 539
  • 540
  • 541
  • 542
  • 543
  • 544
  • 545
  • 546
  • 547
  • 548
  • 549
  • 550
  • 551
  • 552
  • 553
  • 554
  • 555
  • 556
  • 557
  • 558
  • 559
  • 560
  • 561
  • 562
  • 563
  • 564
  • 565
  • 566

Section 7.
Installation
235
Many variations of this 200-Hz measurement program are possible to achieve
other burst rates and duty cycles.
The
SubScan()
/
NextSubScan
instruction pair introduce added complexities.
The
SubScan() / NextSubScan Details
,
introduces some of these.
Caution dictates
that a specific configuration be thoroughly tested before deployment.
Generally,
faster rates require measurement of fewer channels.
When testing a program,
monitoring the
SkippedScan
,
BuffDepth
, and
MaxBuffDepth
registers in the CR800
Status
table may give insight into the use of buffer resources.
Bear in mind that
when the number of
Scan()
/
NextScan
buffers is exceeded, a skipped scan, and
so a missed-data event, will occur.
7.8.12.2.1 SubScan() / NextSubScan Details
The number of
Counts
(loops) of a sub-scan is limited to 65535
Sub-scans exist only within the
Scan()
/
NextScan
structure with the
Scan()
interval set large enough to allow a sub-scan to run to completion of its
counts.
Sub-scan interval (i) multiplied by the number of sub-scans (n) equals a
measure time fraction (MT
1
), a part of "measure time", which measure time is
represented in the
MeasureTime
register in table
Status Table Fields and
Descriptions
(p. 506).
The
EndScan
instruction occupies an additional 100 μs
of measure time, so the interval of the main scan has to be
100 μs plus
measure time outside the
SubScan()
/
EndSubScan
construct, plus the time
sub-scans consume.
Because the task sequencer controls sub-scans, it is not finished until all sub-
scans and any following tasks are complete.
Therefore, processing does not
start until sub-scans are complete and the task sequencer has set the delay for
the start of the next main scan.
So, one
Scan()
/
NextScan
buffer
holds all
the raw measurements inside (and outside) the sub-scan; that is, all the
measurements made in a single main scan.
For example, one execution of the
following code sequence stores 30000 measurements in one buffer:
Scan
(40,Sec,3,0)
'Scan(interval, units, buffers, count)
SubScan
(2,mSec,10000)
VoltSe
(Measurement(),3,mV5000,1,False,150,250,1.0,0)
CallTable
All4
NextSubScan
NextScan
Note
measure time in the previous code is 300 μs + 19 ms, so a
Scan()
interval
less than 20 ms will flag a compile error.
Sub scans have the advantage of going at a rate faster than 100 Hz.
But
measurements that can run at an integral 100 Hz have an advantage as
follows: since all sub-scans have to complete before the task sequencer can
set the delay for the main scan, processing is delayed until this point (20 ms
in the above example).
So more memory is required for the raw buffer space
for the sub-scan mode to run at the same speed as the non-sub-scan mode,
and there will be more delay before all the processing is complete for the
burst.
The pipeline (the raw buffer) has to fill further before processing can
start.