凌凌壹 发表于 2020-5-8 10:29

C#编写上位机界面

工具 VS2019博图 V16 (300PLC) 语言c#
界面功能:通讯 ,读写,简单加了一曲线图。
关于:PID整定(机缘巧合下一个学弟要做个小项目,我就试了试,比较简单后期慢慢更新。)
没有实物(实物太贵现阶段是没办法直棱起来的)只能做测试用。(有大佬有实物的的话可以帮忙做测试,小弟在此先谢过了。)
付百度云连接:链接: https://pan.baidu.com/s/16qA8WFRfLG8n3Vay9S37rQ 提取码: tfpt

百度云链接: 提取码: tfpt

付部分程序:
       #region 初始化
      public Form1()
      {
            InitializeComponent();

            CheckForIllegalCrossThreadCalls = false;

            this.realTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            timerClock.Start();


            this.buttonConnect.Enabled = false;
            this.buttonDisconnect.Enabled = false;
            this.groupBox2.Enabled = false;
            this.groupBox3.Enabled = false;
      }
      //界面初始化
      private void Form1_Load(object sender, EventArgs e)
      {
            this.comboBoxPLCType.SelectedIndex = -1;
      }
      //初始化图表
      private void userCurve1_Load(object sender, EventArgs e)
      {
            userCurve1.SetLeftCurve("A", new float, Color.Tomato);
            userCurve1.SetLeftCurve("B", new float, Color.Blue);
      }
      //时钟
      private void timerClock_Tick(object sender, EventArgs e)
      {
            this.realTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
      }
      #endregion

      #region 事件
      //连接按钮
      private void buttonConnect_Click(object sender, EventArgs e)
      {
            RequiredFieldValidator();
            try
            {
                if (siemensPLCSelected != SiemensPLCS.S200Smart)
                {
                  siemensTcpNet.Rack = byte.Parse(this.textBoxRack.Text);
                  siemensTcpNet.Slot = byte.Parse(this.textBoxSlot.Text);
                }
                OperateResult connect = siemensTcpNet.ConnectServer();
                if (connect.IsSuccess)
                {
                  this.connectTips.Text = "设备连接成功:已连接至IP:"
                                                      + this.textBoxPLCIP.Text.Trim() + "的"
                                                      + this.comboBoxPLCType.Text.Trim()
                                                      + "PLC设备";
                  this.connectTips.ForeColor = Color.Green;
                  Connect_Load();
                }
                else
                {
                  this.connectTips.Text = "设备连接失败:未连接至IP:"
                                                            + this.textBoxPLCIP.Text.Trim() + "的"
                                                            + this.comboBoxPLCType.Text.Trim()
                                                            + "PLC设备";
                  this.connectTips.ForeColor = Color.Red;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
      }

      //连接初始化
      private void Connect_Load()
      {
            //界面使能
            this.groupBox2.Enabled = true;
            this.groupBox3.Enabled = true;
            this.buttonDisconnect.Enabled = true;
            this.buttonConnect.Enabled = false;
            //创建线程
            th = new Thread(DataRefresh);
            th.IsBackground = true;
            th.Start();
            //计数时钟
            countTimer.Start();
      }

      //断开连接
      private void buttonDisconnect_Click(object sender, EventArgs e)
      {
            OperateResult ConnectClose = siemensTcpNet.ConnectClose();
            if (ConnectClose.IsSuccess)
            {
                //连接使能,断开关闭
                buttonConnect.Enabled = true;
                buttonDisconnect.Enabled = false;
                this.groupBox2.Enabled = false;
                this.groupBox3.Enabled = false;
                //提示字符串
                this.connectTips.Text = "设备已断开连接";
                this.connectTips.ForeColor = Color.Red;
                //计数时钟
                countTimer.Stop();
                //线程
                th.Abort();
            }
      }
      #endregion

凌凌壹 发表于 2020-5-10 11:18

xzn107 发表于 2020-5-9 13:31
拿博图的仿真测试就行了哦,模拟测试可以的哈,楼主的HslCommunication.dll是哪搞来的啊

这个主要是测试通讯的,这个.dll也是网上找到的。连接仿真器时中间还有一个软件这样才能建立起来PLC与上位机的通讯。

凌凌壹 发表于 2020-5-12 15:35

sbhd516 发表于 2020-5-10 21:26
HSL 已经拿了专利了。 这样搞不太好。我用S7NET 做 ,一样可以

但是这个是开源的呀,vs自带的s7.net也是可以的。

凌凌壹 发表于 2020-5-8 11:56

vrvree 发表于 2020-5-8 11:16
用心讨论,共获提升!

一起进步

bsjasd 发表于 2020-5-8 12:15

东西不错,学习下

凌凌壹 发表于 2020-5-8 13:06

bsjasd 发表于 2020-5-8 12:15
东西不错,学习下

请指教,我也是新手。

jondn1992 发表于 2020-5-8 16:05

你好请问使用这个plcsim 软件就可以读到plc的值了吗

人云亦云 发表于 2020-5-8 22:06

支持一下,正在学习这方面知识

凌凌壹 发表于 2020-5-9 08:06

人云亦云 发表于 2020-5-8 22:06
支持一下,正在学习这方面知识

一起学习。

304775988 发表于 2020-5-9 08:18

这个代码还要实物测试喔,的确有难度呢

xzn107 发表于 2020-5-9 13:31

拿博图的仿真测试就行了哦,模拟测试可以的哈,楼主的HslCommunication.dll是哪搞来的啊:eee
页: [1] 2
查看完整版本: C#编写上位机界面