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

221 lines
5.8 KiB
C#

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 System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mesnac.Compressor.Entity;
namespace PLCManager
{
public class PlcHandler
{
PlcOperation plc;
public EventHandler Savedata;
public PlcHandler()
{
plc = new PlcOperation();
}
/// <summary>
///// 保存历史数据
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//private void SavePlcData(object sender, ReadEventArgs e)
//{
// //保存数据
// //获取要取的数据
// if (e.Data.ContainsKey(WorkStation.Instance.DataName))
// {
// var objectarray = (object[])e.Data[WorkStation.Instance.DataName];
// if (Savedata != null)
// Savedata(objectarray,null);
// }
//}
//返回数据
public float[] ReadPLCPara(string block, int len)
{
return plc.ReadBlockToFloat(block,len);
}
/// <summary>
/// 开始工作
/// </summary>
/// <param name="key"></param>
public void startWork(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.startwork,1,false);
}
/// <summary>
/// 重投放行工作
/// </summary>
/// <param name="key"></param>
public void RestartGO(string key)
{
plc.writePLCbybit(key, (int)PlcWriteByte.ReStartGo, 1, false);
}
/// <summary>
/// NG放行
/// </summary>
/// <param name="key"></param>
public void NGRelease(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.NGGO,1,false);
}
/// <summary>
/// 工作完成放行信号
/// </summary>
/// <param name="key"></param>
public void OKRelease(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.HaveWorked,1,false);
}
/// <summary>
/// 条码扫描完成
/// </summary>
/// <param name="key"></param>
public void HaveScan(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.BarcodeScan,1,false);
}
public void BarcodeToPlc(int key,int num)
{
object[] buff = new object[1];
buff[0] = num;
plc.WriteByWord(key, buff);
}
public void BarcodeToPlc(string key, int num)
{
object[] buff = new object[1];
buff[0] = num;
plc.WriteByWord(key, buff);
}
/// <summary>
/// 更换机种
/// 机种字段一共占两个字num代表第几位是1
/// plc中每位1代表一个机种
/// </summary>
/// <param name="key"></param>
/// <param name="num"></param>
public void ChangeMachine(string key, int num)
{
//object[] buff = new object[2];
//int shift = num - 1;
//if (shift > 15)
//{
// shift = shift - 15;
// buff[0] = 0;
// buff[1] = 1 >> shift;
//}
//else
//{
// buff[0] = 1 >> shift;
// buff[1] = 0;
//}
object[] buff = new object[1];
buff[0] = num;
plc.WriteByWord(key, buff);
}
/// <summary>
/// 无上一工位信息报警
/// </summary>
/// <param name="key"></param>
public void Alarm(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.NullProduct,1,false);
}
/// <summary>
/// 字符串发送完成
/// </summary>
/// <param name="key"></param>
public void BarcordSend(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.BarcodeSend,1,false);
}
public int GetBarcode(string key)
{
int [] value;
PlcData.Instance.PlcRead(key,out value);
if (value.Length > 0)
{
return value[0];
}
else
{
return 0;
}
}
/// <summary>
/// NG拿取提示
/// </summary>
/// <param name="key"></param>
public void NGTakeAway(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.NGTakeAway,1,false);
}
/// <summary>
///换线NG品报警
/// </summary>
/// <param name="key"></param>
public void ChangeError(string key)
{
plc.writePLCbybit(key, (int)PlcWriteByte.ChangeLine, 1, false);
}
public void Reset(string key)
{
object[] buff=new object[1];
buff[0]=0;
plc.WriteByWord(key, buff);
}
/// <summary>
/// 告诉PLCOKNG
/// </summary>
/// <param name="key"></param>
public void writeOKNG(string key,int value)
{
object[] buff = new object[1];
buff[0] = value;
plc.WriteByWord(key, buff);
}
}
public enum PlcWriteByte
{
//允许作业
startwork=0,
//Ng放行地址
NGGO=1,
//作业完成放行信号
HaveWorked=2,
//扫码完成信号
BarcodeScan=3,
//无工位信息报警地址
NullProduct=4,
//字符串发送完成信号
BarcodeSend=5,
//重投完成放行信号
ReStartGo=6,
//Ng拿取提示
NGTakeAway=7,
//换线NG品报警
ChangeLine=8
}
}