「読み取り専用」の Modbus レジスタへの書き込みを強制する方法はありますか? レジスタを「読み取り専用」として定義することは十分に安全ですか、それともバイパスできますか??
答えてくれてありがとう!
Modbus で「読み取り専用」アナログ変数を定義する正しい方法は、それを入力レジスタとしてマップすることです。Modbus には、入力レジスタに書き込む関数コードが定義されていません。
歴史的な理由から、一部のベンダーはすべての変数を保持レジスタとしてマップします。これは理論的には読み取り/書き込みが可能です。つまり、複数レジスタ書き込み機能があります。読み取り専用変数を保持レジスタとしてマップするときはいつでも、書き込み関数が失敗したことをアサートする必要があります。ただし、保持レジスタは読み取り/書き込みでなければならないため、これに対する標準の例外コードはありません。これは、Modbus の特異性の 1 つにすぎません。
質問に戻りますが、変数を入力レジスタとしてマップすると、プロトコルがマスターによる書き込みを許可しないことを確認できます。相互運用性の問題のためにそれを保持レジスタとしてマップする場合、プロトコルはマスターが書き込み機能を使用してその値を変更することを許可し、デバイス実装でブロックするのはあなた次第です。