In my case, the integer value I read from the modbus registers determines a status or an error message. The same datapoint may indicate battery overvoltage, undervoltage, generator start, etc. These are best mapped to text messages or, in graphical form, discrete images. Consequently, a proportional image mapping based on a min-max range is not feasible; instead, I must map each discrete integer value to an image.
If there are 100 different integer values, I don't need to map them to 100 different images; I could map them instead to a few different images that indicate the category, such as battery charging, generator failed, All OK, overvoltage, etc.
I think the fastest way to enable this function is to make the multistate graphic object display display integer datapoints, rather than restricting its pick-list only to multistate points. A better long term solution is to edit the data source to indicate that the integer value read is an enumerated datatype (multistate) rather than a count or amount.
Currently, the best work around seems to be to create a meta data point to typecast the integer to a multistate at each context update, but that adds an unnecessary layer of indirection, and is tedious if there are many such datapoints.