zoukankan      html  css  js  c++  java
  • ModbusRTU_Slave之FB的建立

    (*
    1、III型Modbus TCP客户端模块
    2、为了实现通用化
    *)
    FUNCTION_BLOCK ModbusRTU_Slave
    VAR_IN_OUT 
           dwBaudRate:                   WORD;                             //波特率
           Device:                       UINT;                                //串口号
           NumBits:                      INT;                               //线圈状态寄存器个数
           NumInputBits:                 INT;                               //输入状态寄存器个数
           NumRegisters:                 INT;                               //保持寄存器个数
           NumInputRegisters:            INT;                               //输入寄存器个数
             
           //寄存器
           tab_bits:                     ARRAY[0..149] OF BOOL;             //线圈状态寄存器 1位,最高300个,客户端只写,服务端只读
           tab_inputbits:                ARRAY[0..149] OF BOOL;             //输入状态寄存器1位,最高300个,客户端只读,服务端只写 
           tab_regs:                     ARRAY[0..149] OF INT;             //保持寄存器 16位,最高300个,客户端只写,服务端只读 
           tab_inputregs:                ARRAY[0..149] OF INT;             //输入寄存器16位,最高300个,客户端只读,服务端只写      
    END_VAR
    VAR_OUTPUT
            Status:                      UINT;
            errorID:                     UINT := 0;
    END_VAR
    VAR
            //实例化
            MBUS_RTU_Connect      :HSMBUS.ModbusHsRtuConnect;
            MBUS_RTU_SLAVE:              HSMBUS.ModbusHsRtuSlave;    (* modbus rtu slave  *) 
            uiMbsStatus           :UINT;    
            uiMbsError              :UINT := 0;
    END_VAR
    MBUS_RTU_Connect(
        bEnable:= TRUE, 
        iDeviceId:= Device, 
        dBaud:= dwBaudRate, 
        iParity:= 0, 
        iConnectType:= 1, 
        iError=> uiMbsError, 
        iStatus=> uiMbsStatus);
        
    IF (uiMbsStatus <> 1) THEN
        RETURN;
    END_IF
    
    MBUS_RTU_SLAVE(
                iDeviceId:= Device, 
                iSlaveId:= 1, 
                bEnable:= TRUE, 
                iDiscreteInputNums:= INT_TO_UINT(NumInputBits), 
                pDiscreteInputs:= ADR(tab_inputbits),   //输入对方线圈状态数据 
                iCoilNums:= INT_TO_UINT(NumBits), 
                pCoils:= ADR(tab_bits),        //读取对方线圈状态数据
                iInputRegisterNums:= INT_TO_UINT(NumInputRegisters), 
                pInputRegisers:= ADR(tab_inputregs), //输入对方寄存器数据 
                iRegiserNums:= INT_TO_UINT(NumRegisters), 
                pRegisers:= ADR(tab_regs),        //读取对方寄存器数据  
                iError=> errorID, 
                iStatus=> Status);
  • 相关阅读:
    Java 中字符串的格式化
    JAVA字符串格式化-String.format()的使用
    JVM参数配置大全
    Java日期时间使用总结
    Java 通过JDBC连接Mysql数据库的方法和实例
    在eclipse导入Java 的jar包的方法 JDBC
    CentOS 7中如何安装mysql server
    python处理excel
    Chrome Developer Tools:Network Panel说明
    Mysql命令alter add:增加表的字段
  • 原文地址:https://www.cnblogs.com/csflyw/p/14648480.html
Copyright © 2011-2022 走看看