9个不稳定版本 (3个破坏性版本)
0.4.3 | 2022年11月17日 |
---|---|
0.4.2 | 2022年9月22日 |
0.4.1 | 2022年8月26日 |
0.4.0 | 2022年6月13日 |
0.0.1 | 2018年5月1日 |
#456 在 硬件支持
每月100 次下载
用于 ads-proxy
155KB
3K SLoC
ads
此crate允许连接到Beckhoff TwinCAT设备和其他使用ADS(自动化设备规范)协议的服务器。
安装
使用Cargo作为通常操作,无需系统依赖。
[dependencies]
ads = "0.4"
Rust版本
最低支持的Rust版本是1.48.0。
使用方法
一个简单的示例
fn main() -> ads::Result<()> {
// Open a connection to an ADS device identified by hostname/IP and port.
// For TwinCAT devices, a route must be set to allow the client to connect.
// The source AMS address is automatically generated from the local IP,
// but can be explicitly specified as the third argument.
let client = ads::Client::new(("plchost", ads::PORT), ads::Timeouts::none(),
ads::Source::Auto)?;
// Specify the target ADS device to talk to, by NetID and AMS port.
// Port 851 usually refers to the first PLC instance.
let device = client.device(ads::AmsAddr::new([5, 32, 116, 5, 1, 1].into(), 851));
// Ensure that the PLC instance is running.
assert!(device.get_state()?.0 == ads::AdsState::Run);
// Request a handle to a named symbol in the PLC instance.
let handle = Handle::new(device, "MY_SYMBOL")?;
// Read data in form of an u32 from the handle.
let value: u32 = handle.read_value()?;
println!("MY_SYMBOL value is {}", value);
// Connection will be closed when the client is dropped.
Ok(())
}
功能
实现了所有ADS请求。
其他功能包括从通道接收通知的支持、通过ADS进行文件访问以及通过UDP通信以识别ADS系统和自动设置路由。
示例
名为adstool
的工具位于examples/
下,与C++库提供的类似。
依赖项
~3.5MB
~64K SLoC