thanks all for inputs. I read at a link
For 'single bit' you have DI, and DOs.
And, when using modbus, DIs are 'read_only' whereas DOs are the ones that can be 'read and write'. Similarly, input registers are 'read_only' and holding registers can be 'read and write'.
It was the reason to write to DOs using pymodbus library function.
Further, modbus addresses in FANUC are one based, but in the library that we use pymodbus they are zero based.
I noticed though, while
$SNPX_ASG.$ADDRESS = 91
$SNPX_ASG.$VAR_NAME = DO[5] (start point is DO[5], at address 90)
I found out that in fact when I issued the following
DEVICE_ID = 1
ADDRESS_START = 90 # actual corresponds to DO[91] on Roboguide
coil_response = client.write_coil(address=ADDRESS_START, value=True, unit=DEVICE_ID)
I was able to TURN ON DO[91]. It should have been DO[5]?
For current purpose, that is ok because I can use DO[91].
thanks,
Zahid