/// <summary> /// モニタ終了ボタンクリック /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void EndButton_Click(object sender, EventArgs e) { int ret; //コントロールのメソッドの戻り値 //結果表示の消去 ClearDisplay(); try { //Close関数処理の実行 ret = ActUtlType.Close(); ShowMessage(ret); if (ret != SUCCESS) { return; } //Closeが成功した場合、LogicalStationNumberテキストボックスを有効にする。 LogicalStationNumberText.Enabled = true; this.LogicalStationNumberText.Text = ""; CPUTypeText.Text = ""; this.C0Text.Text = ""; this.Y3Text.Text = ""; this.Timer.Enabled = false; } catch (Exception exception) { MessageBox.Show(exception.Message, Name, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// GetEndDateTime /// </summary> /// <param name="seatNumber"></param> /// <returns>endDateTime</returns> static string GetEndDateTime(int seatNumber, ActUtlType actUtlType) { Dictionary <int, String[]> dict = new Dictionary <int, String[]>(); string[] str1 = { "D207", "D208", "D209", "D210", "D211", "D212" }; dict.Add(1, str1); //Console.WriteLine($"D200:{dict[seatNumber][0]}"); //Console.WriteLine($"D201:{dict[seatNumber][1]}"); //Console.WriteLine($"D202:{dict[seatNumber][2]}"); //Console.WriteLine($"D203:{dict[seatNumber][3]}"); //Console.WriteLine($"D204:{dict[seatNumber][4]}"); //Console.WriteLine($"D205:{dict[seatNumber][5]}"); int IRetYear = actUtlType.GetDevice2($"{ dict[seatNumber][0]}", out short resYear); int IRetMonth = actUtlType.GetDevice2($"{dict[seatNumber][1]}", out short resMonth); int IRetDay = actUtlType.GetDevice2($"{dict[seatNumber][2]}", out short resDay); int IRetHour = actUtlType.GetDevice2($"{dict[seatNumber][3]}", out short resHour); int IRetMin = actUtlType.GetDevice2($"{dict[seatNumber][4]}", out short resMin); int IRetSec = actUtlType.GetDevice2($"{dict[seatNumber][5]}", out short resSec); //Console.WriteLine($"resYear:{resYear}"); //Console.WriteLine($"resMonth:{resMonth}"); //Console.WriteLine($"resDay:{resDay}"); //Console.WriteLine($"resHour:{resHour}"); //Console.WriteLine($"resMin:{resMin}"); //Console.WriteLine($"resSec:{resSec}"); string endDateTime = resYear.ToString() + "-" + resMonth.ToString() + "-" + resDay.ToString() + " " + resHour.ToString() + ":" + resMin.ToString() + ":" + resSec.ToString(); return(endDateTime); }
/// <summary> /// GetLineNumber /// </summary> /// <param name="actUtlType"></param> /// <returns>resLineNum</returns> static Int16 GetLineNumber(ActUtlType actUtlType) { int IRetLineNum_Write = actUtlType.SetDevice2("D512", 1); int IRetLineNum_Read = actUtlType.GetDevice2("D512", out short resLineNum); return(resLineNum); }
public Capture(string pathLocal, ref ActUtlType PLC) { InitializeComponent(); plcFX3G = PLC; _pathLocal = pathLocal; newThread = new Thread(runCamera); newThread.IsBackground = true; newThread.Start(); }
/// <summary> /// GetWorkTime /// </summary> /// <param name="SeatNumber"></param> /// <param name="actUtlType"></param> /// <returns>resWorkTime</returns> static Int16 GetWorkTime(int SeatNumber, ActUtlType actUtlType) { Dictionary <int, String> dict = new Dictionary <int, String>(); dict.Add(1, "D220"); int IRetWorkTime = actUtlType.GetDevice2(dict[SeatNumber], out short resWorkTime); return(resWorkTime); }
/// <summary> /// GetSeatNumber /// </summary> /// <param name="seatNumber"></param> /// <param name="actUtlType"></param> /// <returns>resSeatNum</returns> static Int16 GetSeatNumber(int seatNumber, ActUtlType actUtlType) { Dictionary <int, string> dict = new Dictionary <int, string>(); dict.Add(1, "D513"); int IRetLineNum_Write = actUtlType.SetDevice(dict[seatNumber], seatNumber); int IRetLineNum_Read = actUtlType.GetDevice2(dict[seatNumber], out short resSeatNum); return(resSeatNum); }
/// <summary> /// 「RESET」ボタンクリック(X1をON->OFF) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ResetButton_Click(object sender, EventArgs e) { //X1デバイスをON int ret = ActUtlType.SetDevice2("X1", ON); Thread.Sleep(500); //X1デバイスをOFF ret = ActUtlType.SetDevice2("X1", OFF); this.C0Text.Text = ReadC0Value(); this.Y3Text.Text = ReadY3Value(); }
public wfKheho(ref ActUtlType PLC, ref SerialPort COM) : this() { plcRef = PLC; ComKheho = COM; ComKheho.DataReceived -= ProcessComMessage; ComKheho.DataReceived += ProcessComMessage; // Sent CMD Set Value Message Task.Delay(100); ComKheho.WriteLine("PRE +0\r\n"); ComKheho.Write("OUT1\r\n"); }
/// <summary> /// PLCの時刻データを取得 /// </summary> /// <returns>時刻データ文字列</returns> private string GetPLCClockData() { short year; short month; short day; short dayOfWeek; short hour; short minute; short second; ActUtlType.GetClockData(out year, out month, out day, out dayOfWeek, out hour, out minute, out second); return(year.ToString("00") + "/" + month.ToString("00") + "/" + day.ToString("00") + " " + hour.ToString("00") + ":" + minute.ToString("00") + ":" + second.ToString("00")); }
/// <summary> /// Y3デバイス値を取得 /// </summary> /// <returns>デバイス値</returns> private string ReadY3Value() { string value = ""; short deviceValue; //Y3デバイスの値を取得 int ret = ActUtlType.GetDevice2("Y3", out deviceValue); ShowMessage(ret); if (ret != SUCCESS) { return(value); } value = deviceValue.ToString(); return(value); }
/// <summary> /// C0デバイス値を取得 /// </summary> /// <returns>デバイス値</returns> private string ReadC0Value() { string value = ""; short deviceValue; //C0(CN0)デバイスの値を取得 int ret = ActUtlType.GetDevice2("C0", out deviceValue); //int ret = ActUtlType.ReadDeviceRandom2("C0", 1, out deviceValue); ShowMessage(ret); if (ret != SUCCESS) { return(value); } value = deviceValue.ToString(); return(value); }
static Dictionary <int, int[]> CurrentStartDataTime(int seatNumber, ActUtlType actUtlType) { Dictionary <int, string[]> dict = new Dictionary <int, string[]>(); Dictionary <int, int[]> dict1 = new Dictionary <int, int[]>(); string[] seat1 = { "D200", "D201", "D202", "D203", "D204", "D205" }; dict.Add(1, seat1); int IRetYear = actUtlType.GetDevice2($"{ dict[seatNumber][0]}", out short resYear); int IRetMonth = actUtlType.GetDevice2($"{dict[seatNumber][1]}", out short resMonth); int IRetDay = actUtlType.GetDevice2($"{dict[seatNumber][2]}", out short resDay); int IRetHour = actUtlType.GetDevice2($"{dict[seatNumber][3]}", out short resHour); int IRetMin = actUtlType.GetDevice2($"{dict[seatNumber][4]}", out short resMin); int IRetSec = actUtlType.GetDevice2($"{dict[seatNumber][5]}", out short resSec); int[] seat2 = { resYear, resMonth, resDay, resHour, resMin, resSec }; dict1.Add(seatNumber, seat2); return(dict1); }
/// <summary> /// 「モニタ開始」ボタンクリック /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void StartButton_Click(object sender, EventArgs e) { int logicalStationNumber; //ActUtlType用の論理局番 //モニタ表示の消去 ClearDisplay(); //Open関数処理 try { logicalStationNumber = int.Parse(this.LogicalStationNumberText.Text); //論理局番の設定 ActUtlType.ActLogicalStationNumber = logicalStationNumber; //パスワードの設定 ActUtlType.ActPassword = ""; //Open関数処理の実行 int ret = ActUtlType.Open(); ShowMessage(ret); if (ret != SUCCESS) { return; } //Openが成功した場合、LogicalStationNumberテキストボックスを無効にする。 this.LogicalStationNumberText.Enabled = false; int cpuCode; string cpuName; ret = ActUtlType.GetCpuType(out cpuName, out cpuCode); ShowMessage(ret); if (ret != SUCCESS) { return; } CPUTypeText.Text = cpuName; this.C0Text.Text = ReadC0Value(); this.Y3Text.Text = ReadY3Value(); this.Timer.Enabled = true; } catch (Exception exception) { MessageBox.Show(exception.Message, Name, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// check sensors are or not online /// </summary> /// <param name="seatNumber"></param> /// <param name="actUtlType"></param> /// <returns>isSensorExist</returns> static bool CheckSensorIsExist(int seatNumber, ActUtlType actUtlType) { // isSensorExist default is true bool isSensorExist = true; Dictionary <int, String[]> dict = new Dictionary <int, String[]>(); string[] str1 = { "D206", "D213" }; dict.Add(1, str1); int IRetFrontSensor = actUtlType.GetDevice2(dict[seatNumber][0], out short resFrontSensor); int IRetBehindSensor = actUtlType.GetDevice2(dict[seatNumber][1], out short resBehindSensor); if ((resFrontSensor == 1) || (resBehindSensor == 1)) { isSensorExist = false; } return(isSensorExist); }
/// <summary> /// Tạo mảng giá trị 0,1,2,3,4,5, 10, 20, 30, 40, ... 200 /// </summary> /// <summary> /// Tính toán giá trị hàng, cột của ô Excel, dựa trên giá trị cài đặt /// Ví dụ: Giá trị cài đặt là "A1" =>> hàng 1, cột 1 /// </summary> /// <summary> /// Chu trình lấy dữ liệu PLC, update mỗi 10ms /// </summary> private void plcCycleReadAndWriteValue() { // Khai báo kết nối đến PLC, với cổng kết nối plcStationNumber (cài đặt qua Mitsubishi Communication Setup Utility) plcFX3G = new ActUtlType(); plcFX3G.ActLogicalStationNumber = TextUtils.ToInt(_com[4].Trim()); currentPLCBit.Add("X10", false); currentPLCBit.Add("X11", false); currentPLCBit.Add("X12", false); currentPLCBit.Add("X13", false); while (true) { //CheckPlcOnlineOrNOt(); // Kiểm tra xem có đọc được dữ liệu từ PLC không ReadD100AndSaveToArray(); // Lấy dữ liệu D100 lưu vào mảng 20pt ReadX0ToX5AndProcess(); // Đọc các giá trị Input của PLC -> PC CountNumberOfPulseX0(); // Đếm xung số vòng quay ReadNewPLCButtonStatus(); // Đọc giá trị 3 nút nhấn - Chụp ảnh, Đo khe hở, Đo độ đảo Thread.Sleep(10); } }
/// <summary> /// 「COUNT UP」ボタンクリック(X3をON->OFF) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CountUpButton_Click(object sender, EventArgs e) { //X3デバイスをON int ret = ActUtlType.SetDevice2("X3", ON); ShowMessage(ret); if (ret != SUCCESS) { return; } Thread.Sleep(500); //X3デバイスをOFF ret = ActUtlType.SetDevice2("X3", OFF); ShowMessage(ret); if (ret != SUCCESS) { return; } this.C0Text.Text = ReadC0Value(); this.Y3Text.Text = ReadY3Value(); }
public wfDodaoSylvac(ref ActUtlType PLC, ref SerialPort COM1, ref SerialPort COM2, ref SerialPort COM3) : this() { plcRef = PLC; ComDodao01 = COM1; ComDodao02 = COM2; ComDodao03 = COM3; ComDodao01.DataReceived -= ProcessComMessage; ComDodao01.DataReceived += ProcessComMessage; ComDodao02.DataReceived -= ProcessComMessage; ComDodao02.DataReceived += ProcessComMessage; ComDodao03.DataReceived -= ProcessComMessage; ComDodao03.DataReceived += ProcessComMessage; // Sent CMD Set Value Message Task.Delay(100); ComDodao01.WriteLine("PRE +0\r\n"); ComDodao01.Write("OUT1\r\n"); ComDodao02.WriteLine("PRE +0\r\n"); ComDodao02.Write("OUT1\r\n"); ComDodao03.WriteLine("PRE +0\r\n"); ComDodao03.Write("OUT1\r\n"); }
/// <summary> /// 第一步 打开PLC连接 /// </summary> /// <returns></returns> public bool Open() { lock (this) { try { if (_isOpen == true) { return(true); } if (actUtlType == null) { actUtlType = new ActUtlType(); actUtlType.ActLogicalStationNumber = stationNumber; } int result = actUtlType.Open(); if (result != 0) { message = "PLC连接失败,错误代码:" + (uint)result; return(false); } else { _isOpen = true; message = "PLC连接成功"; return(true); } } catch (Exception ex) { _isOpen = false; message = "error:\n" + ex.Message; return(false); } } }
public Capture(ref ActUtlType PLC) : this("Unknow", ref PLC) { }
/// <summary> /// C0デバイスの値を書き換える /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void WriteC0Button_Click(object sender, EventArgs e) { //C0デバイスを変更 short val = short.Parse(this.C0Text.Text); int ret = ActUtlType.SetDevice2("C0", val); }
/// <summary> /// main collecting workTime from PLC and insert into DataBase /// </summary> /// <param name="args"></param> static void Main(string[] args) { // create ActUtlType object ActUtlType actUtlType = new ActUtlType(); // logicalStationNumbet actUtlType.ActLogicalStationNumber = 1; // not set password, is null actUtlType.ActPassword = ""; //List<string> workTime = new List<string>(); Dictionary <int, int[]> beforeDict = null; for (int i = 1; i <= 1; i++) { beforeDict = InitStartDataTime(i, actUtlType); } while (true) { try { int iReturnCode = actUtlType.Open(); if (iReturnCode == 0) { // Set value of i based on the quantity of seats for (int i = 1; i <= 1; i++) { Int16 lineNumber = GetLineNumber(actUtlType); Int16 seatNumber = GetSeatNumber(i, actUtlType); string startDateTime = GetStartDateTime(i, actUtlType); string endDateTime = GetEndDateTime(i, actUtlType); int workTime = GetWorkTime(i, actUtlType); bool isSensorExist = CheckSensorIsExist(i, actUtlType); Dictionary <int, int[]> currentDict = CurrentStartDataTime(i, actUtlType); if (workTime <= 0 || workTime > 3600) { continue; } if (beforeDict[i].All(currentDict[i].Contains) && (beforeDict[i].Count() == currentDict[i].Count())) { continue; } ExcueteInsertToSqlServer(lineNumber, seatNumber, startDateTime, endDateTime, workTime, isSensorExist); beforeDict[i] = currentDict[i]; } actUtlType.Close(); //System.Threading.Thread.Sleep(1000); // sleep 1s } else { Console.WriteLine("PLC connecting fail! please check wire and reconnecting"); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); Console.ReadKey(); } } }