1
pulg
2025-06-24 79d3258dd565313603cb7ad36db746d1c9cc5c6e
1
1个文件已添加
9个文件已修改
911 ■■■■ 已修改文件
HH.WCS.QingXiNongfu/Program.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/TableSetting.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/bin/Debug/TableSetting.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/bin/Debug/settings.xml 236 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/core/Monitor.cs 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/device/TcpServer.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/process/DeviceProcess.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/settings.xml 236 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/settings1.xml 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/wms/WCSModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/Program.cs
@@ -7,12 +7,10 @@
using Microsoft.Owin.Hosting;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Net.WebSockets;
@@ -763,6 +761,8 @@
                    GetTask(Monitor.BottTask),// 纸箱自动中转
                    GetTask(Monitor.AutoRunABD),
                    GetTask(Monitor.AutoRun13TSJ),
                    GetTask(Monitor.ZdzyABArea),
                    //GetTask(Monitor.AutoTK_PE),//提扣 - PE膜出入库
                    //GetTask(Monitor.chargeCCD),//YWL 入库工单。未使用。
HH.WCS.QingXiNongfu/TableSetting.json
@@ -12,12 +12,13 @@
  "自由线段表": "TN_0021",
  "移库工单表": "TN_0026",
  "物料表": "TN_0005",
  "库容表": "TN_0071",
  "入库排锁表": "TN_0041",
  "富勒托盘下发": "TN_0037",
  "任务类型转换表": "TN_0043",
  "备货单表": "TN_0057",
  "库库转运": "TN_0068",
  "领料单子表": "TN_0053",
  "AGV设备信息": "TN_0042",
  "原物料工单表": "TN_0071",
  "库库转运": "TN_0076"
  "原物料工单表": "TN_0066",
  "AGV设备信息": "TN_0042"
}
HH.WCS.QingXiNongfu/bin/Debug/TableSetting.json
@@ -12,12 +12,13 @@
  "自由线段表": "TN_0021",
  "移库工单表": "TN_0026",
  "物料表": "TN_0005",
  "库容表": "TN_0071",
  "入库排锁表": "TN_0041",
  "富勒托盘下发": "TN_0037",
  "任务类型转换表": "TN_0043",
  "备货单表": "TN_0057",
  "库库转运": "TN_0068",
  "领料单子表": "TN_0053",
  "AGV设备信息": "TN_0042",
  "原物料工单表": "TN_0071",
  "库库转运": "TN_0076"
  "原物料工单表": "TN_0066",
  "AGV设备信息": "TN_0042"
}
HH.WCS.QingXiNongfu/bin/Debug/settings.xml
@@ -1,26 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<Custom>
    <HostToAgvServerUrl>http://192.168.1.146:9988/HostToAGV.cgi</HostToAgvServerUrl>
    <HostToAgvServerUrl>http://10.140.3.100:9988/HostToAGV.cgi</HostToAgvServerUrl>
    <OITcpServerUrl>http://127.0.0.1:5102</OITcpServerUrl>
    <SqlServer>Data Source=192.168.1.137;Initial Catalog=OIMobox;User ID=sa;Password=Am123123</SqlServer>
    <AgvSqlServer></AgvSqlServer>
    <FuleServerUrl>http://127.0.0.1:5102</FuleServerUrl>
    <repoNo>仓库编码</repoNo>
    <!--胚盖上报-->
    <MesServerUrl>http://127.0.0.1:5102</MesServerUrl>
    <factoryCode>工厂编号</factoryCode>
    <fromSystem>来源系统:MOBOX</fromSystem>
    <SqlServer>Data Source=10.140.3.100;Initial Catalog=OIMobox;User ID=sa;Password=qaz-123456</SqlServer>
    <AgvSqlServer>Data Source=10.140.3.100;Initial Catalog=QX_AGV;User ID=sa;Password=qaz-123456</AgvSqlServer>
    <FuleServerUrl>http://yst-open-zuul.idc.yst.com.cn/api/yst-open-proxy/</FuleServerUrl>
    <repoNo>QX00102</repoNo>
    <securityKey>ebf0bfbbe98542b4804de03bc4ef0a70</securityKey>
    <tokenfrom>MOBOX</tokenfrom>
    <securityKey></securityKey>
    <tokenfrom></tokenfrom>
    <FactoryCode>工厂编码</FactoryCode>
    <TaskReportUrl>http://127.0.0.1:6666</TaskReportUrl>
    <TaskReportKey></TaskReportKey>
    <FactoryName>工厂名称</FactoryName>
    <OneSign>唯一标识</OneSign>
    <FactoryCode>20B1</FactoryCode>
    <TaskReportUrl>http://yst-open-zuul.idc.yst.com.cn/api/yst-open-proxy</TaskReportUrl>
    <TaskReportKey>ebf0bfbbe98542b4804de03bc4ef0a70</TaskReportKey>
    <FactoryName>青溪</FactoryName>
    <OneSign>0050</OneSign>
    <!--plc信息,deviceType=1 自动门      deviceType=2 瓶盖机-无菌盖     deviceType=3 瓶盖机-水盖      deviceType=4 翻斗机(水盖)       deviceType=5 翻斗机(无菌盖 v1/v2)  deviceType=6 翻斗机(无菌盖 v6)  deviceType=7 翻斗机(无菌盖 v8)
    <FactoryCode>20B1</FactoryCode>
    <TaskReportUrl>http://yst-open-zuul-qa.idc.yst.com.cn/api/yst-open-proxy</TaskReportUrl>
    <TaskReportKey>9b42bdc3f0a94b3f9c31e72d1ab42ea7</TaskReportKey>
    <FactoryName>青溪</FactoryName>
    <OneSign>0050</OneSign>
     {"address":"10.122.160.35","deviceName":"1号无菌盖机","deviceNo":[],"location":["YLWJG1005","YLWJG1006"],"deviceType":2,"enable":0},
    {"address":"10.122.160.36","deviceName":"2号无菌盖机","deviceNo":[],"location":["YLWJG1003","YLWJG1004"],"deviceType":2,"enable":0},
    {"address":"10.122.160.37","deviceName":"3号无菌盖机","deviceNo":[],"location":["YLWJG1001","YLWJG1002"],"deviceType":2,"enable":0},
