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

Troubleshooting

Page 353 highlights

Section 8. Operation Syntax MoveBytes(Dest, DestOffset, Source, SourceOffset, NumBytes) 8.6.2.3.3 Addressing (ModbusAddr) Modbus devices have a unique address in each network. Addresses range from 1 to 247. Address 0 is reserved for universal broadcasts. When using the NL100, use the same number as the Modbus and PakBus® address. 8.6.2.3.4 Supported Function Codes (Function) Modbus protocol has many function codes. CR800 commands support the following. Table 86. Supported Modbus Function Codes Code Name Description 01 Read coil/port status Reads the on/off status of discrete output(s) in the ModBusSlave 02 Read input status Reads the on/off status of discrete input(s) in the ModBusSlave 03 Read holding registers Reads the binary contents of holding register(s) in the ModBusSlave 04 Read input registers Reads the binary contents of input register(s) in the ModBusSlave 05 Force single coil/port Forces a single coil/port in the ModBusSlave to either on or off 06 Write single register Writes a value into a holding register in the ModBusSlave 15 Force multiple coils/ports Forces multiple coils/ports in the ModBusSlave to either on or off 16 Write multiple registers Writes values into a series of holding registers in the ModBusSlave 8.6.2.3.5 Reading Inverse-Format Registers Some Modbus devices require reverse byte order words (CDAB vs. ABCD). This can be true for either floating point, or integer formats. Since a slave CR800 uses the ABCD format, either the master has to make an adjustment, which is sometimes possible, or the CR800 needs to output reverse-byte order words. To reverse the byte order in the CR800, use the MoveBytes() instruction as shown in the sample code below. for i = 1 to k MoveBytes(InverseFloat(i),2,Float(i),0,2) MoveBytes(InverseFloat(i),0,Float(i),2,2) next In the example above, InverseFloat(i) is the array holding the inverse-byte ordered word (CDAB). Array Float(i) holds the obverse-byte ordered word (ABCD). 8.6.2.4 Troubleshooting Test Modbus functions on the CR800 with third party Modbus software. Further information is available at the following links: • www.simplyModbus.ca/FAQ.htm • www.Modbus.org/tech.php • www.lammertbies.nl/comm/info/modbus.html 353

  • 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 8.
Operation
353
Syntax
MoveBytes(Dest, DestOffset, Source, SourceOffset, NumBytes)
8.6.2.3.3 Addressing (ModbusAddr)
Modbus devices have a unique address in each network. Addresses range from
1
to
247
. Address
0
is reserved for universal broadcasts. When using the NL100,
use the same number as the Modbus and PakBus® address.
8.6.2.3.4 Supported Function Codes (Function)
Modbus protocol has many function codes. CR800 commands support the
following.
Table 86.
Supported Modbus Function Codes
Code
Name
Description
01
Read coil/port status
Reads the on/off status of discrete output(s) in the ModBusSlave
02
Read input status
Reads the on/off status of discrete input(s) in the ModBusSlave
03
Read holding registers
Reads the binary contents of holding register(s) in the ModBusSlave
04
Read input registers
Reads the binary contents of input register(s) in the ModBusSlave
05
Force single coil/port
Forces a single coil/port in the ModBusSlave to either on or off
06
Write single register
Writes a value into a holding register in the ModBusSlave
15
Force multiple coils/ports
Forces multiple coils/ports in the ModBusSlave to either on or off
16
Write multiple registers
Writes values into a series of holding registers in the ModBusSlave
8.6.2.3.5 Reading Inverse-Format Registers
Some Modbus devices require reverse byte order words (CDAB vs. ABCD).
This
can be true for either floating point, or integer formats.
Since a slave CR800 uses
the ABCD format, either the master has to make an adjustment, which is
sometimes possible, or the CR800 needs to output reverse-byte order words.
To
reverse the byte order in the CR800, use the
MoveBytes()
instruction as shown in
the sample code below.
for
i = 1
to
k
MoveBytes
(InverseFloat(i),2,Float(i),0,2)
MoveBytes
(InverseFloat(i),0,Float(i),2,2)
next
In the example above, InverseFloat(i) is the array holding the inverse-byte ordered
word (CDAB).
Array Float(i) holds the obverse-byte ordered word (ABCD).
8.6.2.4 Troubleshooting
Test Modbus functions on the CR800 with third party Modbus software. Further
information is available at the following links:
www.simplyModbus.ca/FAQ.htm
www.Modbus.org/tech.php
www.lammertbies.nl/comm/info/modbus.html