It would be nice to have a list of attributes that are available through the MSG block. Does anyone know of such a list?
Sorry, missed this reply and just saw it in my email.
There is no list. While the values may seem a bit arbitrary they actually represent how the code in the PLC is structured internally.
The service code is what function in the object you are calling. The class code is a unique ID of what object type you are running the function in. The instance is the ID of a specific instance of that class, or an instance of 0 is the static instance of the class. And the attribute is the ID of a field/variable in the class.
Basically the message instruction provided by the PLC is a way of performing a function on a variable in an object in memory. There are far more advanced CIP messages that can operate of the PLC different from what the MSG instruction provides, but many things can be accomplished using the MSG instruction.
There is no official list of classes, or which services exist for each class, of what instances exist for each class by default, or even what attributes exist for each class. But there are technotes on Rockwell's support site that give insight on what exist, and if you spend many hours you can discover a lot of undocumented objects, what services they support, and what attributes exist in them. Unfortunately this comes at the risk of temporary or permanently damaging the hardware. I have never got in a situation where I could not recover a module, but I have been close!
Any object not documented by Rockwell is not supported by them and is subject to change in future releases, thus it is unwise to use them in logic. Internally though the controller and studio 5000 are using them.
There are a couple of us of the forums that can assist with undocumented messages. Mostly JeremyM and myself. I have hundreds of pages of notes on perhaps a hundred different undocumented cip classes across over a dozen different Rockwell products. Unfortunately due to the complexity of CIP, a simple list would not be sufficient to document the available functionality.