@@ -42,48 +42,102 @@
    {"address":"10.122.160.33","deviceName":"门plc4","deviceNo":["9","10"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.122.160.34","deviceName":"门plc5","deviceNo":["11","12"],"location":[],"deviceType":1,"enable":1},
    
    {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1},
    
    {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1},
    {"address":"10.140.3.100","deviceName":"CX2","FuLeLineNo":"QX3","deviceNo":[],"location":["CX2-2","CX2-1","5LCX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16",],"deviceType":9,"enable":1},
      瓶坯入库区
      taskPri 默认值60 -->
    <!--  
    1 门(独立门)
    2 无菌盖
    3 水盖
    4 水盖翻斗机    入库堆叠,人工解。 出库从出库位出到线边    空框进人工区,
    5 瓶坯翻斗机
    6 无菌翻斗机    正常出入库流程  堆叠,入库,出线边        空框进人工区,
    4 水盖翻斗机
    5 无菌翻斗机
    6 电梯
    8 瓶坯
    9 水线 成品
    10 水线翻斗机    人工放线边                                空框进人工区,
    11 提升机 电梯机
    9 水线
    -->
    <deviceInfo>
        <![CDATA[
    [
    {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"550","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1},
    {"address":"10.140.3.163","deviceName":"注塑机","FuLeLineNo":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.161","deviceName":"翻斗机","FuLeLineNo":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
    {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"青溪成品仓QX1输送线","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
    {"address":"10.140.3.163","deviceName":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.175","deviceName":"注塑机3","deviceNo":["","664"],"location":["ZSJ3-1","ZSJ3-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.176","deviceName":"注塑机4","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.150","deviceName":"注塑机5","deviceNo":["","659"],"location":["ZSJ5-1","ZSJ5-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.161","deviceName":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
    {"address":"10.140.3.181","deviceName":"3线翻斗机","deviceNo":["","979"],"location":["SXFDJ1"],"deviceType":5,"enable":1},
    {"address":"10.140.3.182","deviceName":"4线翻斗机","deviceNo":["","969"],"location":["SHIFDJ1"],"deviceType":5,"enable":1},
    
    {"address":"10.140.3.162","deviceName":"门plc1","deviceNo":["1"],"location":[],"deviceType":1,"enable":1},
    
    {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"5L550","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1},
    {"address":"10.140.3.165","deviceName":"5L注塑机","FuLeLineNo":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.167","deviceName":"5L翻斗机","FuLeLineNo":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1},
    {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"青溪成品仓QX2输送线","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
    {"address":"10.140.3.177","deviceName":"CX3","FuLeLineNo":"青溪成品仓QX3输送线","deviceNo":[],"location":["CX3-2","CX3-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
    {"address":"10.140.3.178","deviceName":"CX4","FuLeLineNo":"青溪成品仓QX4输送线","deviceNo":[],"location":["CX4-2","CX4-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
    {"address":"10.140.3.165","deviceName":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.167","deviceName":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1},
    
    {"address":"10.140.3.155","deviceName":"门plc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1},
    
    {"address":"10.140.3.155","deviceName":"一楼搬2楼","deviceNo":[],"location":["踢踢踢"],"deviceType":11,"enable":1},
    {"address":"10.140.3.179","deviceName":"门plc3","deviceNo":["3"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.180","deviceName":"门plc4","deviceNo":["4"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.190","deviceName":"QX3无菌盖翻斗机","deviceNo":["","8"],"location":["QX3FDJ-1"],"deviceType":6,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.191","deviceName":"QX4无菌盖翻斗机","deviceNo":["","9"],"location":["QX4FDJ-1"],"deviceType":6,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.193","deviceName":"一号无菌盖机","deviceNo":[],"location":["WJG1-1","WJG1-2"],"deviceType":2,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.189","deviceName":"水盖机","deviceNo":[],"location":["SGJ-1","SGJ-2"],"deviceType":3,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.195","deviceName":"二号无菌盖机","deviceNo":[],"location":["RHWJGJ-1","RHWJGJ-2"],"deviceType":2,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.192","deviceName":"门plc6","deviceNo":["5"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.183","deviceName":"门plc7","deviceNo":["13"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.194","deviceName":"门plc8","deviceNo":["12"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.188","deviceName":"门plc9","deviceNo":["7"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.185","deviceName":"门plc10","deviceNo":["15","185"],"location":[""],"deviceType":1,"enable":1},
    {"address":"10.140.3.186","deviceName":"门plc11","deviceNo":["186"],"location":[""],"deviceType":1,"enable":1},
    {"address":"10.140.3.196","deviceName":"门plc12","deviceNo":["6"],"location":[""],"deviceType":1,"enable":1},
    {"address":"192.168.1.142","deviceName":"T1提升机","deviceNo":[""],"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1},
    {"address":"192.168.10.86","deviceName":"T2提升机","deviceNo":[""],"location":["YWLSXBQTSJ"],"areaPriy":[],"deviceType":13,"enable":1},
    {"address":"10.140.3.197","deviceName":"门plc16","deviceNo":["16"],"location":[""],"deviceType":1,"enable":1},
    {"address":"10.140.3.184","deviceName":"瓶盖550翻斗机","deviceNo":["","184"],"location":["SGFDJ-1"],"deviceType":4,"areaPriy":["PGMKCK"],"enable":1},
    {"address":"10.140.3.187","deviceName":"瓶盖5L翻斗机","deviceNo":["","187"],"location":["SXFDJ-1"],"deviceType":10,"areaPriy":["PGMKCK"],"enable":1},
    {"address":"10.140.3.170","deviceName":"T2提升机","deviceNo":[""],"taskPri":50,"location":["YWLT2TSJ"],"areaPriy":["YWLT2TSJCD"],"deviceType":13,"enable":1},
    {"address":"10.140.8.65","deviceName":"T1提升机","deviceNo":[""],"taskPri":50,"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1},
    
    ]]]>
    </deviceInfo>
    <!--
    DoorNo 上报的门号。 184,185都定的门号10
    {"address":"10.140.3.170","deviceName":"T2提升机","deviceNo":[""],"location":["YWLT2TSJ"],"areaPriy":["YWLT2TSJCD"],"deviceType":13,"enable":1}
    DoorNo 上报的门号。 184,185 自定的门号10
    deviceNo  ,给184,185 自己定2个门号。写这里。
    SignOpen    开门信号。 与deviceNo 1:1 对应
    SignClose    关门信号。 与deviceNo 1:1 对应
@@ -92,30 +146,23 @@
    -->
    <DoorOneToMany>
        <![CDATA[[
            {"DoorNo":"10","deviceNo":["184","15"],"SignOpen":["21","21"],"SignClose":["20","20"]},
            {"DoorNo":"10","deviceNo":["184","185"],"SignOpen":["21","21"],"SignClose":["20","20"]},
            {"DoorNo":"11","deviceNo":["187","186"],"SignOpen":["21","21"],"SignClose":["20","20"]},
        ]]]>
    </DoorOneToMany>
    <!--
        NotUsingBolArea        非即产满框位。                瓶盖的入库堆叠位,翻斗机出库线边位
        UsingBolArea        即产满框位                    这个翻斗机配置就行了
        NotUsingEmpty        非即产空框位,空框堆叠位    翻斗机入库堆叠位,瓶盖的出库线边位
        UsingEmpty            即产空框位。                这个瓶盖配置就行了
    -->
    <BOLArea>
        <![CDATA[[
            {"DeviceName":"无菌瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":2},
            {"DeviceName":"水盖瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":3},
            {"DeviceName":"水盖翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":4},
            {"DeviceName":"无菌翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":6},
            {"DeviceName":"水线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10},
        ]]]>
    </BOLArea>
    <!--
        
        -->
    <!-- 下线位置配置。   从上到下分排,从左到右 分列 -->
    <!-- 下线位置配置。
{"address":"10.140.3.185","deviceName":"550翻斗机","deviceNo":["","10"],"location":["SGFDJ-1"],"deviceType":6,"enable":1},
{"address":"10.140.3.186","deviceName":"5L翻斗机","deviceNo":["","11"],"location":["SXFDJ-1"],"deviceType":6,"enable":1},
    {"address":"10.140.3.190","deviceName":"门plc5","deviceNo":["12"],"location":[],"deviceType":1,"enable":1},从上到下分排,从左到右 分列 -->
    <!--
        1-1号无菌2号无菌3号无菌
        2 - 1号水盖
@@ -140,35 +187,84 @@
    ]]]>
    </inStockCacheBit>-->
    <!--
    agv小车的取放点位
    Location:货位编码
    StartBit:作为起点时的站点
    EndBit:作为终点时的站点
    -->
    <MoreSites>
        <![CDATA[[
            {"Location":"JCJYKK-1P-1L-1C","StartBit":178,"EndBit":1335},
            {"Location":"JCJYKK-1P-2L-1C","StartBit":175,"EndBit":1336},
            {"Location":"JCJYMK-1P-1L-1C","StartBit":184,"EndBit":1333},
            {"Location":"JCJYMK-1P-2L-1C","StartBit":181,"EndBit":1334},
            {"Location":"JCJYMK-1P-3L-1C","StartBit":1372,"EndBit":1418},
            {"Location":"JCJYMK-1P-4L-1C","StartBit":1374,"EndBit":1419},
            {"Location":"接驳区&BACK","StartBit":1374,"EndBit":1419},
            {"Location":"JCJYKK1-1","StartBit":3372,"EndBit":3372},
            {"Location":"JCJYKK2-1","StartBit":3370,"EndBit":3370},
            {"Location":"JCJYKK3-1","StartBit":3367,"EndBit":3367},
            {"Location":"JCJYKK1-4","StartBit":3368,"EndBit":3368},
            {"Location":"550JCJYMK1-1","StartBit":1425,"EndBit":1424},
            {"Location":"550JCJYMK2-1","StartBit":1426,"EndBit":1423},
            {"Location":"550JCJYMK3-1","StartBit":1478,"EndBit":1477},
            {"Location":"550JCJYMK4-1","StartBit":3506,"EndBit":3505},
            {"Location":"5LJCJYMK1-1","StartBit":1488,"EndBit":1487},
            {"Location":"5LJCJYMK2-1","StartBit":1489,"EndBit":1486},
            {"Location":"5LJCJYMK3-1","StartBit":1335,"EndBit":178},
            {"Location":"5LJCJYMK4-1","StartBit":1336,"EndBit":1528},
            {"Location":"SXJCJY1-1","StartBit":3485,"EndBit":3484},
            {"Location":"SXJCJY2-1","StartBit":3482,"EndBit":3481},
            {"Location":"SXJCJY3-1","StartBit":3483,"EndBit":3480},
            {"Location":"SXJCJY4-1","StartBit":3487,"EndBit":3486},
            {"Location":"SIXJCJY1-1","StartBit":3471,"EndBit":3470},
            {"Location":"SIXJCJY2-1","StartBit":3469,"EndBit":3468},
            {"Location":"SIXJCJY3-1","StartBit":3466,"EndBit":3465},
            {"Location":"QXZXZZQ1-1","StartBit":5450,"EndBit":5523},
            {"Location":"QXZXZZQ1-2","StartBit":5455,"EndBit":5524},
            {"Location":"QXZXZZQ1-3","StartBit":5454,"EndBit":5525},
            {"Location":"QXZXZZQ1-4","StartBit":5453,"EndBit":5526},
            {"Location":"QXZXZZQ1-5","StartBit":5452,"EndBit":5527},
            {"Location":"QXZXZZQ1-6","StartBit":5451,"EndBit":5528},
            {"Location":"QXZXZZQ1-7","StartBit":5463,"EndBit":5529},
            {"Location":"QXZXZZQ1-8","StartBit":5464,"EndBit":5530},
            {"Location":"QXZXZZQ2-1","StartBit":5497,"EndBit":5562},
            {"Location":"QXZXZZQ2-2","StartBit":5502,"EndBit":5561},
            {"Location":"QXZXZZQ2-3","StartBit":5501,"EndBit":5560},
            {"Location":"QXZXZZQ2-4","StartBit":5500,"EndBit":5559},
            {"Location":"QXZXZZQ2-5","StartBit":5499,"EndBit":5558},
            {"Location":"QXZXZZQ2-6","StartBit":5498,"EndBit":5557},
            {"Location":"QXZXZZQ2-7","StartBit":5503,"EndBit":5556},
            {"Location":"QXZXZZQ2-8","StartBit":5504,"EndBit":5555},
            {"Location":"QXZXZZQ3-1","StartBit":5506,"EndBit":5570},
            {"Location":"QXZXZZQ3-2","StartBit":5511,"EndBit":5569},
            {"Location":"QXZXZZQ3-3","StartBit":5510,"EndBit":5568},
            {"Location":"QXZXZZQ3-4","StartBit":5509,"EndBit":5567},
            {"Location":"QXZXZZQ3-5","StartBit":5508,"EndBit":5566},
            {"Location":"QXZXZZQ3-6","StartBit":5507,"EndBit":5565},
            {"Location":"QXZXZZQ3-7","StartBit":5512,"EndBit":5564},
            {"Location":"QXZXZZQ3-8","StartBit":5513,"EndBit":5563},
            {"Location":"QXZXZZQ4-1","StartBit":5515,"EndBit":5578},
            {"Location":"QXZXZZQ4-2","StartBit":5520,"EndBit":5577},
            {"Location":"QXZXZZQ4-3","StartBit":5519,"EndBit":5576},
            {"Location":"QXZXZZQ4-4","StartBit":5518,"EndBit":5575},
            {"Location":"QXZXZZQ4-5","StartBit":5517,"EndBit":5574},
            {"Location":"QXZXZZQ4-6","StartBit":5516,"EndBit":5573},
            {"Location":"QXZXZZQ4-7","StartBit":5521,"EndBit":5572},
            {"Location":"QXZXZZQ4-8","StartBit":5522,"EndBit":5571},
            {"Location":"WJBQJBQ1-1&BACK","StartBit":7445,"EndBit":7443},
            {"Location":"WJBQJBQ2-1&BACK","StartBit":7446,"EndBit":7444},
        ]]]>
    </MoreSites>
    <!--配置 即产 空/满 库区,非即产库 空/满 区
    1.即产满
    2.即产空
    3 非即产满
    4.非即产空
    <!--
    {"DeviceName":"4L5L线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10},
    -->
    <AreaSet>
        <BOLArea>
        <![CDATA[[
            {"Area":"JCJYKK","AreaType":2},
                    {"DeviceName":"一号无菌盖机","NotUsingBolArea":"","UsingBolArea":"XQX3JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX3WJGJCJYKK","deviceType":2},
                    {"DeviceName":"二号无菌盖机","NotUsingBolArea":"","UsingBolArea":"XQX4JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX3WJGJCJYKK","deviceType":2},
                    {"DeviceName":"QX3无菌盖翻斗机","NotUsingBolArea":"QX3QX4MKRK","UsingBolArea":"XQX3JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX34WJGJCJYKK","deviceType":6},
                    {"DeviceName":"QX4无菌盖翻斗机","NotUsingBolArea":"QX3QX4MKRK","UsingBolArea":"XQX4JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX34WJGJCJYKK","deviceType":6},
                    {"DeviceName":"水盖机","NotUsingBolArea":"SGHRCW","UsingBolArea":"SGJCJYMK","NotUsingEmpty":"PGKKCK","UsingEmpty":"SGJCJYKK","deviceType":3},
                    {"DeviceName":"瓶盖550翻斗机","NotUsingBolArea":"SGHCW","UsingBolArea":"SGJCJYMK","NotUsingEmpty":"SGKKHRCW","UsingEmpty":"SGJCJYKK","deviceType":4},
                    {"DeviceName":"瓶盖5L翻斗机","NotUsingBolArea":"SGRGHCW","UsingBolArea":"","NotUsingEmpty":"SGKKHRCW","UsingEmpty":"","deviceType":10},
        ]]]>
    </AreaSet>
    </BOLArea>
</Custom>
HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1074,6 +1074,7 @@
                        }
                    }
                    if (dsll.Any())
                    {
                        foreach (var r in dsll)
                        {
                            foreach (var rows in r.Value.GroupBy(x => x.N_ROW).OrderBy(x => x.Key))
@@ -1182,7 +1183,7 @@
                                                        LogHelper.Info($"查起点有多少同品种的物料 开始");
                                                        var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
                                                        ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == _clrel0.S_TYPE);
                                                        var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).Includes(e => e.LocCntrRel, p => p.CntrItemRel).ToList();
                                                        var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList();
                                                        LogHelper.Info($"起点要入CD的有多少托盘数量为{lstCanOutL.Count()}");
                                                        //判断终点排能入多少  少于入库托盘数则多开一排 EndMum 
                                                        var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "无" && inlockLis.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList();
@@ -1281,7 +1282,11 @@
                                }
                            }
                        }
                    else if (InworkLock) InworkLock = false;
                    }
                    else if (InworkLock)
                    {
                        InworkLock = false;
                    }
                }
                catch (Exception ex)
                {
@@ -3640,16 +3645,39 @@
            public int Row { get; set; }
        }
        /// <summary>
        /// 原物料纸箱出库
        /// AB区物料不足自动转运
        /// </summary>
        public static void AutoRun13TSJ()
        public static void ZdzyABArea()
        {
            Action<YWLWorkOrder> _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好 = (od) =>
            try
            {
                var chi = new SqlHelper<object>().GetInstance();
                var newDb = chi.CopyNew();
                foreach (var PLC in Settings.GetDeviceInfoList().FindAll(X => X.deviceType == 13 && X.enable == 1))
                {
                    string pline = PLC.deviceName;
                    if (PLC.deviceName.Contains("T2"))
                        pline = "T2提升机-纸箱";
                    var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "执行中");
                    if (orkOrd.Any())
                    {
                        foreach (var od in orkOrd)
                        {
                            var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW);
                            //查询可用货位有多少
                            List<string> Ky = new List<string>() { "无", "出库锁", "入库锁" };
                            var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count();
                            var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "无").Sum(x => x.N_CURRENT_NUM);
                            LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 出库余量判断是否需要转运。-{count}< 总共能用的货位数{loclistK} -7");
                            if (count <= loclistK - 7)
            {
                LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}对应工单的{od.S_ROW} 物料数量不足。触发转运。");
                // 先看是否有到该库区的转运任务。 
                var zxs = LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "执行" && X.S_END_AREA == od.S_ROW);
                //1.查看物料是否匹配。
                var itemTRUN = zxs.Any(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME);
                if (itemTRUN)
@@ -3661,25 +3689,43 @@
                //人工转运没指定物料,我会自动写回转运单 物料数据。
                //找CD 区 哪里有这个物料。 
                Dictitems TrunStart = null;
                                Dictitems TrunStart = new Dictitems();
                foreach (var area in CDlist)
                {
                    if (dsi.TryGetValue(area, out var dictitems1))
                    {
                        var arearowsloc = LocationHelper.GetAreaNormalLocList(area);
                        foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME))
                        {
                            if (arearowsloc.Exists(x => x.N_ROW == d.Row))
                            {
                                TrunStart = d;
                                break;
                            }
                        }
                    }
                }
                                    //var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
                LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}触发转运。转运来源是{JsonConvert.SerializeObject(TrunStart)}");
                if (TrunStart != null)
                                    //ca.And((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && t.S_CJ_NAME == od.S_CJ_NAME);
                                    var lstCanOutL = newDb.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && t.S_CJ_NAME == od.S_CJ_NAME).ToList();
                                    List<string> CRk = new List<string>() { "出库锁", "入库锁" };
                                    var EndMum = newDb.Queryable<Location>().Where(l => l.S_AREA_CODE == area && CRk.Contains(l.S_LOCK_STATE)).ToList();
                                    var RowLock = EndMum.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList();
                                    foreach (var item in RowLock)
                                    {
                                        lstCanOutL.RemoveAll(e => e.N_ROW == item.N_ROW);
                                    }
                                    if (lstCanOutL.Count() > 0)
                                    {
                                        var LstCan = newDb.Queryable<LocCntrRel>().Where(a => lstCanOutL.Select(e => e.S_LOC_CODE).ToList().Contains(a.S_LOC_CODE)).ToList();
                                        var loc = lstCanOutL.Find(e => e.S_LOC_CODE == LstCan.OrderBy(c => c.T_CREATE).FirstOrDefault().S_LOC_CODE);
                                        TrunStart.area = area;
                                        TrunStart.Row = loc.N_ROW;
                                    }
                                    //if (dsi.TryGetValue(area, out var dictitems1))
                                    //{
                                    //    var arearowsloc = LocationHelper.GetAreaNormalLocList(area);
                                    //    foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME))
                                    //    {
                                    //        if (arearowsloc.Exists(x => x.N_ROW == d.Row))
                                    //        {
                                    //            TrunStart = d;
                                    //            break;
                                    //        }
                                    //    }
                                    //}
                                }
                                LogHelper.Info($"ZdzyABArea{od.SQL_WorkNo}触发转运。转运来源是{JsonConvert.SerializeObject(TrunStart)}");
                                if (TrunStart?.area != null)
                    WCSHelper.Do(db =>
                    {
                        db.Insertable(new YWLZXtake
@@ -3694,11 +3740,76 @@
                            S_ZZ_AREA = (od.S_ROW == "YWLAQWJ" ? "YWLWJJB" : od.S_ROW)
                        }).ExecuteCommand();
                    });
            };
            //var TaskSiggg = Settings.GetTimeStamp();
            //var list = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" };
            //var WorkOrder = new List<YWLWorkOrder>();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Info($"ZdzyABArea 触发转运 报错:{ex.Message}");
            }
        }
        /// <summary>
        /// 原物料纸箱出库
        /// </summary>
        public static void AutoRun13TSJ()
        {
            //Action<YWLWorkOrder> _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好 = (od) =>
            //{
            //    LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}对应工单的{od.S_ROW} 物料数量不足。触发转运。");
            //    // 先看是否有到该库区的转运任务。
            //    var zxs = LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "执行" && X.S_END_AREA == od.S_ROW);
            //    //1.查看物料是否匹配。
            //    var itemTRUN = zxs.Any(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME);
            //    if (itemTRUN)
            //    {  //有到该库区的 物料转运任务了。 不需要继续了 。
            //        LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}已经存在转运了无需触发转运。");
            //        return;
            //    }
            //    //人工转运没指定物料,我会自动写回转运单 物料数据。
            //    //找CD 区 哪里有这个物料。
            //    Dictitems TrunStart = null;
            //    foreach (var area in CDlist)
            //    {
            //        if (dsi.TryGetValue(area, out var dictitems1))
            //        {
            //            var arearowsloc = LocationHelper.GetAreaNormalLocList(area);
            //            foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME))
            //            {
            //                if (arearowsloc.Exists(x => x.N_ROW == d.Row))
            //                {
            //                    TrunStart = d;
            //                    break;
            //                }
            //            }
            //        }
            //    }
            //    LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}触发转运。转运来源是{JsonConvert.SerializeObject(TrunStart)}");
            //    if (TrunStart != null)
            //        WCSHelper.Do(db =>
            //        {
            //            db.Insertable(new YWLZXtake
            //            {
            //                S_START_AREA = TrunStart.area,
            //                N_START_ROW = TrunStart.Row,
            //                S_END_AREA = od.S_ROW,
            //                S_ZX_STATE = "执行",
            //                S_ITEM_CODE = od.SQL_ItemCode,
            //                S_ITEM_NAME = od.SQL_ItemName,
            //                S_CJ_NAME = od.S_CJ_NAME,
            //                S_ZZ_AREA = (od.S_ROW == "YWLAQWJ" ? "YWLWJJB" : od.S_ROW)
            //            }).ExecuteCommand();
            //        });
            //};
            foreach (var PLC in Settings.GetDeviceInfoList().FindAll(X => X.deviceType == 13 && X.enable == 1))
            {
                string pline = PLC.deviceName;
@@ -3716,34 +3827,6 @@
                    if (locs.Find(x => x.N_CURRENT_NUM > 0) != null) //拆垛有货 不判断
                        continue;
                    can = true;
                    //var source1 = orkOrd.FirstOrDefault();
                    //foreach (var item in list)
                    //{
                    //    YWLWorkOrder source = new YWLWorkOrder();
                    //    source.SQL_PLineNo = source1.SQL_PLineNo;
                    //    source.FuLe_PLine_No = source1.FuLe_PLine_No;
                    //    source.SQL_LinkLineNO = source1.SQL_LinkLineNO;
                    //    source.SQL_Area = item;
                    //    source.SQL_UsingNow = source1.SQL_UsingNow;
                    //    source.SQL_State = source1.SQL_State;
                    //    source.SQL_WorkNo = source1.SQL_WorkNo;
                    //    source.SQL_ItemCode = source1.SQL_ItemCode;
                    //    source.SQL_ItemName = source1.SQL_ItemName;
                    //    source.SQL_charge = source1.SQL_charge;
                    //    source.SQL_Total = source1.SQL_Total;
                    //    source.SQL_PLAN_END = source1.SQL_PLAN_END;
                    //    source.SQL_Modify_TIme = source1.SQL_Modify_TIme;
                    //    source.OutNum = source1.OutNum;
                    //    source.WorkType = source1.WorkType;
                    //    source.MidArea = source1.MidArea;
                    //    source.TagOver = source1.TagOver;
                    //    source.TagOverTime = source1.TagOverTime;
                    //    source.S_BQ_TRAY_TYPE = source1.S_BQ_TRAY_TYPE;
                    //    source.S_CJ_NAME = source1.S_CJ_NAME;
                    //    source.S_ROW = item;
                    //    WorkOrder.Add(source);
                    //}
                }
                orkOrd = orkOrd.FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10);
@@ -3829,15 +3912,18 @@
                                    //检测指定库区的物料排总数量
                                    if (dsi.TryGetValue(od.S_ROW, out var dictitems1))
                                    {
                                        var rows = dictitems1.Select(x => x.Row).Distinct();
                                        var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW));
                                        var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "无").Sum(x => x.N_CURRENT_NUM);
                                        LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 出库余量判断是否需要转运。-{count}< 5");
                                        if (count < 5)
                                        {
                                            autoTurn = true;
                                            _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好(od);
                                        }
                                        //var rows = dictitems1.Select(x => x.Row).Distinct();
                                        //var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW));
                                        ////查询可用货位有多少
                                        //List<string> Ky = new List<string>() { "无", "出库锁", "入库锁" };
                                        //var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count();
                                        //var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "无").Sum(x => x.N_CURRENT_NUM);
                                        //LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 出库余量判断是否需要转运。-{count}< 总共能用的货位数{loclistK} -7");
                                        //if (count < loclistK - 7)
                                        //{
                                        //    autoTurn = true;
                                        //    _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好(od);
                                        //}
                                    }
                                }
                                Location Endbit = null;
@@ -3881,10 +3967,17 @@
                                        b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, jbbit, "原物料搬运-纸箱", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri, "", Endbit.S_LOC_CODE);
                                    else
                                        b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, Endbit.S_LOC_CODE, "原物料搬运-纸箱", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri);
                                    if (b)
                                    {
                                        var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "出库锁", S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
                                        var db = new SqlHelper<object>().GetInstance();
                                        od.TagOverTime = DateTime.Now;
                                        od.TagOver = StartBit.S_AREA_CODE;
                                        var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver }).ExecuteCommand();
                                        LogHelper.Info($"上提升机任务 更新工单的时间影响行数: {ggf}");
                                        var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "出库锁", S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
                                        //给终点锁定住
                                        if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ")
                                        {
@@ -3905,9 +3998,7 @@
                                        //    }
                                        //}
                                        //else db.Insertable(r).ExecuteCommand();
                                        od.TagOverTime = DateTime.Now;
                                        od.TagOver = StartBit.S_AREA_CODE;
                                        db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver }).ExecuteCommand();
                                        //break;
                                    }
                                }
