| | |
| | | CMMLog.Debug($"WriteItemInfo:End!"); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 写入包装机物料信息 |
| | | /// </summary> |
| | | /// <param name="plcInfo"></param> |
| | | public static void WriteItemInfoTwo(Settings.PlcInfo plcInfo) |
| | | { |
| | | CMMLog.Debug($"WriteItemInfoTwo:Start!"); |
| | | |
| | | try |
| | | { |
| | | //读取【翻页】通道数据 |
| | | var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel |
| | | { |
| | | dataNum = 1, |
| | | addr = plcInfo.FyReadAddr, |
| | | host = plcInfo.ip, |
| | | port = plcInfo.port |
| | | }); |
| | | CMMLog.Debug($"WriteItemInfoTwo:读取【翻页】通道数据为:{JsonConvert.SerializeObject(result)}!"); |
| | | if (true) // result != null && result.errCode == 0 |
| | | { |
| | | // 示例:读出值为1 获取1~5编号的物料数据;读出值为2 获取6~10编号的物料数据 规则 result.result[0] * 5 - 4 起始编号 |
| | | //int startItemNo = 1; |
| | | int startItemNo = result.result[0] * 5 - 4; |
| | | CMMLog.Debug($"WriteItemInfoTwo:翻页数据为:{startItemNo}!"); |
| | | var reLocationTask = MongoDBSingleton.Instance.Find<ERPItemTable>(Query.And(Query.In("item_no", new List<MongoDB.Bson.BsonValue>() { startItemNo, startItemNo + 1, startItemNo + 2, startItemNo + 3, startItemNo + 4 })), "ERPItemTable").ToList(); |
| | | int reLocationTaskNum = reLocationTask != null ? reLocationTask.Count : 0; |
| | | CMMLog.Debug($"WriteItemInfoTwo:查询出ERP物料表数据数量为:{reLocationTaskNum}!备注:只有数量为5才会写入数据"); |
| | | if (reLocationTaskNum == 5) |
| | | { |
| | | int no = 0; |
| | | reLocationTask.ForEach(a => |
| | | { |
| | | int writeAddr = plcInfo.FyWriteAddr + no * 50; |
| | | if (no > 0) writeAddr = writeAddr + 40; |
| | | no++; |
| | | // 解析物料数据并写入 有效数据通道 50,50(产品型号-10 物料编码-15 物料名称-20 计量单位-5) |
| | | int[] num = new int[50]; |
| | | // 内存地址 0~19 协议地址 1~20 批次号 人工输入,不需要程序写入 |
| | | for (int i = 0; i <= 19; i++) num[i] = 0; |
| | | // 内存地址 20~29 协议地址 21~30 产品型号 |
| | | // HandleItemInfo(a.item_spec, 20, 29, num); |
| | | HandleItemInfoChina(a.item_spec, 0, 9, num); |
| | | CMMLog.Debug($"WriteItemInfoTwo:物料信息处理-2。处理数据:{a.item_spec},处理后数据:{JsonConvert.SerializeObject(num)}"); |
| | | // 内存地址 30~49 协议地址 31~50 物料编码 |
| | | HandleItemInfo(a.item_code, 10, 24, num); |
| | | CMMLog.Debug($"WriteItemInfoTwo:物料信息处理-2。处理数据:{a.item_code},处理后数据:{JsonConvert.SerializeObject(num)}"); |
| | | // 内存地址 50~64 协议地址 51~65 物料名称 |
| | | // HandleItemInfo(a.item_name, 50, 64, num); |
| | | HandleItemInfoChina(a.item_name, 25, 44, num);// 中文处理 |
| | | CMMLog.Debug($"WriteItemInfoTwo:物料信息处理-2。处理数据:{a.item_name},处理后数据:{JsonConvert.SerializeObject(num)}"); |
| | | // 内存地址 65~69 协议地址 66~70 计量单位 |
| | | HandleItemInfo(a.item_uom, 45, 49, num); |
| | | CMMLog.Debug($"WriteItemInfoTwo:物料信息处理-2。处理数据:{a.item_uom},处理后数据:{JsonConvert.SerializeObject(num)}"); |
| | | |
| | | CMMLog.Debug($"WriteItemInfoTwo:发送物料信息。序号:{a.item_no},ip:{plcInfo.ip},port:{plcInfo.port},写入起始地址:{writeAddr},写入数据:{JsonConvert.SerializeObject(num)}"); |
| | | |
| | | var wirteall01 = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti |
| | | { |
| | | addr = writeAddr, |
| | | host = plcInfo.ip, |
| | | port = plcInfo.port, |
| | | data = num |
| | | }); |
| | | int writeResult = wirteall01 != null ? wirteall01.errCode : 1; |
| | | CMMLog.Debug($"WriteItemInfoTwo:发送物料信息。序号:{a.item_no},写入结果:{writeResult}。ip:{plcInfo.ip},port:{plcInfo.port},写入起始地址:{writeAddr},写入数据:{JsonConvert.SerializeObject(num)}"); |
| | | }); |
| | | } |
| | | } |
| | | else CMMLog.Debug($"WriteItemInfoTwo:未读取【翻页】通道数据!"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | CMMLog.Debug($"WriteItemInfoTwo Error:{ex.Message}"); |
| | | } |
| | | |
| | | CMMLog.Debug($"WriteItemInfoTwo:End!"); |
| | | } |
| | | |
| | | public static void HandleItemInfo(string itemInfo,int startIndex, int endIndex , int[] num) |
| | | { |
| | | string data = itemInfo;// 要写入的处理后数据 |