ISA's Modbus CAP question fails with a grade of F
The ISA (formerly Instrument Society of America, more recently the International Society of Automation) web site has a sample CAP (Certified Automation Professional) program study guide question that happens to be about Modbus. It's an awful question with the wrong answer. It deserves a grade of F.
The text below between the dashed lines is copied from ISA's site for purposes of fair-use discussion. The original is here:
https://www.isa.org/standards-and-p.../2007/november/certification-review-nov-2007/
or here:
http://tinyurl.com/kdftqdq
-----------------------------------------------------------------------------------
ISA Certified Automation Professional (CAP) program
Certified Automation Professionals (CAPs) are responsible for the direction, design, and deployment of systems and equipment for manufacturing and control systems.
The following question comes from the CAP study guide, Performance Domain III, System Design: Design, specify, and procure the hardware/software used in the system
CAP question
Using Modbus, what is the MAXIMUM level of precision available?
A. 8-bits
B. 16-bits
C. 24-bits
D. 32-bits
CAP answer
The correct answer is B, 16-bits.
Common Modbus uses two 8-bit bytes for each data register.
2 x 8 bits = 16 bits
To achieve more precision special programming or a specialized version of Modbus is necessary.
Eight bits is less precise than 16-bits; 24-bits and 32-bits require uncommon means to achieve.
Reference: Bella Liptak, Instrument Engineers Handbook, Volume 3 (3rd Edition), Process Software and Digital Networks; ISA, 2002
Modbus transmits over serial lines between devices. The simplest setup would be a single serial cable connecting the serial ports on two devices, a Master and a Slave.
The data transmits as series of ones and zeroes (bits). Each bit is a voltage. Zeroes are positive voltages, and ones are negative voltages. The bits transmit very quickly. A typical transmission speed is 9600 baud (bits per second).
Reference: http://www.simplymodbus.ca
--------------------------------------------------------------------------------------------
My comments:
I couldn't find what I consider the correct answer to the stated question,
e) it depends on how many registers constitute a data word
I suspect the question intends to ask,
What is the standard Modbus register size? 8, 16, 24 or 32 bits
but messes the question up by
- assuming Modbus communication is somehow limited to a single register
- mixing in the concept of precision, which is outside the domain of Modbus given its OSI tasks.
Without defining a specific data word format, a determination of Modbus-related precision is moot.
My commentary on their answer's explanation:
>The correct answer is B, 16-bits.
Wrong, the correct answer is E) it depends, or given the ubiquitous use of 32 bit floating point or 32 bit long integer data, D) 32 bits
>Common Modbus uses two 8-bit bytes for each data register.
>2 x 8 bits = 16 bits
Agreed.
>To achieve more precision
To achieve more precision, more bits in a data word is required. More precision through more bits is routinely accomplished by using more than one register.
Common examples of greater precision are
- 32 bit IEEE 754 floating point or
- 32 bit long integer registers or
- Enron/Daniels 64 bit floating point used in flow computers.
> special programming
In Modbus, there is nothing 'special' about reading or writing multiple registers.
The open, published Modbus Standard defines function codes for multiple register read and write operations and has done so for decades. Specifically, Modbus Function codes 03 and 04 read multiple registers; Function code 10h/16decimal writes multiple registers.
> or a specialized version of Modus is necessary.
If the reference to a 'specialized' version of Modbus refers to Modbus Plus (a licensed product whose primary distinction is multiple masters enabled through token sharing), Modbus Plus claims no greater or lesser precision than open Modbus, so its mention does not apply to the argument.
>Eight bits is less precise than 16-bits;
Agreed.
>24-bits and 32-bits require uncommon means to achieve.
No. Well, admittedly, 24 bits might require some packing and unpacking and bit-banging, but the bit banging is done by the firmware/software app, NOT BY MODBUS. 32 bits is just double register chocolate flavor to a single register’s vanilla flavor. There is nothing uncommon about 32 bit data words being handled by Modbus. Just pick your flavor.
How can 'Uncommon means' apply to the use of standard, published Function Codes for multiple register read/writes, which probably constitute 50% of the Modbus discussion on this forum? If Modbus is crippled by exclusion of Function codes 03/04/10h/16decimal, then the assertion has merit. But no such stipulation was inferred or made.
By asking what the maximum precision of Modbus is, the stated question betrays a lack of understanding of where Modbus fits in communication's OSI model (not good for the institution charged with certifying the industry's professionals).
Modbus is at the lower OSI level. Modbus does the heavy lifting, it carries data bits from point A to point B; Modbus does not define the interpretation of what those data bits mean. Modbus lives downstairs in the OSI servants' quarters.
The interpretation task occurs at a higher OSI level. It's up to the upstairs OSI gentry, the firmware/software application, to interpret what constitutes a data word (how many bits, how many registers, hence the data word's precision), and finally, what exactly the data bits in the data word mean.
A colleague says Modbus is a Mule with Rules; it carries data and like its equine counterpart, doesn't care about the load it carries, it just bears the burden. It doesn't know or care whether the data word is part of a register (a single bit or packed bits), a single register or multiple registers. It doesn't need to. It just delivers the bits.
> Reference: Bella Liptak
I believe he spells it Bela Liptak
I contend that Modbus is fully capable of 8, 16, 24 or 32 bit precision, depending on the firmware/software app being used, so the correct answer to the stated question is actually D) 32 bits.
I'm glad my clients don't care about CAP certification, because I'd flunk given that the part I know best, I got wrong.
The ISA (formerly Instrument Society of America, more recently the International Society of Automation) web site has a sample CAP (Certified Automation Professional) program study guide question that happens to be about Modbus. It's an awful question with the wrong answer. It deserves a grade of F.
The text below between the dashed lines is copied from ISA's site for purposes of fair-use discussion. The original is here:
https://www.isa.org/standards-and-p.../2007/november/certification-review-nov-2007/
or here:
http://tinyurl.com/kdftqdq
-----------------------------------------------------------------------------------
ISA Certified Automation Professional (CAP) program
Certified Automation Professionals (CAPs) are responsible for the direction, design, and deployment of systems and equipment for manufacturing and control systems.
The following question comes from the CAP study guide, Performance Domain III, System Design: Design, specify, and procure the hardware/software used in the system
CAP question
Using Modbus, what is the MAXIMUM level of precision available?
A. 8-bits
B. 16-bits
C. 24-bits
D. 32-bits
CAP answer
The correct answer is B, 16-bits.
Common Modbus uses two 8-bit bytes for each data register.
2 x 8 bits = 16 bits
To achieve more precision special programming or a specialized version of Modbus is necessary.
Eight bits is less precise than 16-bits; 24-bits and 32-bits require uncommon means to achieve.
Reference: Bella Liptak, Instrument Engineers Handbook, Volume 3 (3rd Edition), Process Software and Digital Networks; ISA, 2002
Modbus transmits over serial lines between devices. The simplest setup would be a single serial cable connecting the serial ports on two devices, a Master and a Slave.
The data transmits as series of ones and zeroes (bits). Each bit is a voltage. Zeroes are positive voltages, and ones are negative voltages. The bits transmit very quickly. A typical transmission speed is 9600 baud (bits per second).
Reference: http://www.simplymodbus.ca
--------------------------------------------------------------------------------------------
My comments:
I couldn't find what I consider the correct answer to the stated question,
e) it depends on how many registers constitute a data word
I suspect the question intends to ask,
What is the standard Modbus register size? 8, 16, 24 or 32 bits
but messes the question up by
- assuming Modbus communication is somehow limited to a single register
- mixing in the concept of precision, which is outside the domain of Modbus given its OSI tasks.
Without defining a specific data word format, a determination of Modbus-related precision is moot.
My commentary on their answer's explanation:
>The correct answer is B, 16-bits.
Wrong, the correct answer is E) it depends, or given the ubiquitous use of 32 bit floating point or 32 bit long integer data, D) 32 bits
>Common Modbus uses two 8-bit bytes for each data register.
>2 x 8 bits = 16 bits
Agreed.
>To achieve more precision
To achieve more precision, more bits in a data word is required. More precision through more bits is routinely accomplished by using more than one register.
Common examples of greater precision are
- 32 bit IEEE 754 floating point or
- 32 bit long integer registers or
- Enron/Daniels 64 bit floating point used in flow computers.
> special programming
In Modbus, there is nothing 'special' about reading or writing multiple registers.
The open, published Modbus Standard defines function codes for multiple register read and write operations and has done so for decades. Specifically, Modbus Function codes 03 and 04 read multiple registers; Function code 10h/16decimal writes multiple registers.
> or a specialized version of Modus is necessary.
If the reference to a 'specialized' version of Modbus refers to Modbus Plus (a licensed product whose primary distinction is multiple masters enabled through token sharing), Modbus Plus claims no greater or lesser precision than open Modbus, so its mention does not apply to the argument.
>Eight bits is less precise than 16-bits;
Agreed.
>24-bits and 32-bits require uncommon means to achieve.
No. Well, admittedly, 24 bits might require some packing and unpacking and bit-banging, but the bit banging is done by the firmware/software app, NOT BY MODBUS. 32 bits is just double register chocolate flavor to a single register’s vanilla flavor. There is nothing uncommon about 32 bit data words being handled by Modbus. Just pick your flavor.
How can 'Uncommon means' apply to the use of standard, published Function Codes for multiple register read/writes, which probably constitute 50% of the Modbus discussion on this forum? If Modbus is crippled by exclusion of Function codes 03/04/10h/16decimal, then the assertion has merit. But no such stipulation was inferred or made.
By asking what the maximum precision of Modbus is, the stated question betrays a lack of understanding of where Modbus fits in communication's OSI model (not good for the institution charged with certifying the industry's professionals).
Modbus is at the lower OSI level. Modbus does the heavy lifting, it carries data bits from point A to point B; Modbus does not define the interpretation of what those data bits mean. Modbus lives downstairs in the OSI servants' quarters.
The interpretation task occurs at a higher OSI level. It's up to the upstairs OSI gentry, the firmware/software application, to interpret what constitutes a data word (how many bits, how many registers, hence the data word's precision), and finally, what exactly the data bits in the data word mean.
A colleague says Modbus is a Mule with Rules; it carries data and like its equine counterpart, doesn't care about the load it carries, it just bears the burden. It doesn't know or care whether the data word is part of a register (a single bit or packed bits), a single register or multiple registers. It doesn't need to. It just delivers the bits.
> Reference: Bella Liptak
I believe he spells it Bela Liptak
I contend that Modbus is fully capable of 8, 16, 24 or 32 bit precision, depending on the firmware/software app being used, so the correct answer to the stated question is actually D) 32 bits.
I'm glad my clients don't care about CAP certification, because I'd flunk given that the part I know best, I got wrong.