@@ -3918,10 +4009,10 @@
                                }
                            }
                        }
                        else
                        {
                            _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好(od);
                        }
                        //else
                        //{
                        //    _sAB没物料或者余量不足开始触发跟根据自动转运_名字越长越好(od);
                        //}
                    }
            }
        }
HH.WCS.QingXiNongfu/device/TcpServer.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
namespace HH.WCS.QingXigongchang.device
{
@@ -105,9 +106,18 @@
                        Console.WriteLine(remote_ip + "" + message);
                        if (message.Substring(0, 4) == "3f00" && message.Substring(message.Length - 4) == "0d0a")
                        {
                            //显示消息
                            var list = Regex.Split(message, "0d0a", RegexOptions.IgnoreCase).Distinct().ToList();
                            foreach (var item in list)
                            {
                                if (!string.IsNullOrEmpty(item))
                                {
                            string msg = message.Replace(@"0d", "").Replace(@"0a", "").Replace(@"0d0a", "").Trim();
                            PlcHelper.Receive(remote_ip, msg);
                                }
                            }
                            //显示消息
                            //string msg = message.Replace(@"0d", "").Replace(@"0a", "").Replace(@"0d0a", "").Trim();
                            //PlcHelper.Receive(remote_ip, msg);
                            Array.Clear(buffers[remote_ip], 0, buffers[remote_ip].Length);//清空当前IP Buffer
                        }
                        else
HH.WCS.QingXiNongfu/process/DeviceProcess.cs
@@ -144,7 +144,6 @@
            }
        }
        private static void Analysis13(string data, deviceInfo plc)
        {
            //用于  出库时 是否可以直达 提升机。  00 后面还需增加退料工单处理。 
@@ -368,7 +367,7 @@
                        if (sBit != null)
                        {
                            var sign = Settings.GetTimeStamp();
                            var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "原物料搬运-纸箱", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 50);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : "");
                            var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "原物料搬运-纸箱", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 60);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : "");
                            LogHelper.Info($"原物料搬运 上提升机。 {sign} 任务 ,创建{res} ");
                            //var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "原物料搬运-纸箱", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 50);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : "");
                            //LogHelper.Info($"原物料搬运 上提升机。 {sign} 任务 ,创建{res} ");
