package com.szpg.plc.protocol.fins; public class FINSConstants { /******** 功能码定义 ********/ public final static byte[] COMMAND_HANDS = new byte[] {0x00, 0x00, 0x00, 0x00}; //0000客户端发给服务端的握手指令功能码 public final static byte[] COMMAND_HANDS_RESPONSE = new byte[] {0x00, 0x00, 0x00, 0x01}; //0001服务端发给客户端的握手指令响应功能码 public final static byte[] COMMAND_COMMAND = new byte[] {0x00, 0x00, 0x00, 0x02}; //0002FINS帧发送命令的功能码 public final static byte[] COMMAND_COMMAND_ERROR = new byte[] {0x00, 0x00, 0x00, 0x03}; //0003FINS帧命令错误通知功能码 /******** 错误码定义 ********/ public final static byte[] ERROR_NORMAL = new byte[] {0x00, 0x00, 0x00, 0x00}; //0000正常的错误代码 public final static byte[] ERROR_HEAD = new byte[] {0x00, 0x00, 0x00, 0x01}; //0001帧头不是FINS的ASCII码值的错误代码 public final static byte[] ERROR_LENGTH = new byte[] {0x00, 0x00, 0x00, 0x02}; //0002数据长度过长的错误代码 public final static byte[] ERROR_COMMAND_TYPE = new byte[] {0x00, 0x00, 0x00, 0x03}; //0003不支持的命令代码的错误代码 public final static byte[] ERROR_CONN_USING = new byte[] {0x00, 0x00, 0x00, 0x20}; //0020连接或信道被占用 /******** 命令代码 ********/ public final static byte[] COMMAND_MEMORY_READ = new byte[] {0x01, 0x01}; //0101读内存命令 public final static byte[] COMMAND_MEMORY_WRITE = new byte[] {0x01, 0x02}; //0102写内存命令 /******** 内存区域代码 ********/ public final static byte MEMORY_DM_AREA = (byte) 0x82; //82内存D区代码 public final static byte MEMORY_WORK_AREA_WORD = (byte) 0xB1; //B1内存W区代码(按字操作) public final static byte MEMORY_WORK_AREA_BIT = 0x31; //31内存W区代码(按位操作) /******** 控制域 ********/ public final static byte ICF_COMMAND = (byte) 0x80; //ICF字节代表命令 public final static byte ICF_RESPONSE = (byte) 0xC0; //ICF字节代表命令响应 public final static byte RSV = 0x00; //RSV字节固定为00 public final static byte GCT = 0x02; //GCT字节根据PLC版本设置为02 }