【问题标题】:Plc4x addressing systemplc4x寻址系统
【发布时间】:2019-12-03 09:12:52
【问题描述】:

我发现了 Plc4x java 实现,这似乎对我们的领域很感兴趣。但是项目和文档的年轻化让我们犹豫不决。我已经能够实现基本的 hello world 来读取我们的 PLC,但我无法写入。我找不到地址的处理方式以及maskwriteandMaskorMask 字段的含义。

请有人向我解释以下示例并详细说明应如何使用地址?

    @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();
        }
    }

【问题讨论】:

    标签: apache-plc4x


    【解决方案1】:

    我已成功使用 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 用例中,我不需要任何掩码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多