/// <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);
            }
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
 public Capture(string pathLocal, ref ActUtlType PLC)
 {
     InitializeComponent();
     plcFX3G                = PLC;
     _pathLocal             = pathLocal;
     newThread              = new Thread(runCamera);
     newThread.IsBackground = true;
     newThread.Start();
 }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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();
        }
Example #8
0
        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);
        }
Example #12
0
        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);
            }
        }
Example #14
0
        /// <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);
        }
Example #15
0
        /// <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();
        }
Example #17
0
        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");
        }
Example #18
0
 /// <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);
         }
     }
 }
Example #19
0
 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);
 }
Example #21
0
        /// <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();
                }
            }
        }