public static bool ClearRecordSingle(int master, int dct) { bool result = false; try { string send = PLC_Tcp_CP.Get16String(master, 2) + Order_Record_Write_Master + PLC_Tcp_CP.Get16String(dct, 2) + "00"; string response; int err; string errStr; int num = 0; do { num++; bool b = SendPLC_DPJ_485(send, new StackTrace().GetFrame(0).GetMethod().ToString(), out response, out err, out errStr); if (b) { result = true; break; } else if (err != 3) { result = false; //csLog.WriteLog(errStr); break; } } while (err == 3 && num < 3); } catch (Exception ex) { csLog.WriteLog(ex.Message); } return(result); }
public static bool DCTMoveDownSingle(int master, int dct, int time) { bool result = false; try { string send = PLC_Tcp_CP.Get16String(master, 2) + Order_DCT_Master + PLC_Tcp_CP.Get16String(dct, 2) + PLC_Tcp_CP.Get16String(time / 10, 2) + PLC_Tcp_CP.Get16String(Config.Mac_C.DelayTime_Record / 10, 2) + PLC_Tcp_CP.Get16String(Config.Mac_C.StopTime_Record / 10, 2); string response; int err; string errStr; int num = 0; do { num++; bool b = SendPLC_DPJ_485(send, new StackTrace().GetFrame(0).GetMethod().ToString(), out response, out err, out errStr); if (b) { result = true; break; } else if (err != 3) { result = false; //csLog.WriteLog(errStr); break; } } while (err == 3 && num < 3); } catch (Exception ex) { csMsg.ShowWarning(ex.Message, true); } return(result); }
const int Speed_Manual_Baffle_Lift = 504; //D-2 public static void SetSpeeds() { string speed = ""; string send = ""; string response; //速度 speed = PLC_Tcp_CP.Get16String(int.Parse(Config.Mac_C.Speed_Auto_Baffle_Belt), 8); send = RegDMW + PLC_Tcp_CP.GetAdrD_1000(Speed_Auto_Baffle_Belt) + "0002" + "04" + speed.Substring(4, 4) + speed.Substring(0, 4); if (!SendPLC(send, "传送带挡板自动速度", out response)) { return; } speed = PLC_Tcp_CP.Get16String(int.Parse(Config.Mac_C.Speed_Manual_Baffle_Belt), 8); send = RegDMW + PLC_Tcp_CP.GetAdrD_1000(Speed_Manual_Baffle_Belt) + "0002" + "04" + speed.Substring(4, 4) + speed.Substring(0, 4); if (!SendPLC(send, "传送带挡板手动速度", out response)) { return; } speed = PLC_Tcp_CP.Get16String(int.Parse(Config.Mac_C.Speed_Auto_Baffle_Lift), 8); send = RegDMW + PLC_Tcp_CP.GetAdrD_1000(Speed_Auto_Baffle_Lift) + "0002" + "04" + speed.Substring(4, 4) + speed.Substring(0, 4); if (!SendPLC(send, "出药斗挡板自动速度", out response)) { return; } speed = PLC_Tcp_CP.Get16String(int.Parse(Config.Mac_C.Speed_Manual_Baffle_Lift), 8); send = RegDMW + PLC_Tcp_CP.GetAdrD_1000(Speed_Manual_Baffle_Lift) + "0002" + "04" + speed.Substring(4, 4) + speed.Substring(0, 4); if (!SendPLC(send, "出药斗挡板手动速度", out response)) { return; } }
const int BaffleAutoMovePulse_Down_Lift_On = 13; //M-1 public static void BaffleAutoMoveByPulse_Down_Lift(int pulse) { string s = PLC_Tcp_CP.Get16String(pulse, 8); string send = RegDMW + PLC_Tcp_CP.GetAdrD_1000(BaffleAutoMovePulse_Down_Lift) + "0002" + "04" + s.Substring(4, 4) + s.Substring(0, 4); string response; if (SendPLC(send, "挡板自动运行脉冲", out response)) { send = RegMSW + PLC_Tcp_CP.GetAdrM(BaffleAutoMovePulse_Down_Lift_On) + "FF00"; SendPLC(send, "挡板自动运行使能", out response); } }
static bool SendPLC_DPJ_485(string send, string mark, out string response, out int err, out string errStr) { bool result = false; err = 0; errStr = ""; response = ""; //添加起始符 send = PLC_Tcp_CP.Get16String(send.Length / 2 + 1, 2) + send; send += GetFCS(send); send = BeginString + send + EndString; try { while (DPJIsBusy) { Thread.Sleep(50); } DPJIsBusy = true; spDPJ.DiscardInBuffer(); spDPJ.DiscardOutBuffer(); //写入串口 byte[] buffer_send = PLC_Tcp_CP.GetBytes(send); spDPJ.Write(buffer_send, 0, buffer_send.Length); DateTime begin = DateTime.Now; int m = 0, n = 0; do { Thread.Sleep(50); m = spDPJ.BytesToRead; Thread.Sleep(50); n = spDPJ.BytesToRead; }while ((m == 0 || m < n) && DateTime.Now <= begin.AddMilliseconds(1000)); if (DateTime.Now > begin.AddMilliseconds(1000)) { errStr = "通讯超时"; //记录错误信息 string msg = mark + ":" + errStr; csLog.WriteLog(msg); } if (m > 0) { byte[] buffer_response = new byte[m]; spDPJ.Read(buffer_response, 0, m); response = PLC_Tcp_CP.GetString(buffer_response); } DPJIsBusy = false; if (CheckResponse(response, out err, out errStr)) { result = true; } else { //记录错误信息 string msg = response + "---" + mark + ":" + errStr; csLog.WriteLog(msg); } } catch (Exception ex) { DPJIsBusy = false; //记录错误信息 string msg = response + "---" + mark + ":" + ex.Message; csLog.WriteLog(msg); } return(result); }