|
|
@@ -20,6 +20,8 @@ using Dongke.IBOSS.PRD.WCF.DataModels;
|
|
|
using Oracle.ManagedDataAccess.Client;
|
|
|
using System.Collections.Generic;
|
|
|
using Dongke.IBOSS.PRD.Service.BarcodePrintService;
|
|
|
+using Curtain.Net.Sockets.PLC;
|
|
|
+using Curtain.Net.Sockets.PLC.Model.Siemens;
|
|
|
|
|
|
namespace Dongke.IBOSS.PRD.Service.SystemModuleLogic
|
|
|
{
|
|
|
@@ -3687,6 +3689,139 @@ namespace Dongke.IBOSS.PRD.Service.SystemModuleLogic
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public static DataSet GetPLCParameter(string PlcName)
|
|
|
+ {
|
|
|
+ IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ string sqlString = "SELECT PLCID,IP,PORT FROM TP_MST_PLC WHERE PLCNAME = :PLCNAME";
|
|
|
+
|
|
|
+ Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
|
|
|
+ {
|
|
|
+ new Oracle.ManagedDataAccess.Client.OracleParameter(":PLCNAME",PlcName)
|
|
|
+ };
|
|
|
+ oracleConn.Open();
|
|
|
+ DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
|
|
|
+ oracleConn.Close();
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ if (oracleConn.ConnState == ConnectionState.Open)
|
|
|
+ {
|
|
|
+ oracleConn.Close();
|
|
|
+ }
|
|
|
+ throw ex;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static DataSet GetGodsParameter(string BarCode)
|
|
|
+ {
|
|
|
+ IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ string sqlString = @"SELECT TPGL.GROUTINGLINECODE,GOODSMODEL,TMGT.GOODSTYPENAME,GOODSSPECIFICATION FROM TP_PM_GROUTINGDAILYDETAIL TPGL
|
|
|
+ LEFT JOIN TP_MST_GOODS TMG ON TPGL.GOODSCODE = TMG.GOODSCODE
|
|
|
+ LEFT JOIN TP_MST_GOODSTYPE TMGT ON TMGT.GOODSTYPEID = TMG.GOODSTYPEID
|
|
|
+ WHERE TPGL.BARCODE = :BARCODE";
|
|
|
+
|
|
|
+ Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
|
|
|
+ {
|
|
|
+ new Oracle.ManagedDataAccess.Client.OracleParameter(":BARCODE",BarCode)
|
|
|
+ };
|
|
|
+ oracleConn.Open();
|
|
|
+ DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
|
|
|
+ oracleConn.Close();
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ if (oracleConn.ConnState == ConnectionState.Open)
|
|
|
+ {
|
|
|
+ oracleConn.Close();
|
|
|
+ }
|
|
|
+ throw ex;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static ServiceResultEntity AddPlcGood(string Plcid,string BarCode)
|
|
|
+ {
|
|
|
+ IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ //获取plc信息
|
|
|
+ string sqlString = @"SELECT IP,PORT FROM TP_MST_PLC WHERE PLCID = :PLCID";
|
|
|
+
|
|
|
+ Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
|
|
|
+ {
|
|
|
+ new Oracle.ManagedDataAccess.Client.OracleParameter(":PLCID",Plcid)
|
|
|
+ };
|
|
|
+ oracleConn.Open();
|
|
|
+ DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
|
|
|
+
|
|
|
+ if (result.Tables[0] == null || result.Tables[0].Rows.Count == 0)
|
|
|
+ {
|
|
|
+ return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Other, Message = "PLC传输错误" };
|
|
|
+ }
|
|
|
+ //获取产品信息
|
|
|
+ string sqlString1 = @"SELECT TPGL.GROUTINGLINECODE,GOODSMODEL,TMGT.GOODSTYPENAME,GOODSSPECIFICATION FROM TP_PM_GROUTINGDAILYDETAIL TPGL
|
|
|
+ LEFT JOIN TP_MST_GOODS TMG ON TPGL.GOODSCODE = TMG.GOODSCODE
|
|
|
+ LEFT JOIN TP_MST_GOODSTYPE TMGT ON TMGT.GOODSTYPEID = TMG.GOODSTYPEID
|
|
|
+ WHERE TPGL.BARCODE = :BARCODE";
|
|
|
+
|
|
|
+ Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter1 = new Oracle.ManagedDataAccess.Client.OracleParameter[]
|
|
|
+ {
|
|
|
+ new Oracle.ManagedDataAccess.Client.OracleParameter(":BARCODE",BarCode)
|
|
|
+ };
|
|
|
+
|
|
|
+ DataSet result1 = oracleConn.GetSqlResultToDs(sqlString1, oracleParameter1);
|
|
|
+ string ip = result.Tables[0].Rows[0]["IP"].ToString();
|
|
|
+ int port = Convert.ToInt32(result.Tables[0].Rows[0]["PORT"]);
|
|
|
+ string GROUTINGLINECODE = result1.Tables[0].Rows[0]["GROUTINGLINECODE"].ToString();
|
|
|
+ string GOODSMODEL = result1.Tables[0].Rows[0]["GOODSMODEL"].ToString();
|
|
|
+ string GOODSTYPENAME = result1.Tables[0].Rows[0]["GOODSTYPENAME"].ToString();
|
|
|
+ string GOODSSPECIFICATION = result1.Tables[0].Rows[0]["GOODSSPECIFICATION"].ToString();
|
|
|
+ //写入PLC
|
|
|
+ using (SocketClient<SiemensS7_1200Model> plc = new SocketClient<SiemensS7_1200Model>())
|
|
|
+ {
|
|
|
+ //测试静态数据 测试成功
|
|
|
+ //plc.Connect(ip, port);
|
|
|
+ //plc.Write<string>("D", "102.2", "2020070101");
|
|
|
+ //plc.Write<short>("D", "102.14", Convert.ToInt16(10));
|
|
|
+
|
|
|
+ //手动写
|
|
|
+ plc.Connect(ip, port);
|
|
|
+ plc.Write<string>("D", "102.2", GROUTINGLINECODE);
|
|
|
+ plc.Write<string>("D", "102.4", GOODSMODEL);
|
|
|
+ plc.Write<string>("D", "102.6", GOODSTYPENAME);
|
|
|
+ plc.Write<string>("D", "102.8", GOODSSPECIFICATION);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //写入操作成功日志
|
|
|
+ string plcParaStr = "BarCode:"+ BarCode+ " GROUTINGLINECODE:"+ GROUTINGLINECODE + " GOODSMODEL:" + GOODSMODEL +
|
|
|
+ " GOODSTYPENAME:" + GOODSTYPENAME + " GOODSSPECIFICATION:"+ GOODSSPECIFICATION;
|
|
|
+
|
|
|
+ Curtain.Log.Logger.Debug("PLC写入成功!" + plcParaStr);
|
|
|
+
|
|
|
+ //PLC操作成功
|
|
|
+ return new ServiceResultEntity()
|
|
|
+ {
|
|
|
+ Status = Constant.ServiceResultStatus.Success,
|
|
|
+ Message = "" //一定不可以有值,为空时才是提交成功
|
|
|
+ };
|
|
|
+ oracleConn.Close();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ if (oracleConn.ConnState == ConnectionState.Open)
|
|
|
+ {
|
|
|
+ oracleConn.Close();
|
|
|
+ }
|
|
|
+ throw ex;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 获取半成品缺陷位置管理的全部数据
|
|
|
/// </summary>
|