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();
}
///
///// 保存历史数据
/////
/////
/////
//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);
}
///
/// 开始工作
///
///
public void startWork(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.startwork,1,false);
}
///
/// 重投放行工作
///
///
public void RestartGO(string key)
{
plc.writePLCbybit(key, (int)PlcWriteByte.ReStartGo, 1, false);
}
///
/// NG放行
///
///
public void NGRelease(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.NGGO,1,false);
}
///
/// 工作完成放行信号
///
///
public void OKRelease(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.HaveWorked,1,false);
}
///
/// 条码扫描完成
///
///
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);
}
///
/// 更换机种
/// 机种字段一共占两个字,num代表第几位是1
/// plc中每位1代表一个机种
///
///
///
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);
}
///
/// 无上一工位信息报警
///
///
public void Alarm(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.NullProduct,1,false);
}
///
/// 字符串发送完成
///
///
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;
}
}
///
/// NG拿取提示
///
///
public void NGTakeAway(string key)
{
plc.writePLCbybit(key,(int)PlcWriteByte.NGTakeAway,1,false);
}
///
///换线NG品报警
///
///
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);
}
///
/// 告诉PLCOKNG
///
///
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
}
}