HH.WCS.QingXiNongfu/settings.xml
@@ -1,26 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<Custom>
    <HostToAgvServerUrl>http://192.168.1.146:9988/HostToAGV.cgi</HostToAgvServerUrl>
    <HostToAgvServerUrl>http://10.140.3.100:9988/HostToAGV.cgi</HostToAgvServerUrl>
    <OITcpServerUrl>http://127.0.0.1:5102</OITcpServerUrl>
    <SqlServer>Data Source=192.168.1.137;Initial Catalog=OIMobox;User ID=sa;Password=Am123123</SqlServer>
    <AgvSqlServer></AgvSqlServer>
    <FuleServerUrl>http://127.0.0.1:5102</FuleServerUrl>
    <repoNo>仓库编码</repoNo>
    <!--胚盖上报-->
    <MesServerUrl>http://127.0.0.1:5102</MesServerUrl>
    <factoryCode>工厂编号</factoryCode>
    <fromSystem>来源系统:MOBOX</fromSystem>
    <SqlServer>Data Source=10.140.3.100;Initial Catalog=OIMobox;User ID=sa;Password=qaz-123456</SqlServer>
    <AgvSqlServer>Data Source=10.140.3.100;Initial Catalog=QX_AGV;User ID=sa;Password=qaz-123456</AgvSqlServer>
    <FuleServerUrl>http://yst-open-zuul.idc.yst.com.cn/api/yst-open-proxy/</FuleServerUrl>
    <repoNo>QX00102</repoNo>
    <securityKey>ebf0bfbbe98542b4804de03bc4ef0a70</securityKey>
    <tokenfrom>MOBOX</tokenfrom>
    <securityKey></securityKey>
    <tokenfrom></tokenfrom>
    <FactoryCode>工厂编码</FactoryCode>
    <TaskReportUrl>http://127.0.0.1:6666</TaskReportUrl>
    <TaskReportKey></TaskReportKey>
    <FactoryName>工厂名称</FactoryName>
    <OneSign>唯一标识</OneSign>
    <FactoryCode>20B1</FactoryCode>
    <TaskReportUrl>http://yst-open-zuul.idc.yst.com.cn/api/yst-open-proxy</TaskReportUrl>
    <TaskReportKey>ebf0bfbbe98542b4804de03bc4ef0a70</TaskReportKey>
    <FactoryName>青溪</FactoryName>
    <OneSign>0050</OneSign>
    <!--plc信息,deviceType=1 自动门      deviceType=2 瓶盖机-无菌盖     deviceType=3 瓶盖机-水盖      deviceType=4 翻斗机(水盖)       deviceType=5 翻斗机(无菌盖 v1/v2)  deviceType=6 翻斗机(无菌盖 v6)  deviceType=7 翻斗机(无菌盖 v8)
    <FactoryCode>20B1</FactoryCode>
    <TaskReportUrl>http://yst-open-zuul-qa.idc.yst.com.cn/api/yst-open-proxy</TaskReportUrl>
    <TaskReportKey>9b42bdc3f0a94b3f9c31e72d1ab42ea7</TaskReportKey>
    <FactoryName>青溪</FactoryName>
    <OneSign>0050</OneSign>
     {"address":"10.122.160.35","deviceName":"1号无菌盖机","deviceNo":[],"location":["YLWJG1005","YLWJG1006"],"deviceType":2,"enable":0},
    {"address":"10.122.160.36","deviceName":"2号无菌盖机","deviceNo":[],"location":["YLWJG1003","YLWJG1004"],"deviceType":2,"enable":0},
    {"address":"10.122.160.37","deviceName":"3号无菌盖机","deviceNo":[],"location":["YLWJG1001","YLWJG1002"],"deviceType":2,"enable":0},
