You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
5.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 PlcArmRecipeFunc
{
static OperateResult connect = null;
/// <summary>
/// 胶臂配方下发
/// </summary>
/// <returns></returns>
public static bool ArmRecipeToPlc(List<MJsonRPArmInfo> rpArmInfoList)
{
bool result = false;
if (rpArmInfoList != null)
{
int armCount = rpArmInfoList.Count;
if (armCount > 0)
{
int addrRpArm = 260;
int addrLoc1 = 500;
int addrLoc2 = 502;
int addrSpeed = 504;
int addrInjectGlueNum = 506;
int addrHeadPressDown = 508;
for (int i = 0; i < armCount; i++)
{
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + (addrRpArm + i * 10), (short)rpArmInfoList[i].f_arm_plc_no);
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + (addrLoc1 + i * 10), Convert.ToInt32(rpArmInfoList[i].f_loc01 * 100));
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + (addrLoc2 + i * 10), Convert.ToInt32(rpArmInfoList[i].f_loc02 * 100));
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + (addrSpeed + i * 10), Convert.ToInt32(rpArmInfoList[i].f_speed * 10));
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + (addrInjectGlueNum + i * 10), (short)rpArmInfoList[i].f_inject_glue_num);
short value = PlcCommon.DeltaTcpNetClient01.ReadInt16("D" + (addrHeadPressDown + i * 10)).Content;
char[] chResults = BitConvert.ToFullBinaryChars(value);
chResults[15] = Convert.ToChar(rpArmInfoList[i].f_head_press_down + '0');
// 涂胶
if (rpArmInfoList[i].f_coating == 1)
{
chResults[14] = '1';
}
connect = PlcCommon.DeltaTcpNetClient01.Write("D" + (addrHeadPressDown + i * 10), BitConvert.CharsToShort(chResults));
}
}
}
if (connect.IsSuccess)
{
result = true;
}
else
{
result = false;
}
return result;
}
/// <summary>
/// 通道胶臂配方下发
/// </summary>
/// <param name="trackNo">通道号。1:通道12:通道2</param>
/// <param name="rpArmInfoList">胶臂信息列表</param>
/// <returns></returns>
public static bool ArmRecipeToPlc(int trackNo,List<MJsonRPArmInfo> rpArmInfoList)
{
bool result = false;
DeltaTcpNet client = null;
if (trackNo == 1)
{
client = PlcCommon.DeltaTcpNetClient01;
}
else if (trackNo == 2)
{
client = PlcCommon.DeltaTcpNetClient02;
}
if (client != null)
{
if (rpArmInfoList != null)
{
int armCount = rpArmInfoList.Count;
if (armCount > 0)
{
//int addrRpArm = 260;
int addrLoc1 = 500;
int addrLoc2 = 502;
int addrSpeed = 504;
int addrInjectGlueNum = 506;
int addrHeadPressDown = 508;
for (int i = 0; i < armCount; i++)
{
//OperateResult connect01 = client.Write("D" + (addrRpArm + i * 10), (short)rpArmInfoList[i].f_arm_plc_no);
OperateResult connect02 = client.Write("D" + (addrLoc1 + i * 10), Convert.ToInt32(Convert.ToDouble(rpArmInfoList[i].f_loc01 * 100) / 0.6));
OperateResult connect03 = client.Write("D" + (addrLoc2 + i * 10), Convert.ToInt32(rpArmInfoList[i].f_loc02 * 100));
OperateResult connect04 = client.Write("D" + (addrSpeed + i * 10), Convert.ToInt32(rpArmInfoList[i].f_speed));
OperateResult connect05 = client.Write("D" + (addrInjectGlueNum + i * 10), (short)rpArmInfoList[i].f_inject_glue_num);
short value = client.ReadInt16("D" + (addrHeadPressDown + i * 10)).Content;
char[] chResults = BitConvert.ToFullBinaryChars(value);
chResults[15] = Convert.ToChar(rpArmInfoList[i].f_head_press_down + '0');
// 涂胶
if (rpArmInfoList[i].f_coating == 1)
{
chResults[14] = '1';
}
OperateResult connect06 = client.Write("D" + (addrHeadPressDown + i * 10), BitConvert.CharsToShort(chResults));
result = /*connect01.IsSuccess &&*/ connect02.IsSuccess && connect03.IsSuccess && connect04.IsSuccess && connect05.IsSuccess && connect06.IsSuccess;
}
}
}
}
return result;
}
}
}