|
|
using HslCommunication;
|
|
|
using HslCommunication.Profinet.Delta;
|
|
|
using Module.Common;
|
|
|
using Module.DB.Model;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
namespace Module.Plc.Profinet.Tool
|
|
|
{
|
|
|
public class PlcHp2RecipeFunc
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 热板2配方下发
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public static bool Hp2Recipe(MJsonRPHp2Info hp2Info)
|
|
|
{
|
|
|
bool result = false;
|
|
|
List<MJsonRPHp2SeqParam> param = null;
|
|
|
if (hp2Info != null)
|
|
|
{
|
|
|
OperateResult connect = null;
|
|
|
int addrRepNo = 280;
|
|
|
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + addrRepNo, (short)hp2Info.f_hp2_plc_no);
|
|
|
//param = hp2Info.f_hp2_seq_param_list;
|
|
|
|
|
|
int addrInterval = 800;
|
|
|
int addrTimeNum = 802;
|
|
|
int addrTemp = 820;
|
|
|
int addrN2Time = 822;
|
|
|
int addrIsN2 = 830;
|
|
|
for (int i = 0; i < 5; i++)
|
|
|
{
|
|
|
// 需要根据零位位置 计算偏移后的值 再下发
|
|
|
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + (addrInterval + (param[i].f_hp2_seq_no - 1) * 4), CalZeroPositionValue(param[i].f_hp2_interval));
|
|
|
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + (addrTimeNum + (param[i].f_hp2_seq_no - 1) * 4), Convert.ToInt16(param[i].f_hp2_time_num * 10));
|
|
|
}
|
|
|
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + addrTemp, Convert.ToInt16(hp2Info.f_hp2_temp * 10));
|
|
|
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + addrN2Time, Convert.ToInt16(hp2Info.f_hp2_n2_time * 10));
|
|
|
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + addrIsN2, (short)hp2Info.f_hp2_n2);
|
|
|
if (connect != null)
|
|
|
{
|
|
|
result = connect.IsSuccess;
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 热板2配方下发
|
|
|
/// </summary>
|
|
|
/// <param name="trackNo">通道号。1:通道1;2:通道2</param>
|
|
|
/// <param name="hp1Info">热板2配方信息</param>
|
|
|
/// <returns></returns>
|
|
|
public static bool Hp2Recipe(int trackNo, List<MRPHp2Info> hp2Info)
|
|
|
{
|
|
|
bool result = false;
|
|
|
DeltaTcpNet client = null;
|
|
|
if (trackNo == 1)
|
|
|
{
|
|
|
client = PlcCommon.DeltaTcpNetClient01;
|
|
|
}
|
|
|
else if (trackNo == 2)
|
|
|
{
|
|
|
client = PlcCommon.DeltaTcpNetClient02;
|
|
|
}
|
|
|
if (client != null)
|
|
|
{
|
|
|
//List<MJsonRPHp2SeqParam> param = null;
|
|
|
if (hp2Info != null && hp2Info.Count > 0)
|
|
|
{
|
|
|
for (int i = 0; i < hp2Info.Count; i++)
|
|
|
{
|
|
|
int iZeroPosition = client.ReadInt16("D1970").Content;
|
|
|
float zeroPosition = Convert.ToSingle(Math.Round(Convert.ToDecimal(iZeroPosition * 0.12 / 100.00), 2));
|
|
|
|
|
|
OperateResult connect = null;
|
|
|
//int addrRepNo = 280;
|
|
|
//connect = PlcCommon.DeltaTcpNetClient01.Write("D" + addrRepNo, (short)hp2Info.f_hp2_plc_no);
|
|
|
//param = hp2Info.f_hp2_seq_param_list;
|
|
|
|
|
|
int addrInterval = 800;
|
|
|
int addrTimeNum = 802;
|
|
|
int addrTemp = 820;
|
|
|
int addrN2Time = 822;
|
|
|
int addrIsN2 = 830;
|
|
|
// 需要根据零位位置 计算偏移后的值 再下发
|
|
|
connect = client.Write("D" + (addrInterval + (hp2Info[i].f_hp2_seq_no - 1) * 4), CalZeroPositionValue(zeroPosition, hp2Info[i].f_hp2_interval));
|
|
|
connect = client.Write("D" + (addrTimeNum + (hp2Info[i].f_hp2_seq_no - 1) * 4), Convert.ToInt16(hp2Info[i].f_hp2_time_num * 10));
|
|
|
|
|
|
connect = client.Write("D" + addrTemp, Convert.ToInt16(hp2Info[i].f_hp2_temp * 10));
|
|
|
connect = client.Write("D" + addrN2Time, Convert.ToInt16(hp2Info[i].f_hp2_n2_time * 10));
|
|
|
connect = client.Write("D" + addrIsN2, (short)hp2Info[i].f_hp2_n2);
|
|
|
if (connect != null)
|
|
|
{
|
|
|
result = connect.IsSuccess;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 根据零位位置计算偏移后的值
|
|
|
/// </summary>
|
|
|
public static int CalZeroPositionValue(decimal value)
|
|
|
{
|
|
|
string hp2HPZeroPosition = PlcDeviceUtils.ReadT1Hp2HPZeroPosition();
|
|
|
var zeroPosition = Convert.ToSingle(hp2HPZeroPosition);
|
|
|
|
|
|
//var zeroPosition = Convert.ToSingle(PublicParams.T1HotPlateModelInfo.hp2HPZeroPosition);
|
|
|
|
|
|
// 零位位置为零,则不需要处理
|
|
|
if (zeroPosition == 0)
|
|
|
{
|
|
|
return Convert.ToInt32(Convert.ToSingle(value) * 100 / 0.12);
|
|
|
}
|
|
|
|
|
|
return Convert.ToInt32((zeroPosition - Convert.ToSingle(value)) * 100 / 0.12);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 根据零位位置计算偏移后的值
|
|
|
/// </summary>
|
|
|
public static int CalZeroPositionValue(float zeroPosition, decimal value)
|
|
|
{
|
|
|
// 零位位置为零,则不需要处理
|
|
|
if (zeroPosition == 0)
|
|
|
{
|
|
|
return Convert.ToInt32(Convert.ToSingle(value) * 100 / 0.12);
|
|
|
}
|
|
|
|
|
|
return Convert.ToInt32((zeroPosition - Convert.ToSingle(value)) * 100 / 0.12);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|