|
@@ -16,6 +16,8 @@ using System.Threading.Tasks;
|
|
|
using System.Windows.Forms;
|
|
|
using HEIDENHAIN.body;
|
|
|
using System.Net.NetworkInformation;
|
|
|
+using System.Diagnostics.PerformanceData;
|
|
|
+using Newtonsoft.Json.Linq;
|
|
|
|
|
|
namespace HEIDENHAIN
|
|
|
{
|
|
@@ -168,7 +170,15 @@ namespace HEIDENHAIN
|
|
|
//取设备对应的状态
|
|
|
m_ControlState = deviceList.Where(m => m.Key == hdhBody.MachineName).FirstOrDefault().Value;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ // ping 不通则位离线状态
|
|
|
+ Ping pingSender = new Ping();
|
|
|
+ PingReply reply = pingSender.Send(hdhBody.ServerUrl,500);
|
|
|
+ if (reply.Status != IPStatus.Success)
|
|
|
+ {
|
|
|
+ m_ControlState = DNC_STATE.DNC_STATE_NOT_INITIALIZED;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
if (m_ControlState != null && m_ControlState.ToString() == "DNC_STATE_MACHINE_IS_AVAILABLE")
|
|
|
{
|
|
@@ -303,6 +313,7 @@ namespace HEIDENHAIN
|
|
|
IJHDataEntry2List ToolLines = ToolTable.GetChildList();
|
|
|
int ToolLinesCount = ToolLines.Count >= 50 ? 50 : ToolLines.Count;
|
|
|
//int ToolLinesCount = ToolLines.Count;
|
|
|
+
|
|
|
for (int i = 0; i < ToolLinesCount; i++)
|
|
|
{
|
|
|
ToolLine = ToolLines[i];
|
|
@@ -334,6 +345,79 @@ namespace HEIDENHAIN
|
|
|
}
|
|
|
//获取海德汉的刀具寿命信息
|
|
|
responseBody.toolsInfo = JsonConvert.SerializeObject(toolsList.Distinct().ToList());
|
|
|
+
|
|
|
+ } else if (hdhBody.Type == ActionTypeEnum.ReadAndWriteTool.ToString()) {
|
|
|
+
|
|
|
+ //机外对刀仪数据
|
|
|
+ JObject jsonObject = JObject.Parse(hdhBody.CutterData);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ JHDataAccess dataAccess = Machine.GetInterface(HeidenhainDNCLib.DNC_INTERFACE_OBJECT.DNC_INTERFACE_JHDATAACCESS);
|
|
|
+ dataAccess.SetAccessMode(DNC_ACCESS_MODE.DNC_ACCESS_MODE_TABLEDATAACCESS, "");
|
|
|
+
|
|
|
+ /*刀具表数据修改*/
|
|
|
+ //刀具表查询语句
|
|
|
+ string ToolColumnNamesAccessor = @"\TABLE\TOOL\T\"+ jsonObject.GetValue("cutterT");
|
|
|
+ //刀具表数据
|
|
|
+ IJHDataEntry2 ToolTable = dataAccess.GetDataEntry2(ToolColumnNamesAccessor, DNC_DATA_UNIT_SELECT.DNC_DATA_UNIT_SELECT_METRIC, false);
|
|
|
+ // 获取字段列表
|
|
|
+ IJHDataEntry2List ToolLines = ToolTable.GetChildList();
|
|
|
+
|
|
|
+
|
|
|
+ //设置刀具名
|
|
|
+ ToolLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterName"), false);
|
|
|
+ //刀具长度
|
|
|
+ ToolLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterZl"), false);
|
|
|
+ //刀具半径
|
|
|
+ ToolLines[3].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterXl"), false);
|
|
|
+ //刀具寿命
|
|
|
+ ToolLines[11].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterTime2"), false);
|
|
|
+ //刀具类型
|
|
|
+ ToolLines[13].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterTypDnc"), false);
|
|
|
+ //PLC状态
|
|
|
+ ToolLines[15].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterPlcBit"), false);
|
|
|
+ //刀具使用寿命,不允许吧超过该值
|
|
|
+ ToolLines[45].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterOverTime"), false);
|
|
|
+
|
|
|
+ /*车刀表数据设置更新*/
|
|
|
+ //车刀表数据查询语句
|
|
|
+ string CheDaoColumnNamesAccessor = @"\TABLE\TOOLTURN\T\" + jsonObject.GetValue("cutterT");
|
|
|
+ // 查询表数据
|
|
|
+ IJHDataEntry2 CheDaoTable = dataAccess.GetDataEntry2(CheDaoColumnNamesAccessor, DNC_DATA_UNIT_SELECT.DNC_DATA_UNIT_SELECT_METRIC, false);
|
|
|
+ // 获取字段列表
|
|
|
+ IJHDataEntry2List CheDaoLines = CheDaoTable.GetChildList();
|
|
|
+
|
|
|
+ // 设置刀具名
|
|
|
+ CheDaoLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterName"), false);
|
|
|
+ // 设置刀具长度
|
|
|
+ CheDaoLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterZl"), false);
|
|
|
+ // 车刀X方向半径
|
|
|
+ CheDaoLines[3].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterXl"), false);
|
|
|
+ // 车刀方向
|
|
|
+ CheDaoLines[10].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterTo"), false);
|
|
|
+ // 主轴定向角
|
|
|
+ CheDaoLines[11].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterOri"), false);
|
|
|
+ // 设置车刀类型
|
|
|
+ CheDaoLines[17].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterTypDncSub"), false);
|
|
|
+
|
|
|
+
|
|
|
+ /*刀位表数据设置更新*/
|
|
|
+ //刀位表数据查询语句
|
|
|
+ string DaoWeiColumnNamesAccessor = @"\TABLE\TOOL_P\P\" + jsonObject.GetValue("cutterP");
|
|
|
+ // 查询表数据
|
|
|
+ IJHDataEntry2 DaoWeiTable = dataAccess.GetDataEntry2(DaoWeiColumnNamesAccessor, DNC_DATA_UNIT_SELECT.DNC_DATA_UNIT_SELECT_METRIC, false);
|
|
|
+ // 获取字段列表
|
|
|
+ IJHDataEntry2List DaoWeiLines = DaoWeiTable.GetChildList();
|
|
|
+
|
|
|
+ // 设置刀号
|
|
|
+ DaoWeiLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterT"), false);
|
|
|
+
|
|
|
+ // 设置刀具名
|
|
|
+ DaoWeiLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterName"), false);
|
|
|
+
|
|
|
+ responseBody.msg = "数据设置成功";
|
|
|
+ responseBody.result = true;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -351,13 +435,15 @@ namespace HEIDENHAIN
|
|
|
{
|
|
|
YG.Log.Instance.WriteLogAdd($"海德汉响应异常--->>" + opcex.Message);
|
|
|
AddList(DateTime.Now.ToString(), "POST", request.Url.ToString(), opcex.Message);
|
|
|
+ responseBody.result = false;
|
|
|
+ responseBody.msg = opcex.Message;
|
|
|
//发生异常,清空数组,重新连接
|
|
|
deviceList = new Dictionary<string, DNC_STATE>();
|
|
|
machineList = new Dictionary<string, JHMachineInProcess>();
|
|
|
}
|
|
|
finally {
|
|
|
|
|
|
- AddList(DateTime.Now.ToString(), "POST", hdhBody.ServerUrl + ":响应数据:" + responseBody.toolsInfo, responseBody.result ? "OK" : "失败:" + m_ControlState != null ? m_ControlState.ToString() : "");
|
|
|
+ AddList(DateTime.Now.ToString(), "POST", hdhBody.ServerUrl + ":响应数据:" + responseBody.toolsInfo, responseBody.result ? "OK,消息消费成功" : "失败,消息消费失败" + m_ControlState != null ? m_ControlState.ToString() : "");
|
|
|
|
|
|
response.ContentType = "application/json;charset=UTF-8";
|
|
|
response.ContentEncoding = Encoding.UTF8;
|