跳到主要内容

初始化

推荐方式

new PnSService(),外面套 try-with-resources,调一次 start(),循环里写 Q、读 I。
先装好 Darra Profinet Slave。站名和网卡在配置工具里设好,构造不用传。不要每个周期 new / close()

构造函数

PnSService()

public PnSService()

新建从站实例。服务没起来也能 new,不抛;这只是拿到对象,还没启用 IO,主站也还没连上。实现 AutoCloseable

示例:

try (PnSService device = new PnSService()) {
device.start();

while (running) {
// 写 Q、读 I 写在这里
}

device.stop();
}

try-with-resources 包住整个程序寿命,循环写在 try 里面start 一次就够。每个周期 close() 会把 Q 清掉,下一圈再写等于输出被扔掉。

启停

start()

public void start()

启用 IO。已经 start 且还没 stop,再调一次直接返回。成功不等于主站已经在换数据,那要看 connected()

失败抛 PnSServiceException,并写入 lastError()。另一个实例已经在跑也抛 PnSServiceException(契约见 SDK 连接契约)。

示例:

try {
device.start();
} catch (PnSServiceException e) {
System.err.println(PnSService.lastError());
return;
}

stop()

public void stop()

停用 IO。实例还在,可以再 start()。没 start 过或已经 stop,再调一次没事。失败写 lastError,不抛。

彻底放开用 close(),不是 stop()

示例:

device.stop();

资源释放

close()

public void close()

还在跑就先 stop,再放开实例。Q 会被清掉(清的是 Q 的净荷窗:PPM 输出区前 3 字节 IOPS 前缀不动);I 留着,等下一个程序。幂等,实现 AutoCloseable。放开之后这个实例不能再用,要重新 new PnSService()

停 IO 用 stop()stop 之后实例还在,可以再 start()

示例:

device.close();