コード例 #1
0
        /// <summary>
        /// 根据PLC类型读取--文本输入类
        /// </summary>
        /// <param name="pLC"></param>
        /// <param name="numerical_Class"></param>
        /// <param name="skinTextBox_Reform"></param>
        /// <returns></returns>
        public void Refresh(TextBox_base textBox)//根据PLC类型读取--文本输入类
        {
            switch (textBox.Plc)
            {
            case PLC.Mitsubishi:
                IPLC_interface mitsubishi = new Mitsubishi_realize();                                                          //实例化接口--实现三菱在线访问
                if (mitsubishi.PLC_ready)                                                                                      //PLC是否准备完成
                {
                    string data = mitsubishi.PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值
                    TextBox_state(textBox, data);                                                                              //填充文本数据--自动判断用户设定的小数点位置--多余的异常
                }
                break;

            case PLC.Siemens:
                IPLC_interface Siemens = new Siemens_realize();                                                             //实例化接口--实现西门子在线访问
                if (Siemens.PLC_ready)                                                                                      //PLC是否准备完成
                {
                    string data = Siemens.PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值
                    TextBox_state(textBox, data);                                                                           //填充文本数据--自动判断用户设定的小数点位置--多余的异常
                }
                break;

            case PLC.MODBUS_TCP:
                MODBUD_TCP MODBUD_TCP = new MODBUD_TCP();   //实例化接口--实现MODBUS TCP
                if (MODBUD_TCP.IPLC_interface_PLC_ready)    //PLC是否准备完成
                {
                    //由于modbus_TCP读写状态不同 读输出 写输入模式
                    string data = MODBUD_TCP.IPLC_interface_PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值
                    TextBox_state(textBox, data);                                                                                             //填充文本数据--自动判断用户设定的小数点位置--多余的异常
                }
                break;
            }
        }
コード例 #2
0
 /// <summary>
 /// 填充文本数据
 /// </summary>
 /// <param name="skinTextBox_Reform"></param>
 /// <param name="numerical_Class"></param>
 /// <param name="Data"></param>
 private void TextBox_state(TextBox_base textBox, string Data)//填充文本数据
 {
     try
     {
         int Inde = Data.IndexOf('.');                                //搜索数据是否有小数点
         if (Inde > 0 || Inde >= textBox.Decimal_Below)               //判断是否有小数点
         {
             int In = Data.Length - 1 - textBox.Decimal_Below - Inde; //实现原理--先获取数据长度-后减1-小数点-在减去设定数-获取小数点位置
             for (int i = 0; i < In; i++)
             {
                 Data = Data.Remove(Data.Length - 1, 1);                          //移除掉
             }
         }
         else
         {
             Data = complement(Data, textBox);//然后位数不够--自动补码
         }
         if (textBox.Decimal_Below < 1)
         {
             Data = Data.Replace('.', ' '); //如果用户设定没有小数点直接去除小数点
         }
         textBox.Control_Text = Data;       //直接填充数据
     }
     catch { return; }
 }
コード例 #3
0
        /// <summary>
        /// 实现浮点小数自动补码
        /// </summary>
        /// <param name="Name"></param>
        /// <param name="numerical_Class"></param>
        /// <returns></returns>
        private string complement(string Name, TextBox_base textBox) //实现浮点小数自动补码
        {
            int Inde = Name.IndexOf('.');                            //搜索数据是否有小数点

            if (Inde < 0 & textBox.Decimal_Below != 0)
            {
                Name += ".";                                       //自动补码小数点
            }
            if (textBox.Decimal_Below > 0 & Inde < 0)
            {
                for (int i = 0; i < textBox.Decimal_Below; i++)
                {
                    Name += "0";                                            //填充数据
                }
            }
            if (textBox.Decimal_Below > 0 & Inde > 0)
            {
                int In = Name.Length - 1 - Inde;
                for (int i = 0; i < textBox.Decimal_Below - In; i++)
                {
                    Name += "0";                                                 //填充数据
                }
            }
            return(Name);//返回数据
        }
コード例 #4
0
        public string plc(TextBox_base textBox)//根据PLC类型写入
        {
            switch (textBox.Plc)
            {
            case PLC.Mitsubishi:
                IPLC_interface mitsubishi = new Mitsubishi_realize();    //实例化接口--实现三菱在线访问
                if (mitsubishi.PLC_ready)
                {
                    mitsubishi.PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical);
                }
                else
                {
                    MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err");     //推出异常提示
                }
                break;

            case PLC.Siemens:
                IPLC_interface Siemens = new Siemens_realize();    //实例化接口--实现西门子在线访问
                if (Siemens.PLC_ready)
                {
                    Siemens.PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical);
                }
                else
                {
                    MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err");     //推出异常提示
                }
                break;

            case PLC.MODBUS_TCP:
                MODBUD_TCP MODBUD_TCP = new MODBUD_TCP();    //实例化接口--实现MODBUS TCP
                if (MODBUD_TCP.IPLC_interface_PLC_ready)
                {
                    MODBUD_TCP.IPLC_interface_PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical);
                }
                else
                {
                    MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err");     //推出异常提示用户
                }
                break;
            }
            return("OK_RUN");
        }
コード例 #5
0
        public List <string> plc(TextBox_base textBox, Histogram_base dataGridView, int Idx)//根据PLC类型写入
        {
            List <string> Data = new List <string>();

            switch (textBox.Plc)
            {
            case PLC.Mitsubishi:
                IPLC_interface mitsubishi = new Mitsubishi_realize();    //实例化接口--实现三菱在线访问
                if (mitsubishi.PLC_ready)
                {
                    for (int i = 0; i < Idx; i++)
                    {
                        Data.Add(mitsubishi.PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i]));
                    }
                }
                break;

            case PLC.Siemens:
                IPLC_interface Siemens = new Siemens_realize();    //实例化接口--实现西门子在线访问
                if (Siemens.PLC_ready)
                {
                    for (int i = 0; i < Idx; i++)
                    {
                        Data.Add(Siemens.PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i]));
                    }
                }
                break;

            case PLC.MODBUS_TCP:
                MODBUD_TCP MODBUD_TCP = new MODBUD_TCP();    //实例化接口--实现MODBUS TCP
                if (MODBUD_TCP.IPLC_interface_PLC_ready)
                {
                    for (int i = 0; i < Idx; i++)
                    {
                        Data.Add(MODBUD_TCP.IPLC_interface_PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i]));
                    }
                }
                break;
            }
            return(Data);
        }