示例#1
0
        private void Initialize()
        {
            if (opc.Connect("localhost", "Takebishi.dxp"))
            {
                chart1.ChartAreas[0].AxisY.ScaleView.Zoom(0, 10);
                dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor;
                dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor;
                ReadValues();
                totalCount = data.Count;
                dataGridView1.DataSource = data;
                nextTemp    = Convert.ToDouble(dataGridView1.Rows[0].Cells[1].Value);
                compTemp    = (currentTemp > nextTemp) ? -10 : 5;
                currentTemp = 0;
                count       = -1;
                point_Plot("");
                perform_Calc();
                for (count = 0; count < totalCount; count++)
                {
                    if (Convert.ToDouble(dataGridView1.Rows[count].Cells[2].Value) != 0)
                    {
                        //first value
                        currentTemp = Convert.ToDouble(dataGridView1.Rows[count].Cells[1].Value);
                        point_Plot("Start");

                        //plot whole the next step
                        string unit = dataGridView1.Rows[count].Cells[3].Value.ToString();
                        currentTime = currentTime + (toHour(Convert.ToDouble(dataGridView1.Rows[count].Cells[2].Value), unit.Equals("秒") ? 3600 : unit.Equals("分") ? 60 : 1));
                        point_Plot("End");

                        //search for next value
                        count++;
                        for (; count < totalCount; count++)
                        {
                            if (Convert.ToInt32(dataGridView1.Rows[count].Cells[2].Value) != 0)
                            {
                                nextTemp = Convert.ToDouble(dataGridView1.Rows[count].Cells[1].Value);
                                compTemp = (currentTemp > nextTemp) ? -10 : 5;
                                count--;
                                break;
                            }
                        }

                        //perform calculation
                        perform_Calc();
                    }
                    continue;
                }
                chart1.ChartAreas[0].AxisX.Maximum = Math.Ceiling(currentTime);

                //double min = data.Min(x => x.温度);
                //double max = data.Max(x => x.温度);
                //chart1.ChartAreas[0].AxisY.ScaleView.Zoom(min, max);

                //double offset = (max - min) * 0.1;
                //chart1.ChartAreas[0].AxisY.ScaleView.Zoom(min-offset, max+offset);
                chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
            }
        }
示例#2
0
 private void btnConnect_Click(object sender, EventArgs e)
 {
     if (opc.Connect(txtNode.Text, cmbServerList.Text))
     {
         btnListRefresh.Enabled = false;
         btnDisconnect.Enabled  = true;
         btnConnect.Enabled     = false;
     }
 }
示例#3
0
        // ロード時OPCサーバーリストを更新する
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                btnConnect.Enabled    = true;
                btnDisconnect.Enabled = false;

                if (opc.Connect(txtNode.Text, cmbServerList.Text))
                {
                    btnListRefresh.Enabled = false;
                    btnDisconnect.Enabled  = true;
                    btnConnect.Enabled     = false;
                }
                else
                {
                    DataHelper.ErrorLog("OPC connect() failed in Load()");
                }
            }
            catch (Exception ex)
            {
                // Log Error
                DataHelper.ErrorLog(ex.Message);
            }
        }
示例#4
0
        private void btnConnect_Click(object sender, EventArgs e)
        {
            try
            {
                if (opc.Connect(txtNode.Text, cmbServerList.Text))
                {
                    btnListRefresh.Enabled = false;
                    btnDisconnect.Enabled  = true;
                    btnConnect.Enabled     = false;

                    for (int num = 0; num < reg.Length; num++)
                    {
                        string[] target = new string[] { reg[num] };
                        CheckPlcStatus(target, num);
                    }
                }
            }
            catch (Exception ex)
            {
                checkBox3.Enabled = false;
                MessageBox.Show(ex.ToString());
            }
        }
