譚子健
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 21 個
工控威望: 61 點
下載積分: 69 分
在線時間: 20(小時)
注冊時間: 2024-12-10
最后登錄: 2025-01-10
查看譚子健的 主題 / 回貼
樓主  發(fā)表于: 昨天
圖片:
簡單寫了個c#連接西門子PLC的小程序來練習,源代碼放在下面,可以看看


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using S7.Net;

namespace 西門子連接上位機
{
    public partial class Form1 : Form
    {
        public Plc Myplc;
        public string IP = "192.168.1.118";//PLC的IP地址
        public void Connect()//創(chuàng)建連接PLC方法
        {
            try
            {
                Myplc = new Plc(CpuType.S71500, IP, 0, 1);//實例化PLC對象
            }
            catch { MessageBox.Show("連接失!"); }
        }
        public Form1()
        {
            InitializeComponent();
            Connect();//調(diào)用連接PLC方法
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if(Myplc==null)
            {
                MessageBox.Show("連接失!");
                return;
            }
            try
            {
                Myplc.Open();//打開PLC連接
                button1.BackColor = Color.Lime;//改變按鈕1顏色為綠色
                button2.BackColor = Color.White;//改變按鈕2顏色為白色
                button1.Text = "已連接PLC";//改變按鈕1文字為已連接PLC
                label1.Text = "已連接到PLC";//改變label1文字為已連接到PLC
                label1.Visible = true;//顯示label1
                
            }
            catch { MessageBox.Show("連接失!"); }//捕獲異常
            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (Myplc == null)
            {
                MessageBox.Show("連接失敗!");//判斷PLC是否連接成功
                return;
            }
            try
            {
                Myplc.Close();//關閉PLC連接
                button2.BackColor = Color.Lime;//改變按鈕2顏色為綠色
                button1.BackColor = Color.White;//改變按鈕1顏色為白色
                button2.Text = "已斷開PLC";//改變按鈕2文字為已斷開PLC
                label1.Visible = false;//隱藏label1
            }
            catch { MessageBox.Show("斷開失!"); }//捕獲異常
            
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (Myplc == null)
            {
                MessageBox.Show("連接失!");//判斷PLC是否連接成功
                return;
            }
            try
            {
                if ((bool)Myplc.Read("DB1.DBX0.0") == false)//判斷讀取的BOOL變量對按鈕進行取反操作
                {
                    Myplc.Write("DB1.DBX0.0", 1);//寫入BOOL變量
                    button3.BackColor = Color.Lime;//改變按鈕3顏色為綠色
                }
                else if ((bool)Myplc.Read("DB1.DBX0.0") == true)
                {
                    Myplc.Write("DB1.DBX0.0", 0);//寫入BOOL變量
                    button3.BackColor = Color.White;//改變按鈕3顏色為白色
                }
                else { MessageBox.Show("讀取或寫入失敗!"); }//捕獲異常
            }
            catch { MessageBox.Show("讀取或寫入失!"); }//捕獲異常
            
            
        }
    }
}
本帖最近評分記錄:
  • 下載積分:+5(leisure) 多發(fā)點Cshape上位機資料
  • B站賬號 :atanboy
    hezhen880924
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 168 個
    工控威望: 294 點
    下載積分: 878 分
    在線時間: 615(小時)
    注冊時間: 2013-01-08
    最后登錄: 2025-01-10
    查看hezhen880924的 主題 / 回貼
    1樓  發(fā)表于: 昨天
    哈哈,做個單機軟件看看,軟件部我都看不上,總在走人。現(xiàn)在做軟件這么不穩(wěn)定,一個項目接口對接換幾個人。
    [ 此帖被hezhen880924在2025-01-10 08:57重新編輯 ]
    蔡147258
    級別: 正式會員
    精華主題: 0
    發(fā)帖數(shù)量: 9 個
    工控威望: 70 點
    下載積分: 112 分
    在線時間: 63(小時)
    注冊時間: 2024-04-13
    最后登錄: 2025-01-10
    查看蔡147258的 主題 / 回貼
    2樓  發(fā)表于: 昨天