|
|
@@ -0,0 +1,228 @@
|
|
|
+package cn.vbdsm.hj212.modbus.ws.data;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ArrayUtil;
|
|
|
+import cn.hutool.core.util.RandomUtil;
|
|
|
+import cn.vbdsm.hj212.modbus.utils.RandomHelper;
|
|
|
+import lombok.Data;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Data
|
|
|
+public class RandomPower {
|
|
|
+
|
|
|
+ private BigDecimal pa;
|
|
|
+ private BigDecimal pb;
|
|
|
+ private BigDecimal pc;
|
|
|
+ private BigDecimal p;
|
|
|
+
|
|
|
+ private BigDecimal qa;
|
|
|
+ private BigDecimal qb;
|
|
|
+ private BigDecimal qc;
|
|
|
+ private BigDecimal q;
|
|
|
+
|
|
|
+ private BigDecimal pfa;
|
|
|
+ private BigDecimal pfb;
|
|
|
+ private BigDecimal pfc;
|
|
|
+ private BigDecimal pf;
|
|
|
+
|
|
|
+ private BigDecimal ia;
|
|
|
+ private BigDecimal ib;
|
|
|
+ private BigDecimal ic ;
|
|
|
+ private BigDecimal iz ;
|
|
|
+ private BigDecimal ua ;
|
|
|
+ private BigDecimal ub ;
|
|
|
+ private BigDecimal uc ;
|
|
|
+ private BigDecimal uab ;
|
|
|
+ private BigDecimal ubc ;
|
|
|
+ private BigDecimal uca;
|
|
|
+
|
|
|
+ //需量负荷
|
|
|
+ private BigDecimal dp ;
|
|
|
+
|
|
|
+ //负荷率
|
|
|
+ private BigDecimal pv;
|
|
|
+
|
|
|
+ private BigDecimal uaw;
|
|
|
+ private BigDecimal ubw;
|
|
|
+ private BigDecimal ucw;
|
|
|
+ private BigDecimal uabw;
|
|
|
+ private BigDecimal ubcw;
|
|
|
+ private BigDecimal ucaw;
|
|
|
+ private BigDecimal fw;
|
|
|
+ private BigDecimal f;
|
|
|
+ private BigDecimal inbalance;
|
|
|
+ private BigDecimal unbalance;
|
|
|
+ private BigDecimal t;
|
|
|
+ private BigDecimal t2 ;
|
|
|
+ private BigDecimal t3;
|
|
|
+ private BigDecimal t4;
|
|
|
+ private BigDecimal t5 ;
|
|
|
+ private BigDecimal t6 ;
|
|
|
+ private BigDecimal t7 ;
|
|
|
+ private BigDecimal t8 ;
|
|
|
+
|
|
|
+ private BigDecimal tpe ;
|
|
|
+ private BigDecimal tqe ;
|
|
|
+ private BigDecimal fpe ;
|
|
|
+ private BigDecimal fqe ;
|
|
|
+ private BigDecimal tps ;
|
|
|
+ private BigDecimal tqs ;
|
|
|
+ private BigDecimal fps ;
|
|
|
+ private BigDecimal fqs ;
|
|
|
+
|
|
|
+
|
|
|
+ public RandomPower (){
|
|
|
+ BigDecimal div_1000 = new BigDecimal(1000);
|
|
|
+ BigDecimal div_100 = new BigDecimal(100);
|
|
|
+ BigDecimal div_500 = new BigDecimal(500);
|
|
|
+ BigDecimal div_0 = new BigDecimal(0);
|
|
|
+ BigDecimal div_220 = new BigDecimal(220);
|
|
|
+ BigDecimal div_380 = new BigDecimal(380);
|
|
|
+ BigDecimal div_50 = new BigDecimal(50);
|
|
|
+ //todo 创建随机电能数据
|
|
|
+ //RandomPower power = new RandomPower();
|
|
|
+ List<BigDecimal> list_i = getI();
|
|
|
+ List<BigDecimal> list_u200 = getU_220();
|
|
|
+ List<BigDecimal> list_u380 = getU_380();
|
|
|
+ List<BigDecimal> list_pf = get_Pf();
|
|
|
+ this.setIa(list_i.get(0));
|
|
|
+ this.setIb(list_i.get(1));
|
|
|
+ this.setIc(list_i.get(2));
|
|
|
+
|
|
|
+ this.setUa(list_u200.get(0));
|
|
|
+ this.setUb(list_u200.get(1));
|
|
|
+ this.setUc(list_u200.get(2));
|
|
|
+
|
|
|
+ this.setUab(list_u380.get(0));
|
|
|
+ this.setUbc(list_u380.get(1));
|
|
|
+ this.setUca(list_u380.get(2));
|
|
|
+
|
|
|
+ this.setPfa(list_pf.get(0));
|
|
|
+ this.setPfb(list_pf.get(1));
|
|
|
+ this.setPfc(list_pf.get(2));
|
|
|
+
|
|
|
+ this.setF(RandomHelper.getRandom(5000,20,100));
|
|
|
+
|
|
|
+
|
|
|
+ this.setPa(ia.multiply(ua).multiply(pfa).divide(div_1000,RoundingMode.UP).setScale(3, RoundingMode.HALF_UP));
|
|
|
+ this.setPb(ib.multiply(ub).multiply(pfb).divide(div_1000,RoundingMode.UP).setScale(3, RoundingMode.HALF_UP));
|
|
|
+ this.setPc(ic.multiply(uc).multiply(pfc).divide(div_1000,RoundingMode.UP).setScale(3, RoundingMode.HALF_UP));
|
|
|
+ this.setP(pa.add(pb).add(pc));
|
|
|
+ this.setQa(ia.multiply(ua).multiply(new BigDecimal(1).subtract(pfa)).divide(div_1000, RoundingMode.HALF_UP).setScale(3, RoundingMode.HALF_UP));
|
|
|
+ this.setQb(ib.multiply(ub).multiply(new BigDecimal(1).subtract(pfb)).divide(div_1000, RoundingMode.HALF_UP).setScale(3, RoundingMode.HALF_UP));
|
|
|
+ this.setQc(ic.multiply(uc).multiply(new BigDecimal(1).subtract(pfc)).divide(div_1000, RoundingMode.HALF_UP).setScale(3, RoundingMode.HALF_UP));
|
|
|
+ this.setQ(qa.add(qb).add(qc));
|
|
|
+
|
|
|
+ BigDecimal allP = (ia.multiply(ua).divide(div_1000,RoundingMode.HALF_UP)).add(ib.multiply(ub).divide(div_1000, RoundingMode.HALF_UP)).add(ic.multiply(uc).divide(div_1000, RoundingMode.HALF_UP));
|
|
|
+ this.setPf(p.multiply(div_100).divide(allP, RoundingMode.HALF_UP).divide(div_100, RoundingMode.HALF_UP).setScale(3, RoundingMode.HALF_UP));
|
|
|
+
|
|
|
+ this.setIz(RandomHelper.getRandom(1100,100,10));
|
|
|
+ //需量负荷
|
|
|
+ this.setDp(RandomHelper.getRandom(p.multiply(div_1000),div_500,div_1000));
|
|
|
+ //负荷率
|
|
|
+ this.setPv(RandomHelper.getRandom(8500,1500,100));
|
|
|
+ this.setUaw(getUw(ua,div_220));
|
|
|
+ this.setUbw(getUw(ub,div_220));
|
|
|
+ this.setUcw(getUw(uc,div_220));
|
|
|
+ this.setUabw(getUw(uab,div_380));
|
|
|
+ this.setUbcw(getUw(ubc,div_380));
|
|
|
+ this.setUcaw(getUw(uca,div_380));
|
|
|
+
|
|
|
+ this.setFw(f.subtract(div_50));
|
|
|
+
|
|
|
+ this.setInbalance(getUnbalance_I());
|
|
|
+ this.setUnbalance(getUnbalance_U());
|
|
|
+
|
|
|
+ this.setT(RandomHelper.getRandom(42,3));
|
|
|
+ this.setT2(div_0);
|
|
|
+ this.setT3(div_0);
|
|
|
+ this.setT4(div_0);
|
|
|
+ this.setT5(div_0);
|
|
|
+ this.setT6(div_0);
|
|
|
+ this.setT7(div_0);
|
|
|
+ this.setT8(div_0);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setEngine(BigDecimal pe, BigDecimal qe, BigDecimal ps, BigDecimal qs){
|
|
|
+ this.tpe = pe;
|
|
|
+ this.tqe = qe;
|
|
|
+ this.fpe = new BigDecimal(0);
|
|
|
+ this.fqe = new BigDecimal(0);
|
|
|
+ this.tps = ps;
|
|
|
+ this.tqs = qs;
|
|
|
+ this.fps = new BigDecimal(0);
|
|
|
+ this.fqs = new BigDecimal(0);
|
|
|
+
|
|
|
+ }
|
|
|
+ private List<BigDecimal> getU_220()
|
|
|
+ {
|
|
|
+ int ran = RandomUtil.randomInt(2303, 2308);
|
|
|
+ List<BigDecimal> result = new ArrayList<>();
|
|
|
+ result.add(RandomHelper.getRandom(new BigDecimal(ran*10),new BigDecimal(150),new BigDecimal(100)));
|
|
|
+ result.add(RandomHelper.getRandom(new BigDecimal(ran*10),new BigDecimal(250),new BigDecimal(100)));
|
|
|
+ result.add(RandomHelper.getRandom(new BigDecimal(ran*10),new BigDecimal(150),new BigDecimal(100)));
|
|
|
+ return result;
|
|
|
+
|
|
|
+ }
|
|
|
+ private List<BigDecimal> getU_380()
|
|
|
+ {
|
|
|
+ int ran = RandomUtil.randomInt(4003, 4008);
|
|
|
+ List<BigDecimal> result = new ArrayList<>();
|
|
|
+ result.add(RandomHelper.getRandom(new BigDecimal(ran*10),new BigDecimal(150),new BigDecimal(100)));
|
|
|
+ result.add(RandomHelper.getRandom(new BigDecimal(ran*10),new BigDecimal(250),new BigDecimal(100)));
|
|
|
+ result.add(RandomHelper.getRandom(new BigDecimal(ran*10),new BigDecimal(150),new BigDecimal(100)));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ private List<BigDecimal> getI(){
|
|
|
+ int ran = RandomUtil.randomInt(1000, 1200);
|
|
|
+ List<BigDecimal> result = new ArrayList<>();
|
|
|
+ result.add(RandomHelper.getRandom(ran*100,450,100));
|
|
|
+ result.add(RandomHelper.getRandom(ran*100,350,100));
|
|
|
+ result.add(RandomHelper.getRandom(ran*100,550,100));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ public BigDecimal getUw(BigDecimal u, BigDecimal un)
|
|
|
+ {
|
|
|
+ BigDecimal w = (u.subtract(un)).multiply(new BigDecimal(100)).divide(un, RoundingMode.HALF_UP);
|
|
|
+ return w;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<BigDecimal> get_Pf()
|
|
|
+ {
|
|
|
+ int ran = RandomUtil.randomInt(955, 965);
|
|
|
+ List<BigDecimal> list = new ArrayList<BigDecimal>();
|
|
|
+ list.add(RandomHelper.getRandom(ran * 10, 50, 10000));
|
|
|
+ list.add(RandomHelper.getRandom(ran * 10, 50, 10000));
|
|
|
+ list.add(RandomHelper.getRandom(ran * 10, 50, 10000));
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private BigDecimal getUnbalance_I()
|
|
|
+ {
|
|
|
+ BigDecimal[] arr = new BigDecimal[3];
|
|
|
+ arr[0] = ia;
|
|
|
+ arr[1] = ib;
|
|
|
+ arr[2] = ic;
|
|
|
+ BigDecimal max = ArrayUtil.max(arr);
|
|
|
+ BigDecimal min = ArrayUtil.min(arr);
|
|
|
+ return (max.subtract(min)).multiply(new BigDecimal(100)).divide(max, RoundingMode.HALF_UP).setScale(3, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
+ private BigDecimal getUnbalance_U()
|
|
|
+ {
|
|
|
+ BigDecimal[] arr = new BigDecimal[3];
|
|
|
+ arr[0] = ua;
|
|
|
+ arr[1] = ub;
|
|
|
+ arr[2] = uc;
|
|
|
+ BigDecimal max = ArrayUtil.max(arr);
|
|
|
+ BigDecimal ave = ua.add(ub).add(uc).divide(new BigDecimal(3), RoundingMode.HALF_UP);
|
|
|
+ return (max.subtract(ave)).multiply(new BigDecimal(100)).divide(ave, RoundingMode.HALF_UP).setScale(3, RoundingMode.HALF_UP);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|