@@ -42,48 +42,102 @@
    {"address":"10.122.160.33","deviceName":"门plc4","deviceNo":["9","10"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.122.160.34","deviceName":"门plc5","deviceNo":["11","12"],"location":[],"deviceType":1,"enable":1},
    
    {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1},
    
    {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1},
    {"address":"10.140.3.100","deviceName":"CX2","FuLeLineNo":"QX3","deviceNo":[],"location":["CX2-2","CX2-1","5LCX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16",],"deviceType":9,"enable":1},
      瓶坯入库区
      taskPri 默认值60 -->
    <!--  
    1 门(独立门)
    2 无菌盖
    3 水盖
    4 水盖翻斗机    入库堆叠,人工解。 出库从出库位出到线边    空框进人工区,
    5 瓶坯翻斗机
    6 无菌翻斗机    正常出入库流程  堆叠,入库,出线边        空框进人工区,
    4 水盖翻斗机
    5 无菌翻斗机
    6 电梯
    8 瓶坯
    9 水线 成品
    10 水线翻斗机    人工放线边                                空框进人工区,
    11 提升机 电梯机
    9 水线
    -->
    <deviceInfo>
        <![CDATA[
    [
    {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"550","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1},
    {"address":"10.140.3.163","deviceName":"注塑机","FuLeLineNo":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.161","deviceName":"翻斗机","FuLeLineNo":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
    {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"青溪成品仓QX1输送线","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
    {"address":"10.140.3.163","deviceName":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.175","deviceName":"注塑机3","deviceNo":["","664"],"location":["ZSJ3-1","ZSJ3-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.176","deviceName":"注塑机4","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.150","deviceName":"注塑机5","deviceNo":["","659"],"location":["ZSJ5-1","ZSJ5-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.161","deviceName":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
    {"address":"10.140.3.181","deviceName":"3线翻斗机","deviceNo":["","979"],"location":["SXFDJ1"],"deviceType":5,"enable":1},
    {"address":"10.140.3.182","deviceName":"4线翻斗机","deviceNo":["","969"],"location":["SHIFDJ1"],"deviceType":5,"enable":1},
    
    {"address":"10.140.3.162","deviceName":"门plc1","deviceNo":["1"],"location":[],"deviceType":1,"enable":1},
    
    {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"5L550","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1},
    {"address":"10.140.3.165","deviceName":"5L注塑机","FuLeLineNo":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.167","deviceName":"5L翻斗机","FuLeLineNo":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1},
    {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"青溪成品仓QX2输送线","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
    {"address":"10.140.3.177","deviceName":"CX3","FuLeLineNo":"青溪成品仓QX3输送线","deviceNo":[],"location":["CX3-2","CX3-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
    {"address":"10.140.3.178","deviceName":"CX4","FuLeLineNo":"青溪成品仓QX4输送线","deviceNo":[],"location":["CX4-2","CX4-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
    {"address":"10.140.3.165","deviceName":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.167","deviceName":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1},
    
    {"address":"10.140.3.155","deviceName":"门plc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1},
    
    {"address":"10.140.3.155","deviceName":"一楼搬2楼","deviceNo":[],"location":["踢踢踢"],"deviceType":11,"enable":1},
    {"address":"10.140.3.179","deviceName":"门plc3","deviceNo":["3"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.180","deviceName":"门plc4","deviceNo":["4"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.190","deviceName":"QX3无菌盖翻斗机","deviceNo":["","8"],"location":["QX3FDJ-1"],"deviceType":6,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.191","deviceName":"QX4无菌盖翻斗机","deviceNo":["","9"],"location":["QX4FDJ-1"],"deviceType":6,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.193","deviceName":"一号无菌盖机","deviceNo":[],"location":["WJG1-1","WJG1-2"],"deviceType":2,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.189","deviceName":"水盖机","deviceNo":[],"location":["SGJ-1","SGJ-2"],"deviceType":3,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.195","deviceName":"二号无菌盖机","deviceNo":[],"location":["RHWJGJ-1","RHWJGJ-2"],"deviceType":2,"areaPriy":["QX3QX4MKRK"],"enable":1},
    {"address":"10.140.3.192","deviceName":"门plc6","deviceNo":["5"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.183","deviceName":"门plc7","deviceNo":["13"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.194","deviceName":"门plc8","deviceNo":["12"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.188","deviceName":"门plc9","deviceNo":["7"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.185","deviceName":"门plc10","deviceNo":["15","185"],"location":[""],"deviceType":1,"enable":1},
    {"address":"10.140.3.186","deviceName":"门plc11","deviceNo":["186"],"location":[""],"deviceType":1,"enable":1},
    {"address":"10.140.3.196","deviceName":"门plc12","deviceNo":["6"],"location":[""],"deviceType":1,"enable":1},
    {"address":"192.168.1.142","deviceName":"T1提升机","deviceNo":[""],"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1},
    {"address":"192.168.10.86","deviceName":"T2提升机","deviceNo":[""],"location":["YWLSXBQTSJ"],"areaPriy":[],"deviceType":13,"enable":1},
    {"address":"10.140.3.197","deviceName":"门plc16","deviceNo":["16"],"location":[""],"deviceType":1,"enable":1},
    {"address":"10.140.3.184","deviceName":"瓶盖550翻斗机","deviceNo":["","184"],"location":["SGFDJ-1"],"deviceType":4,"areaPriy":["PGMKCK"],"enable":1},
    {"address":"10.140.3.187","deviceName":"瓶盖5L翻斗机","deviceNo":["","187"],"location":["SXFDJ-1"],"deviceType":10,"areaPriy":["PGMKCK"],"enable":1},
    {"address":"10.140.3.170","deviceName":"T2提升机","deviceNo":[""],"taskPri":50,"location":["YWLT2TSJ"],"areaPriy":["YWLT2TSJCD"],"deviceType":13,"enable":1},
    {"address":"10.140.8.65","deviceName":"T1提升机","deviceNo":[""],"taskPri":50,"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1},
    
    ]]]>
    </deviceInfo>
    <!--
    DoorNo 上报的门号。 184,185都定的门号10
    {"address":"10.140.3.170","deviceName":"T2提升机","deviceNo":[""],"location":["YWLT2TSJ"],"areaPriy":["YWLT2TSJCD"],"deviceType":13,"enable":1}
    DoorNo 上报的门号。 184,185 自定的门号10
    deviceNo  ,给184,185 自己定2个门号。写这里。
    SignOpen    开门信号。 与deviceNo 1:1 对应
    SignClose    关门信号。 与deviceNo 1:1 对应
@@ -92,30 +146,23 @@
    -->
    <DoorOneToMany>
        <![CDATA[[
            {"DoorNo":"10","deviceNo":["184","15"],"SignOpen":["21","21"],"SignClose":["20","20"]},
            {"DoorNo":"10","deviceNo":["184","185"],"SignOpen":["21","21"],"SignClose":["20","20"]},
            {"DoorNo":"11","deviceNo":["187","186"],"SignOpen":["21","21"],"SignClose":["20","20"]},
        ]]]>
    </DoorOneToMany>
    <!--
        NotUsingBolArea        非即产满框位。                瓶盖的入库堆叠位,翻斗机出库线边位
        UsingBolArea        即产满框位                    这个翻斗机配置就行了
        NotUsingEmpty        非即产空框位,空框堆叠位    翻斗机入库堆叠位,瓶盖的出库线边位
        UsingEmpty            即产空框位。                这个瓶盖配置就行了
    -->
    <BOLArea>
        <![CDATA[[
            {"DeviceName":"无菌瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":2},
            {"DeviceName":"水盖瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":3},
            {"DeviceName":"水盖翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":4},
            {"DeviceName":"无菌翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":6},
            {"DeviceName":"水线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10},
        ]]]>
    </BOLArea>
    <!--
        
        -->
    <!-- 下线位置配置。   从上到下分排,从左到右 分列 -->
    <!-- 下线位置配置。
{"address":"10.140.3.185","deviceName":"550翻斗机","deviceNo":["","10"],"location":["SGFDJ-1"],"deviceType":6,"enable":1},
{"address":"10.140.3.186","deviceName":"5L翻斗机","deviceNo":["","11"],"location":["SXFDJ-1"],"deviceType":6,"enable":1},
    {"address":"10.140.3.190","deviceName":"门plc5","deviceNo":["12"],"location":[],"deviceType":1,"enable":1},从上到下分排,从左到右 分列 -->
    <!--
        1-1号无菌2号无菌3号无菌
        2 - 1号水盖
@@ -140,35 +187,84 @@
    ]]]>
    </inStockCacheBit>-->
    <!--
    agv小车的取放点位
    Location:货位编码
    StartBit:作为起点时的站点
    EndBit:作为终点时的站点
    -->
    <MoreSites>
        <![CDATA[[
            {"Location":"JCJYKK-1P-1L-1C","StartBit":178,"EndBit":1335},
            {"Location":"JCJYKK-1P-2L-1C","StartBit":175,"EndBit":1336},
            {"Location":"JCJYMK-1P-1L-1C","StartBit":184,"EndBit":1333},
            {"Location":"JCJYMK-1P-2L-1C","StartBit":181,"EndBit":1334},
            {"Location":"JCJYMK-1P-3L-1C","StartBit":1372,"EndBit":1418},
            {"Location":"JCJYMK-1P-4L-1C","StartBit":1374,"EndBit":1419},
            {"Location":"接驳区&BACK","StartBit":1374,"EndBit":1419},
            {"Location":"JCJYKK1-1","StartBit":3372,"EndBit":3372},
            {"Location":"JCJYKK2-1","StartBit":3370,"EndBit":3370},
            {"Location":"JCJYKK3-1","StartBit":3367,"EndBit":3367},
            {"Location":"JCJYKK1-4","StartBit":3368,"EndBit":3368},
            {"Location":"550JCJYMK1-1","StartBit":1425,"EndBit":1424},
            {"Location":"550JCJYMK2-1","StartBit":1426,"EndBit":1423},
            {"Location":"550JCJYMK3-1","StartBit":1478,"EndBit":1477},
            {"Location":"550JCJYMK4-1","StartBit":3506,"EndBit":3505},
            {"Location":"5LJCJYMK1-1","StartBit":1488,"EndBit":1487},
            {"Location":"5LJCJYMK2-1","StartBit":1489,"EndBit":1486},
            {"Location":"5LJCJYMK3-1","StartBit":1335,"EndBit":178},
            {"Location":"5LJCJYMK4-1","StartBit":1336,"EndBit":1528},
            {"Location":"SXJCJY1-1","StartBit":3485,"EndBit":3484},
            {"Location":"SXJCJY2-1","StartBit":3482,"EndBit":3481},
            {"Location":"SXJCJY3-1","StartBit":3483,"EndBit":3480},
            {"Location":"SXJCJY4-1","StartBit":3487,"EndBit":3486},
            {"Location":"SIXJCJY1-1","StartBit":3471,"EndBit":3470},
            {"Location":"SIXJCJY2-1","StartBit":3469,"EndBit":3468},
            {"Location":"SIXJCJY3-1","StartBit":3466,"EndBit":3465},
            {"Location":"QXZXZZQ1-1","StartBit":5450,"EndBit":5523},
            {"Location":"QXZXZZQ1-2","StartBit":5455,"EndBit":5524},
            {"Location":"QXZXZZQ1-3","StartBit":5454,"EndBit":5525},
            {"Location":"QXZXZZQ1-4","StartBit":5453,"EndBit":5526},
            {"Location":"QXZXZZQ1-5","StartBit":5452,"EndBit":5527},
            {"Location":"QXZXZZQ1-6","StartBit":5451,"EndBit":5528},
            {"Location":"QXZXZZQ1-7","StartBit":5463,"EndBit":5529},
            {"Location":"QXZXZZQ1-8","StartBit":5464,"EndBit":5530},
            {"Location":"QXZXZZQ2-1","StartBit":5497,"EndBit":5562},
            {"Location":"QXZXZZQ2-2","StartBit":5502,"EndBit":5561},
            {"Location":"QXZXZZQ2-3","StartBit":5501,"EndBit":5560},
            {"Location":"QXZXZZQ2-4","StartBit":5500,"EndBit":5559},
            {"Location":"QXZXZZQ2-5","StartBit":5499,"EndBit":5558},
            {"Location":"QXZXZZQ2-6","StartBit":5498,"EndBit":5557},
            {"Location":"QXZXZZQ2-7","StartBit":5503,"EndBit":5556},
            {"Location":"QXZXZZQ2-8","StartBit":5504,"EndBit":5555},
            {"Location":"QXZXZZQ3-1","StartBit":5506,"EndBit":5570},
            {"Location":"QXZXZZQ3-2","StartBit":5511,"EndBit":5569},
            {"Location":"QXZXZZQ3-3","StartBit":5510,"EndBit":5568},
            {"Location":"QXZXZZQ3-4","StartBit":5509,"EndBit":5567},
            {"Location":"QXZXZZQ3-5","StartBit":5508,"EndBit":5566},
            {"Location":"QXZXZZQ3-6","StartBit":5507,"EndBit":5565},
            {"Location":"QXZXZZQ3-7","StartBit":5512,"EndBit":5564},
            {"Location":"QXZXZZQ3-8","StartBit":5513,"EndBit":5563},
            {"Location":"QXZXZZQ4-1","StartBit":5515,"EndBit":5578},
            {"Location":"QXZXZZQ4-2","StartBit":5520,"EndBit":5577},
            {"Location":"QXZXZZQ4-3","StartBit":5519,"EndBit":5576},
            {"Location":"QXZXZZQ4-4","StartBit":5518,"EndBit":5575},
            {"Location":"QXZXZZQ4-5","StartBit":5517,"EndBit":5574},
            {"Location":"QXZXZZQ4-6","StartBit":5516,"EndBit":5573},
            {"Location":"QXZXZZQ4-7","StartBit":5521,"EndBit":5572},
            {"Location":"QXZXZZQ4-8","StartBit":5522,"EndBit":5571},
            {"Location":"WJBQJBQ1-1&BACK","StartBit":7445,"EndBit":7443},
            {"Location":"WJBQJBQ2-1&BACK","StartBit":7446,"EndBit":7444},
        ]]]>
    </MoreSites>
    <!--配置 即产 空/满 库区,非即产库 空/满 区
    1.即产满
    2.即产空
    3 非即产满
    4.非即产空
    <!--
    {"DeviceName":"4L5L线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10},
    -->
    <AreaSet>
        <BOLArea>
        <![CDATA[[
            {"Area":"JCJYKK","AreaType":2},
                    {"DeviceName":"一号无菌盖机","NotUsingBolArea":"","UsingBolArea":"XQX3JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX3WJGJCJYKK","deviceType":2},
                    {"DeviceName":"二号无菌盖机","NotUsingBolArea":"","UsingBolArea":"XQX4JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX3WJGJCJYKK","deviceType":2},
                    {"DeviceName":"QX3无菌盖翻斗机","NotUsingBolArea":"QX3QX4MKRK","UsingBolArea":"XQX3JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX34WJGJCJYKK","deviceType":6},
                    {"DeviceName":"QX4无菌盖翻斗机","NotUsingBolArea":"QX3QX4MKRK","UsingBolArea":"XQX4JCMKRK","NotUsingEmpty":"PGKKCK","UsingEmpty":"QX34WJGJCJYKK","deviceType":6},
                    {"DeviceName":"水盖机","NotUsingBolArea":"SGHRCW","UsingBolArea":"SGJCJYMK","NotUsingEmpty":"PGKKCK","UsingEmpty":"SGJCJYKK","deviceType":3},
                    {"DeviceName":"瓶盖550翻斗机","NotUsingBolArea":"SGHCW","UsingBolArea":"SGJCJYMK","NotUsingEmpty":"SGKKHRCW","UsingEmpty":"SGJCJYKK","deviceType":4},
                    {"DeviceName":"瓶盖5L翻斗机","NotUsingBolArea":"SGRGHCW","UsingBolArea":"","NotUsingEmpty":"SGKKHRCW","UsingEmpty":"","deviceType":10},
        ]]]>
    </AreaSet>
    </BOLArea>
</Custom>
HH.WCS.QingXiNongfu/settings1.xml
New file
@@ -0,0 +1,174 @@
<?xml version="1.0" encoding="utf-8" ?>
<Custom>
    <HostToAgvServerUrl>http://192.168.1.146:9988/HostToAGV.cgi</HostToAgvServerUrl>
    <OITcpServerUrl>http://127.0.0.1:5102</OITcpServerUrl>
    <SqlServer>Data Source=192.168.1.137;Initial Catalog=OIMobox;User ID=sa;Password=Am123123</SqlServer>
    <AgvSqlServer></AgvSqlServer>
    <FuleServerUrl>http://127.0.0.1:5102</FuleServerUrl>
    <repoNo>仓库编码</repoNo>
    <!--胚盖上报-->
    <MesServerUrl>http://127.0.0.1:5102</MesServerUrl>
    <factoryCode>工厂编号</factoryCode>
    <fromSystem>来源系统:MOBOX</fromSystem>
    <securityKey></securityKey>
    <tokenfrom></tokenfrom>
    <FactoryCode>工厂编码</FactoryCode>
    <TaskReportUrl>http://127.0.0.1:6666</TaskReportUrl>
    <TaskReportKey></TaskReportKey>
    <FactoryName>工厂名称</FactoryName>
    <OneSign>唯一标识</OneSign>
    <!--plc信息,deviceType=1 自动门      deviceType=2 瓶盖机-无菌盖     deviceType=3 瓶盖机-水盖      deviceType=4 翻斗机(水盖)       deviceType=5 翻斗机(无菌盖 v1/v2)  deviceType=6 翻斗机(无菌盖 v6)  deviceType=7 翻斗机(无菌盖 v8)
     {"address":"10.122.160.35","deviceName":"1号无菌盖机","deviceNo":[],"location":["YLWJG1005","YLWJG1006"],"deviceType":2,"enable":0},
    {"address":"10.122.160.36","deviceName":"2号无菌盖机","deviceNo":[],"location":["YLWJG1003","YLWJG1004"],"deviceType":2,"enable":0},
    {"address":"10.122.160.37","deviceName":"3号无菌盖机","deviceNo":[],"location":["YLWJG1001","YLWJG1002"],"deviceType":2,"enable":0},
    {"address":"192.168.1.87","deviceName":"1号水盖机","deviceNo":[],"location":["SGJNB5","SGJNB6"],"deviceType":3,"enable":1},
    {"address":"10.122.160.39","deviceName":"2号水盖机","deviceNo":[],"location":["SGJNB3","SGJNB4"],"deviceType":3,"enable":0},
    {"address":"10.122.160.40","deviceName":"3号水盖机","deviceNo":[],"location":["SGJNB7","SGJNB8"],"deviceType":3,"enable":0},
    {"address":"10.122.160.41","deviceName":"4号水盖机","deviceNo":[],"location":["SGJNB1","SGJNB2"],"deviceType":3,"enable":0},
    {"address":"10.122.160.42","deviceName":"V1/V2","deviceNo":["","13"],"location":["FDJ5469"],"deviceType":5,"enable":1},
    {"address":"10.122.160.43","deviceName":"V3/V7","deviceNo":["","14"],"location":["FDJ5457"],"deviceType":4,"enable":1},
    {"address":"127.0.0.1","deviceName":"V6","deviceNo":["","15"],"location":["FDJ5458"],"deviceType":6,"enable":1},
    {"address":"10.122.160.46","deviceName":"V8","deviceNo":["","16"],"location":["CCC3"],"deviceType":7,"enable":0},
    {"address":"10.122.160.45","deviceName":"V4/V5","deviceNo":["","door1"],"location":["FDJ5459"],"deviceType":4,"enable":0},
    {"address":"10.122.160.30","deviceName":"门plc1","deviceNo":["1","2"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.122.160.31","deviceName":"门plc2","deviceNo":["4","3"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.122.160.32","deviceName":"门plc3","deviceNo":["7","6","8","5"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.122.160.33","deviceName":"门plc4","deviceNo":["9","10"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.122.160.34","deviceName":"门plc5","deviceNo":["11","12"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.162","deviceName":"550","deviceNo":["1"],"location":["CX-2","CX-1"],"deviceType":9,"enable":1},
      瓶坯入库区
      taskPri 默认值60 -->
    <!--
    1 门(独立门)
    2 无菌盖
    3 水盖
    4 水盖翻斗机    入库堆叠,人工解。 出库从出库位出到线边    空框进人工区,
    5 瓶坯翻斗机
    6 无菌翻斗机    正常出入库流程  堆叠,入库,出线边        空框进人工区,
    8 瓶坯
    9 水线 成品
    10 水线翻斗机    人工放线边                                空框进人工区,
    11 提升机 电梯机
    -->
    <deviceInfo>
        <![CDATA[
    [
    {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"550","deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1},
    {"address":"10.140.3.163","deviceName":"注塑机","FuLeLineNo":"注塑机","deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.161","deviceName":"翻斗机","FuLeLineNo":"翻斗机","deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
    {"address":"10.140.3.162","deviceName":"门plc1","deviceNo":["1"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.169","deviceName":"5L550","FuLeLineNo":"5L550","deviceNo":[],"location":["5LCX-3","5LCX-2","5LCX-1"],"areaPriy":["QX-02","QX-03","QX-04","QX-05"],"deviceType":9,"enable":1},
    {"address":"10.140.3.165","deviceName":"5L注塑机","FuLeLineNo":"5L注塑机","deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
    {"address":"10.140.3.167","deviceName":"5L翻斗机","FuLeLineNo":"5L翻斗机","deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1},
    {"address":"10.140.3.155","deviceName":"门plc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1},
    {"address":"10.140.3.155","deviceName":"一楼搬2楼","deviceNo":[],"location":["踢踢踢"],"deviceType":11,"enable":1},
    {"address":"10.140.3.196","deviceName":"门plc12","deviceNo":["6"],"location":[""],"deviceType":1,"enable":1},
    {"address":"192.168.1.142","deviceName":"T1提升机","deviceNo":[""],"location":["YWLT1TSJ"],"areaPriy":["YWLT1TSJCD"],"deviceType":13,"enable":1},
    {"address":"192.168.10.86","deviceName":"T2提升机","deviceNo":[""],"location":["YWLSXBQTSJ"],"areaPriy":[],"deviceType":13,"enable":1},
    ]]]>
    </deviceInfo>
    <!--
    DoorNo 上报的门号。 184,185都定的门号10
    deviceNo  ,给184,185 自己定2个门号。写这里。
    SignOpen    开门信号。 与deviceNo 1:1 对应
    SignClose    关门信号。 与deviceNo 1:1 对应
    185 门号15
    184,186,187 自定义
    -->
    <DoorOneToMany>
        <![CDATA[[
            {"DoorNo":"10","deviceNo":["184","15"],"SignOpen":["21","21"],"SignClose":["20","20"]},
            {"DoorNo":"11","deviceNo":["187","186"],"SignOpen":["21","21"],"SignClose":["20","20"]},
        ]]]>
    </DoorOneToMany>
    <!--
        NotUsingBolArea        非即产满框位。                瓶盖的入库堆叠位,翻斗机出库线边位
        UsingBolArea        即产满框位                    这个翻斗机配置就行了
        NotUsingEmpty        非即产空框位,空框堆叠位    翻斗机入库堆叠位,瓶盖的出库线边位
        UsingEmpty            即产空框位。                这个瓶盖配置就行了
    -->
    <BOLArea>
        <![CDATA[[
            {"DeviceName":"无菌瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":2},
            {"DeviceName":"水盖瓶盖机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":3},
            {"DeviceName":"水盖翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":4},
            {"DeviceName":"无菌翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":6},
            {"DeviceName":"水线翻斗机","NotUsingBolArea":"F即产线边位area","UsingBolArea":"即产线边位area",NotUsingEmpty":"非即产空框堆叠位","UsingEmpty":"即产线边空框位area","deviceType":10},
        ]]]>
    </BOLArea>
    <!--
        -->
    <!-- 下线位置配置。   从上到下分排,从左到右 分列 -->
    <!--
        1-1号无菌2号无菌3号无菌
        2 - 1号水盖
        3-下线空框出库位
        34-下线空框位 - 出库缓存。
        4-下线空框入库位
        5-即产满框水盖
        6-即产满框无菌盖
        7-即产空框
        8-废料
        9-上线即产满无菌
        10-上线即产满水盖
        11-入库空
        12-即产空
        13-出库满水盖
        14-出库满无菌
    -->
    <!--<inStockCacheBit>
        <![CDATA[
    [
    {"location":"","locationType":1,"deviceName":"1号瓶坯"}
    ]]]>
    </inStockCacheBit>-->
    <!--
    agv小车的取放点位
    Location:货位编码
    StartBit:作为起点时的站点
    EndBit:作为终点时的站点
    -->
    <MoreSites>
        <![CDATA[[
            {"Location":"JCJYKK-1P-1L-1C","StartBit":178,"EndBit":1335},
            {"Location":"JCJYKK-1P-2L-1C","StartBit":175,"EndBit":1336},
            {"Location":"JCJYMK-1P-1L-1C","StartBit":184,"EndBit":1333},
            {"Location":"JCJYMK-1P-2L-1C","StartBit":181,"EndBit":1334},
            {"Location":"JCJYMK-1P-3L-1C","StartBit":1372,"EndBit":1418},
            {"Location":"JCJYMK-1P-4L-1C","StartBit":1374,"EndBit":1419},
            {"Location":"接驳区&BACK","StartBit":1374,"EndBit":1419},
        ]]]>
    </MoreSites>
    <!--配置 即产 空/满 库区,非即产库 空/满 区
    1.即产满
    2.即产空
    3 非即产满
    4.非即产空
    -->
    <AreaSet>
        <![CDATA[[
            {"Area":"JCJYKK","AreaType":2},
        ]]]>
    </AreaSet>
</Custom>
HH.WCS.QingXiNongfu/wms/WCSModel.cs
@@ -276,6 +276,7 @@
        /// 弃用, 改为记录上次库区-  
        /// </summary>
        public string TagOver { get; internal set; } = "";
        public DateTime? TagOverTime { get; internal set; }
        public string S_BQ_TRAY_TYPE { get; internal set; } = "";
        /// <summary>