pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java
@@ -27,6 +27,8 @@ public boolean isQuickSend;//速发命令,即不受下发数据时间间隔限制(通信中间件为低功耗时起作用) public boolean isFastCom;//快速命令,下发数据时间间隔受小值(配置文件中fastCommandSendInterval)限制(如升级命令) public int countdown4Send;////倒计时,当此值为小于等于0时才会下发,否则逐次减1,目的是延迟下发命令,使其他命令可以提前发送 //public Object param ;//缓存一些数据,例如为兼容王工(江海)协议与靳总协议(虚拟IC卡编号长度不一致),把不兼容的虚拟IC卡编号的前半部分放入此处 public MidResultToRtu(){ @@ -35,6 +37,7 @@ isSendFirst = false ; isQuickSend = false ; isFastCom = false ; countdown4Send = 0 ; } @Override pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java
@@ -38,6 +38,7 @@ midRs.isCachForOffLine = false ;//RTU不在线,命令是否缓存,低功耗时为true midRs.isFastCom = true ;//速发命令,下发数据时间间隔受小值(配置文件中fastCommandSendInterval)限制 midRs.countdown4Send = 10 ;//倒计时,当此值为小于等于0时才会下发,否则逐次减1,目的是延迟下发命令,使其他命令可以提前发送 if(isLowPower != null && isLowPower.booleanValue()){ //低功耗时,尽快发送 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
@@ -36,6 +36,8 @@ midRs.maxSendTimes = null ;//命令最大发送次数(当收不到应答时,将重发),如果不设置,命令缓存器进行补充设置 midRs.isCachForOffLine = false ;//RTU不在线,命令是否缓存,低功耗时为true midRs.isFastCom = true ;//速发命令,下发数据时间间隔受小值(配置文件中fastCommandSendInterval)限制 if(isLowPower != null && isLowPower.booleanValue()){ //低功耗时,尽快发送 midRs.isQuickSend = true ; pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
@@ -37,6 +37,9 @@ midRs.maxSendTimes = null ;//命令最大发送次数(当收不到应答时,将重发),如果不设置,命令缓存器进行补充设置 midRs.isCachForOffLine = false ;//RTU不在线,命令是否缓存,低功耗时为true midRs.isFastCom = true ;//速发命令,下发数据时间间隔受小值(配置文件中fastCommandSendInterval)限制 midRs.countdown4Send = 1 ;//倒计时,当此值为小于等于0时才会下发,否则逐次减1 if(isLowPower != null && isLowPower.booleanValue()){ //低功耗时,尽快发送 midRs.isQuickSend = true ; pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
@@ -36,6 +36,8 @@ midRs.maxSendTimes = null ;//命令最大发送次数(当收不到应答时,将重发),如果不设置,命令缓存器进行补充设置 midRs.isCachForOffLine = false ;//RTU不在线,命令是否缓存,低功耗时为true midRs.isFastCom = true ;//速发命令,下发数据时间间隔受小值(配置文件中fastCommandSendInterval)限制 if(isLowPower != null && isLowPower.booleanValue()){ //低功耗时,尽快发送 midRs.isQuickSend = true ; pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
@@ -36,6 +36,8 @@ midRs.maxSendTimes = null ;//命令最大发送次数(当收不到应答时,将重发),如果不设置,命令缓存器进行补充设置 midRs.isCachForOffLine = false ;//RTU不在线,命令是否缓存,低功耗时为true midRs.isFastCom = true ;//速发命令,下发数据时间间隔受小值(配置文件中fastCommandSendInterval)限制 if(isLowPower != null && isLowPower.booleanValue()){ //低功耗时,尽快发送 midRs.isQuickSend = true ; pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandObj.java
@@ -72,21 +72,25 @@ return false ; } Long lastDownComTime = tcpSe.lastDownComTime ; boolean nowSend = false ; if(this.result.isQuickSend){ //在命令构建时,只有在低功耗情况下,才会把isQuickSend付值为true //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,当前是速发命令,满足发送命令条件,执行发送命令 nowSend = true ; }else if(lastDownComTime == null){ //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,当前RTU上线以来未曾下发过命令,满足发送命令条件,执行发送命令 nowSend = true ; }else if(this.result.isFastCom && (now - lastDownComTime) >= ServerProperties.fastCommandSendInterval){ //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,RTU上线以来曾下发过命令,当前命令是快速命令且超过命令下发间隔,满足发送命令条件,执行发送命令 nowSend = true ; }else if(!this.result.isFastCom && (now - lastDownComTime) >= ServerProperties.commandSendInterval){ //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,RTU上线以来曾下发过命令,当前命令非快速命令,RTU下发命令间隔超过命令下发间隔,满足发送命令条件,执行发送命令 nowSend = true ; if(this.result.countdown4Send > 0){ this.result.countdown4Send -= 1 ; }else{ Long lastDownComTime = tcpSe.lastDownComTime ; if(this.result.isQuickSend){ //在命令构建时,只有在低功耗情况下,才会把isQuickSend付值为true //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,当前是速发命令,满足发送命令条件,执行发送命令 nowSend = true ; }else if(lastDownComTime == null){ //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,当前RTU上线以来未曾下发过命令,满足发送命令条件,执行发送命令 nowSend = true ; }else if(this.result.isFastCom && (now - lastDownComTime) >= ServerProperties.fastCommandSendInterval){ //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,RTU上线以来曾下发过命令,当前命令是快速命令且超过命令下发间隔,满足发送命令条件,执行发送命令 nowSend = true ; }else if(!this.result.isFastCom && (now - lastDownComTime) >= ServerProperties.commandSendInterval){ //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,RTU上线以来曾下发过命令,当前命令非快速命令,RTU下发命令间隔超过命令下发间隔,满足发送命令条件,执行发送命令 nowSend = true ; } } if(nowSend){