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 } }