示例#5
0
        private void Initialize()
        {
            if (opc.Connect("localhost", "Takebishi.dxp"))
            {
                chart1.ChartAreas[0].AxisY.ScaleView.Zoom(0, 10);
                dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor;
                dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor;
                ReadValues();
                totalCount = data.Count;
                dataGridView1.DataSource = data;
                for (; count < totalCount; count++)
                {
                    if (Convert.ToDouble(dataGridView1.Rows[count].Cells[2].Value) != 0)
                    {
                        //first value
                        currentTemp = Convert.ToDouble(dataGridView1.Rows[count].Cells[1].Value);
                        point_Plot("Start");

                        //plot whole the next step
                        string unit = dataGridView1.Rows[count].Cells[3].Value.ToString();
                        currentTime = currentTime + (toHour(Convert.ToDouble(dataGridView1.Rows[count].Cells[2].Value), unit.Equals("second")? 3600: unit.Equals("minute")? 60 : 1));
                        point_Plot("End");

                        //search for next value
                        count++;
                        for (; count < totalCount; count++)
                        {
                            if (Convert.ToInt32(dataGridView1.Rows[count].Cells[2].Value) != 0)
                            {
                                nextTemp = Convert.ToDouble(dataGridView1.Rows[count].Cells[1].Value);
                                compTemp = (currentTemp > nextTemp) ? -10 : 5;
                                count--;
                                break;
                            }
                        }

                        //perform calculation
                        for (; currentTemp != nextTemp;)
                        {
                            if (currentTemp >= nextTemp && compTemp == 5)
                            {
                                if (currentTemp != nextTemp)
                                {
                                    not_Enough();
                                    currentTemp += 1;
                                    for (; currentTemp <= nextTemp; currentTemp = currentTemp + 1)
                                    {
                                        double add_Not_Enough = 0.2;
                                        add_Whole(add_Not_Enough);
                                    }
                                    currentTemp -= 1;
                                    nextTemp     = nextTemp + decimalValue;
                                    currentTemp  = (decimalValue != 0) ? currentTemp + 0.1 : currentTemp;
                                    for (; currentTemp < nextTemp; currentTemp = currentTemp + 0.1)
                                    {
                                        double add_Not_Enough = 0.02;
                                        add_Whole(add_Not_Enough);
                                    }
                                }
                                currentTime += 0.02;
                                break;
                            }
                            else if (currentTemp <= nextTemp && compTemp == -10)
                            {
                                if (currentTemp != nextTemp)
                                {
                                    not_Enough();
                                    currentTemp -= 1;
                                    for (; currentTemp >= nextTemp; currentTemp = currentTemp - 1)
                                    {
                                        double add_Not_Enough = 0.1;
                                        add_Whole(add_Not_Enough);
                                    }
                                    currentTemp += 1;
                                    nextTemp     = nextTemp + decimalValue;
                                    currentTemp  = (decimalValue != 0) ? currentTemp - 0.1 : currentTemp;
                                    for (; currentTemp > nextTemp; currentTemp = currentTemp - 0.1)
                                    {
                                        double add_Not_Enough = 0.01;
                                        add_Whole(add_Not_Enough);
                                    }
                                }
                                currentTime += 0.01;
                                break;
                            }
                            else
                            {
                                chart1.Series[lineName].Points.AddXY(currentTime, currentTemp);
                                currentTemp = currentTemp + compTemp;
                                currentTime = currentTime + 1;
                                point++;
                                continue;
                            }
                        }
                    }
                    continue;
                }
                chart1.ChartAreas[0].AxisX.Maximum = Math.Ceiling(currentTime);

                //double min = data.Min(x => x.温度);
                //double max = data.Max(x => x.温度);
                //chart1.ChartAreas[0].AxisY.ScaleView.Zoom(min, max);

                //double offset = (max - min) * 0.1;
                //chart1.ChartAreas[0].AxisY.ScaleView.Zoom(min-offset, max+offset);
                chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
            }
        }
示例#6
0
        public void CheckButtonStatus(UserControl1 btn, Button btnVal) //, Button btnVal
        {
            if (opc.Connect(txtNode.Text, cmbServerList.Text))
            {
                btnListRefresh.Enabled = false;
                btnDisconnect.Enabled  = true;
                btnConnect.Enabled     = false;
                string[] target = new string[2];
                // string[] target = new string[];
                for (int l = 0; l < btn.BtnUcs.Length; l++)
                {
                    target[0] = btn.AmAddrTextbox;
                    target[1] = btn.OpAddrTextbox;

                    object[]             val;
                    int[]                nErrorArray;
                    short[]              wQualityArray;
                    OpcRcw.Da.FILETIME[] fTimeArray;

                    if (opc.Read(target, out val, out wQualityArray, out fTimeArray, out nErrorArray) == true)
                    {
                        string regValue;
                        regValue = ReadValCopy(val[1], 0, nErrorArray[0]);
                        if (btnVal == btn.OpButton)
                        {
                            if (regValue == "0")
                            {
                                btn.OPStatTextbox = "None";
                            }
                            else if (regValue == "1")
                            {
                                btn.OPStatTextbox = "Prohibition";
                            }
                            else if (regValue == "2")
                            {
                                btn.OPStatTextbox = "Maintenance";
                            }
                            else if (regValue == "3")
                            {
                                btn.OPStatTextbox = "Broke";
                            }
                            else
                            {
                                return;
                            }
                        }
                        else
                        {
                            if (regValue == "True" || regValue == "-1")
                            {
                                btnVal.Text = "On";
                            }
                            else if (regValue == "False" || regValue == "0")
                            {
                                btnVal.Text = "Off";
                            }
                        }
                    }
                }
                ;
                //ButtonUserControl.UserControl1 parent = new ButtonUserControl.UserControl1(opc);
                //parent.ButtonEvent(opc);
            }
        }