我正在发现Plc4x java实现,它似乎对我们的领域非常感兴趣。但是年轻的项目和文档让我们犹豫。我已经能够实现基本的hello world来读出我们的PLC,但我无法编写。我找不到如何处理地址以及maskwrite、andMask和orMask字段的含义。
请谁给我解释一下下面的例子,并详细说明地址应该如何使用?
@Test
void testWriteToPlc() {
// Establish a connection to the plc using the url provided as first argument
try( PlcConnection plcConnection = new PlcDriverManager().getConnection( "modbus:tcp://1.1.2.1" ) ){
// Create a new read request:
// - Give the single item requested the alias name "value"
var builder = plcConnection.writeRequestBuilder();
builder.addItem( "value-" + 1, "maskwrite:1[1]/2/3", 2 );
var writeRequest = builder.build();
LOGGER.info( "Synchronous request ..." );
var syncResponse = writeRequest.execute().get();
}catch(Exception e){
e.printStackTrace();
}
}发布于 2019-12-16 14:56:59
我已经成功地使用PLC4x和modbus驱动程序进行了编写。下面是我正在使用的一些示例代码:
public static void writePlc4x(ProtocolConnection connection, String registerName, byte[] writeRegister, int offset)
throws InterruptedException {
// modbus write works ok writing one record per request/item
int size = 1;
PlcWriteRequest.Builder writeBuilder = connection.writeRequestBuilder();
if (writeRegister.length == 2) {
writeBuilder.addItem(registerName, "register:" + offset + "[" + size + "]", writeRegister);
}
...
PlcWriteRequest request = writeBuilder.build();
request.execute().whenComplete((writeResponse, error) -> {
assertNotNull(writeResponse);
});
Thread.sleep((long) (sleepWait4Write * writeRegister.length * 1000));
}在modbus写入的情况下,存在关于写入器Future的返回的问题,但写入已完成。在modbus用例中,我不需要任何掩码。
https://stackoverflow.com/questions/59153619
复制相似问题