谭子健
级别: 正式会员
精华主题: 0
发帖数量: 21 个
工控威望: 61 点
下载积分: 69 分
在线时间: 20(小时)
注册时间: 2024-12-10
最后登录: 2025-01-10
查看谭子健的 主题 / 回贴
楼主  发表于: 昨天
图片:
简单写了个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()//创建连接PLC方法
        {
            try
            {
                Myplc = new Plc(CpuType.S71500, IP, 0, 1);//实例化PLC对象
            }
            catch { MessageBox.Show("连接失败!"); }
        }
        public Form1()
        {
            InitializeComponent();
            Connect();//调用连接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) 多发点Cshape上位机资料
  • B站账号 :atanboy
    hezhen880924
    级别: 略有小成
    精华主题: 0
    发帖数量: 168 个
    工控威望: 294 点
    下载积分: 878 分
    在线时间: 615(小时)
    注册时间: 2013-01-08
    最后登录: 2025-01-11
    查看hezhen880924的 主题 / 回贴
    1楼  发表于: 昨天
    哈哈,做个单机软件看看,软件部我都看不上,总在走人。现在做软件这么不稳定,一个项目接口对接换几个人。
    [ 此帖被hezhen880924在2025-01-10 08:57重新编辑 ]
    蔡147258
    级别: 正式会员
    精华主题: 0
    发帖数量: 9 个
    工控威望: 70 点
    下载积分: 112 分
    在线时间: 63(小时)
    注册时间: 2024-04-13
    最后登录: 2025-01-11
    查看蔡147258的 主题 / 回贴
    2楼  发表于: 昨天