melsec_mc
三菱電機 PLC と MC プロトコル(Ethernet)用の軽量な Rust ライブラリです。
提供内容(概要)
- 非同期 TCP トランスポート(Tokio ベース)と簡易クライアント
- エラー型とレスポンス/リクエストの最低限の構造
- 生のフレーム送受信を行うサンプルとユーティリティ
注: 高レベルなバッチ読み書き API は一部実装済みですが、今後拡張予定です。
目次
melsec_mc
軽量な Rust ライブラリで、三菱電機 PLC の MC プロトコル(Ethernet / MC4E に相当)への送受信と簡易クライアントを提供します。
バージョン: 0.4.0
主な特徴
- Tokio ベースの非同期トランスポート
- 生の MC フレーム送受信とパーサ
- 高レベルのワンショットヘルパーと再利用可能な
McClient - 型付き読み書きサポート(
FromWords/ToWords) error_codesレジストリのマージ登録とその他レジストリ改善
重要な変更点(このリリース)
- 公開 API の堅牢化(panic/unwrap/expect/eprintln! の削除)。エラーは
Result<..., MelsecError>で返却します。 McResponse::try_newに移行し、呼び出し側を更新しました。FromWords/ToWordsとMcClient::read_words_as/write_words_asを追加しました(countは要素数として扱います)。
目次
- クイックスタート
- インストール
- 使い方(簡単な例)
- 高度な利用(Typed API、McClient)
- リリースと公開
- 貢献方法、ライセンス
クイックスタート
- クローンとビルド:
git clone https://github.com/tyaro/melsec_com.git
cd melsec_com
cargo build
- サンプル実行(
examplesを参照して PLC アドレスを設定してください):
cargo run --example simple
インストール
crates.io に公開済みであれば Cargo.toml に追加できます(例):
[]
= "0.4.0"
開発中に git から参照する場合:
[]
= { = "https://github.com/tyaro/melsec_com", = "main" }
使い方(簡単な例)
非同期 Tokio 環境での利用例:
use ;
async
型付き読み書き(Typed API)
このリリースでは FromWords / ToWords トレイトにより、f32 や u32、[bool;16] のような複数ワードにまたがる型を直接読み書きできます。例:
// 読み取り(要素数 = 2 の f32 を 2 要素取得すると内部的に 4 ワード要求します)
let floats: = client..await?;
// 書き込み
client.write_words_as.await?;
型付き読み出しは要素単位で解析を行い、解析に失敗した要素は警告ログを出してスキップし、成功した要素は返却されます(部分的な受信に対して寛容に動作します)。
リリースと公開
- このリポジトリは GitHub Release を利用しています(https://github.com/tyaro/melsec_com/releases)。
- crates.io に公開する場合は
cargo publishを使用してください(公開には 2FA とクレデンシャルが必要です)。
パッケージ作成の検証:
cargo publish --dry-run
貢献と連絡
- プルリクエスト歓迎です。大きな API 変更は事前に Issue で相談してください。
- バグ報告や機能要望は GitHub Issue を利用してください。
ライセンス
MIT
日本語版 README(README.md)を更新しました。英語版は README.en.md を参照してください。