c# 西门子 s7-1200 直连 通讯

引入 s7 通讯库。。。。。。。。。。。
​​​​​​​

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 Spectrum
{
    public partial class PlcDemo : Form
    {
        public PlcDemo()
        {
            InitializeComponent();
        }
         static Plc plc = null;

        private void button1_Click(object sender, EventArgs e)
        {
             plc = new Plc(CpuType.S71200, "192.168.1.5", 0, 0);
            plc.Open();

            if (plc.IsConnected)
            {
                MessageBox.Show("PLC连接成功", "建立连接");


            }
            else
            {
                MessageBox.Show("PLC连接失败", "建立连接");
            }
        }

        private void Plc_Load(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (plc.IsConnected == false)
            {
                MessageBox.Show("未连接PLC!", "连接提示", MessageBoxButtons.OK);//检查PLC是否连接;                
            }
            else
            {
                var TextTeme = plc.Read("DB1.DBX0.1");
                 

                textBox3.Text += "["+ DateTime.Now.ToString()+"]"+TextTeme+"\r\n";

            }

            if (false)
            {
                //Bool
                plc.Write("DB1.DBX0.0", true);
                var IsRight = plc.Read("DB1.DBX0.0");
                Console.WriteLine("DB1.DBX0.0: " + IsRight);

                //Int
                plc.Write("DB1.DBW2.0", Convert.ToInt16(1));
                int Score = (ushort)plc.Read("DB1.DBW2.0");
                Console.WriteLine("DB1.DBW2.0: " + Score);

                // Real
                plc.Write("DB1.DBD4.0", Convert.ToSingle(1.1));
                var Money = ((uint)plc.Read("DB1.DBD4.0")).ConvertToFloat();
                Console.WriteLine("DB1.DBD4.0: " + Money);

                //String写入
                var temp = Encoding.ASCII.GetBytes("Chen");   //将val字符串转换为字符数组
                var bytes = S7.Net.Types.S7String.ToByteArray("Chen", temp.Length);
                plc.WriteBytes(DataType.DataBlock, 1, 8, bytes);
                //String读取
                var reservedLength = (byte)plc.Read(DataType.DataBlock, 1, 8, VarType.Byte, 1);//获取字符串长度
                var Name = (string)plc.Read(DataType.DataBlock, 1, 8, VarType.S7String, reservedLength);//获取对应长度的字符串
                Console.WriteLine("DB1.8.0: " + Name);

                // DInt
                plc.Write("DB1.DBD264.0", Convert.ToInt32(20));
                var dIntVar = (uint)plc.Read("DB1.DBD264.0");
                Console.WriteLine("DB1.DBD264.0: " + dIntVar);

                // DWord
                plc.Write("DB1.DBD268.0", 123456);
                var dWordVar = (uint)plc.Read("DB1.DBD268.0");
                Console.WriteLine("DB1.DBD268.0: " + dWordVar);

                // Word
                plc.Write("DB1.DBD270.0", 12345678);
                var wordVar = (uint)plc.Read("DB1.DBD270.0");
                Console.WriteLine("DB1.DBD270.0: " + wordVar);

            }

           
        }

        private void button9_Click(object sender, EventArgs e)
        {
            if (textBox4.Text == "false")
            {
                plc.Write("DB1.DBX0.1", false);

            }
            if (textBox4.Text == "true")
            {
                plc.Write("DB1.DBX0.1", true);

            }
            MessageBox.Show("操作成功!");
        }

        private void button5_Click(object sender, EventArgs e)
        {

        }

        private void button10_Click(object sender, EventArgs e)
        {
            plc.Write("M30.0", true);
             //var IsRight =  plc.Read("M30.0");
            //var IsRight =  plc.Read("M30.0");
            //MessageBox.Show(IsRight.ToString());


        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值