機能
ファンクションコード Write Multiple Registers (コード16)を用いてholding register領域へ複数レジスタ分書き込みます。
書式
ret = modbus_write_registers( ctx , addr , nb , src )
引数
ctx [ C: modbus_t * ] [ Python: ctypes.c_int ]
libmodbus構造体へのポインタを指定下さい。
addr [ C: int ] [ Python: ctypes.c_int ]
writeする先頭アドレスを指定下さい。
nb [ C: int ] [ Python: ctypes.c_int ]
書き込みレジスタ数を指定下さい。
data [ C: uint16_t * ] [ Python: ctypes.POINTER(ctypes.c_uint16) ]
書き込むデータを格納した配列の先頭アドレスを指定下さい。
戻り値
ret [ C: int ] [ Python: ctypes.c_int ]
成功時には書き込みに成功したレジスタ点数が入ります。
失敗時には-1が入り、以下の errno が設定されます。
定義 |
意味 |
EMBMDATA |
要求データ数が多すぎます。 |
説明
ファンクションコード Write Multiple Registers (コード16)を用いてholding register領域へ複数レジスタ分書き込みます。
使用例
アドレス0のレジスタから8ワード分に0x55を書き込みます。
C |
int ret; modbus_t *ctx; Uint16_t status[8]; for( i = 0 ; i < 8 ; i++ ){ data[i] = 0x55; } ret = modbus_write_registers( ctx, 0, 8 , data );
|
Python |
ret = ctypes.c_int ctx = ctypes.POINTER(modbus_t) uint16_buff_type = ctypes.c_uint16 * 8 data = uint16_buff_type() for i in range(8): data[i] = 0x55 ret = modbus.modbus_write_registers(ctx, 0, 8, data)
|