在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例Windows系统编程 → C#winform与西门子1200、1500系列PLC通讯实例

C#winform与西门子1200、1500系列PLC通讯实例

Windows系统编程

下载此实例
  • 开发语言:C#
  • 实例大小:0.58M
  • 下载次数:288
  • 浏览次数:2926
  • 发布时间:2019-07-09
  • 实例类别:Windows系统编程
  • 发 布 人:韩星
  • 文件格式:.rar
  • 所需积分:2
 相关标签: c#WinForm winform 西门子1200 FORM ORM

实例介绍

【实例简介】

C#winform与西门子1200、1500系列PLC通讯实例

【实例截图】

from clipboard

【核心代码】

using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sharp7;

namespace CSClient
{

    public partial class MainForm : Form
    {
        private S7Client Client;
        private byte[] Buffer = new byte[65536];
        private byte[] DB_A = new byte[1024];
        private byte[] DB_B = new byte[1024];
        private byte[] DB_C = new byte[1024];

        private void ShowResult(int Result) //状态栏结果显示
        {
            // This function returns a textual explaination of the error code
            TextError.Text = Client.ErrorText(Result);
            if (Result == 0)
                TextError.Text = TextError.Text   " ("   Client.ExecutionTime.ToString()   " ms)";
        }
        public MainForm()
        {
            InitializeComponent();
            Client = new S7Client();
            if (IntPtr.Size == 4)
                this.Text = this.Text   " - Running 32 bit Code";
            else
                this.Text = this.Text   " - Running 64 bit Code";

            CBType.SelectedIndex  = 0;
            CBArea.SelectedIndex  = 3;
            CBWLen.SelectedIndex  = 1;
            CBBlock.SelectedIndex = 1;
            tabControl.Enabled = false;
        }
        private void ConnectBtn_Click(object sender, EventArgs e) //连接PLC
        {
            int Result = 1;
            int Rack = System.Convert.ToInt32(TxtRack.Text);
            int Slot = System.Convert.ToInt32(TxtSlot.Text);
            Result = Client.ConnectTo(TxtIP.Text, Rack, Slot);
            ShowResult(Result); //状态栏结果显示
            if (Result == 0)
            {
                TextError.Text = TextError.Text   " PDU Negotiated : "   Client.PduSizeNegotiated.ToString(); //状态栏结果追加文本
                TxtIP.Enabled = false;
                TxtRack.Enabled = false;
                TxtSlot.Enabled = false;
                ConnectBtn.Enabled = false;
                DisconnectBtn.Enabled = true;
                tabControl.Enabled = true;
            }
            else MessageBox.Show("连接PLC失败");
        }
        private void DisconnectBtn_Click(object sender, EventArgs e) //断开PLC连接
        {
            Client.Disconnect();
            TextError.Text = "Disconnected";
            TxtIP.Enabled = true;
            TxtRack.Enabled = true;
            TxtSlot.Enabled = true;
            ConnectBtn.Enabled = true;
            DisconnectBtn.Enabled = false;
            tabControl.Enabled = false;
        }

        private void ReadBtn_Click(object sender, EventArgs e) //读Area
        {
            ReadArea();
        }
        private void button2_Click_1(object sender, EventArgs e) //Set
        {
            int Result = Client.WriteArea(S7Consts.S7AreaCT, 0, 1, 3, S7Consts.S7WLCounter, Buffer);
            ShowResult(Result); //状态栏结果显示
        }
        private void FieldBtn_Click(object sender, EventArgs e) //Field Get
        {
            /*
                      0 Byte    8 Bit Word                     (All)
                      1 Word   16 Bit Word                     (All)
                      2 DWord  32 Bit Word                     (All)
                      3 LWord  64 Bit Word                     (S71500)
                      4 USint   8 Bit Unsigned Integer         (S71200/1500)
                      5 UInt   16 Bit Unsigned Integer         (S71200/1500)
                      6 UDInt  32 Bit Unsigned Integer         (S71200/1500)
                      7 ULint  64 Bit Unsigned Integer         (S71500)
                      8 Sint    8 Bit Signed Integer           (S71200/1500)
                      9 Int    16 Bit Signed Integer           (All)
                     10 DInt   32 Bit Signed Integer           (S71200/1500)
                     11 LInt   64 Bit Signed Integer           (S71500)
                     12 Real   32 Bit Floating point           (All)
                     13 LReal  64 Bit Floating point           (S71200/1500)
                     14 Time   32 Bit Time elapsed ms          (All)
                     15 LTime  64 Bit Time Elapsed ns          (S71500)
                     16 Date   16 Bit days from 1990/1/1       (All)
                     17 TOD    32 Bit ms elapsed from midnight (All)
                     18 DT      8 Byte Date and Time           (All)
                     19 LTOD   64 Bit time of day (ns)         (S71500)
                     20 DTL    12 Byte Date and Time Long      (S71200/1500)
                     21 LDT    64 Bit ns elapsed from 1970/1/1 (S71500)
            */
            int Pos = System.Convert.ToInt32(TxtOffset.Text);
            switch (CBType.SelectedIndex)
            {
                case 0:
                    {
                        TxtValue.Text = "16#"   System.Convert.ToString(Buffer[Pos], 16).ToUpper();
                        break;
                    }
                case 1:
                    {
                        UInt16 Word = S7.GetWordAt(Buffer, Pos);
                        TxtValue.Text = "16#"   System.Convert.ToString(Word, 16).ToUpper();
                        break;
                    }
                case 2:
                    {
                        UInt32 DWord = S7.GetDWordAt(Buffer, Pos);
                        TxtValue.Text = "16#"   System.Convert.ToString(DWord, 16).ToUpper();
                        break;
                    }
                case 3:
                    {
                        UInt64 LWord = S7.GetLWordAt(Buffer, Pos);
                        TxtValue.Text = "16#"   System.Convert.ToString((Int64)LWord, 16).ToUpper(); // <-- Convert.ToString does not handle UInt64
                        break;
                    }
                case 4:
                    {
                        UInt16 USInt = S7.GetUSIntAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(USInt);
                        break;
                    }
                case 5:
                    {
                        UInt16 UInt = S7.GetUIntAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(UInt);
                        break;
                    }
                case 6:
                    {
                        UInt32 UDInt = S7.GetDWordAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(UDInt);
                        break;
                    }
                case 7:
                    {
                        UInt64 ULInt = S7.GetLWordAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(ULInt);
                        break;
                    }
                case 8:
                    {
                        int SInt = S7.GetSIntAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(SInt);
                        break;
                    }
                case 9:
                    {
                        int S7Int = S7.GetIntAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(S7Int);
                        break;
                    }
                case 10:
                    {
                        int DInt = S7.GetDIntAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(DInt);
                        break;
                    }
                case 11:
                    {
                        Int64 LInt = S7.GetLIntAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(LInt);
                        break;
                    }
                case 12:
                    {
                        Single S7Real = S7.GetRealAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(S7Real);
                        break;
                    }
                case 13:
                    {
                        Double S7LReal = S7.GetLRealAt(Buffer, Pos);
                        TxtValue.Text = System.Convert.ToString(S7LReal);
                        break;
                    }
                case 14:
                    {
                        Int32 TimeElapsed = S7.GetDIntAt(Buffer, Pos);
                        // TIME type is a 32 signed number of ms elapsed
                        // Can be added to a DateTime or used as Value.
                        TxtValue.Text = "T#"   System.Convert.ToString(TimeElapsed)   "MS";
                        break;
                    }
                case 15:
                    {
                        Int64 TimeElapsed = S7.GetLIntAt(Buffer, Pos);
                        // LTIME type is a 64 signed number of ns elapsed
                        // Can be added (after a conversion) to a DateTime or used as Value.
                        TxtValue.Text = "LT#"   System.Convert.ToString(TimeElapsed)   "NS";
                        break;
                    }
                case 16:
                    {
                        DateTime DATE = S7.GetDateAt(Buffer, Pos);
                        TxtValue.Text = DATE.ToString("D#yyyy-MM-dd");
                        break;
                    }
                case 17:
                    {
                        DateTime TOD = S7.GetTODAt(Buffer, Pos);
                        TxtValue.Text = TOD.ToString("TOD#HH:mm:ss.fff");
                        break;
                    }
                case 18:
                    {
                        DateTime DT = S7.GetDateTimeAt(Buffer, Pos);
                        TxtValue.Text = DT.ToString("DT#yyyy-MM-dd-HH:mm:ss.fff");
                        break;
                    }
                case 19:
                    {
                        DateTime LTOD = S7.GetLTODAt(Buffer, Pos);
                        TxtValue.Text = LTOD.ToString("LTOD#HH:mm:ss.fffffff");
                        break;
                    }
                case 20:
                    {
                        DateTime DTL = S7.GetDTLAt(Buffer, Pos);
                        TxtValue.Text = DTL.ToString("DTL#yyyy-MM-dd-HH:mm:ss.fffffff");
                        break;
                    }
                case 21:
                    {
                        DateTime LDT = S7.GetLDTAt(Buffer, Pos);
                        TxtValue.Text = LDT.ToString("LDT#yyyy-MM-dd-HH:mm:ss.fffffff");
                        break;
                    }

            }
        }

        private void HexDump(TextBox DumpBox, byte[] bytes, int Size)
        {
            if (bytes == null)
                return;
            int bytesLength = Size;
            int bytesPerLine = 16;

            char[] HexChars = "0123456789ABCDEF".ToCharArray();

            int firstHexColumn =
                  8                   // 8 characters for the address
                  3;                  // 3 spaces

            int firstCharColumn = firstHexColumn
                  bytesPerLine * 3       // - 2 digit for the hexadecimal value and 1 space
                  (bytesPerLine - 1) / 8 // - 1 extra space every 8 characters from the 9th
                  2;                  // 2 spaces 

            int lineLength = firstCharColumn
                  bytesPerLine           // - characters to show the ascii value
                  Environment.NewLine.Length; // Carriage return and line feed (should normally be 2)

            char[] line = (new String(' ', lineLength - 2)   Environment.NewLine).ToCharArray();
            int expectedLines = (bytesLength   bytesPerLine - 1) / bytesPerLine;
            StringBuilder result = new StringBuilder(expectedLines * lineLength);

            for (int i = 0; i < bytesLength; i  = bytesPerLine)
            {
                line[0] = HexChars[(i >> 28) & 0xF];
                line[1] = HexChars[(i >> 24) & 0xF];
                line[2] = HexChars[(i >> 20) & 0xF];
                line[3] = HexChars[(i >> 16) & 0xF];
                line[4] = HexChars[(i >> 12) & 0xF];
                line[5] = HexChars[(i >> 8) & 0xF];
                line[6] = HexChars[(i >> 4) & 0xF];
                line[7] = HexChars[(i >> 0) & 0xF];

                int hexColumn = firstHexColumn;
                int charColumn = firstCharColumn;

                for (int j = 0; j < bytesPerLine; j  )
                {
                    if (j > 0 && (j & 7) == 0) hexColumn  ;
                    if (i   j >= bytesLength)
                    {
                        line[hexColumn] = ' ';
                        line[hexColumn   1] = ' ';
                        line[charColumn] = ' ';
                    }
                    else
                    {
                        byte b = bytes[i   j];
                        line[hexColumn] = HexChars[(b >> 4) & 0xF];
                        line[hexColumn   1] = HexChars[b & 0xF];
                        line[charColumn] = (b < 32 ? '·' : (char)b);
                    }
                    hexColumn  = 3;
                    charColumn  ;
                }
                result.Append(line);
            }
            DumpBox.Text=result.ToString();
        }
        private void ReadArea()
        {
            // Declaration separated from the code for readability
            int DBNumber;
            int Amount;
            int SizeRead = 0;
            int Result;
            int[] Area = 
            { 
                 S7Consts.S7AreaPE,
                 S7Consts.S7AreaPA,
                 S7Consts.S7AreaMK,
                 S7Consts.S7AreaDB,
                 S7Consts.S7AreaCT,
                 S7Consts.S7AreaTM
            };
            int[] WordLen =
            {
                 S7Consts.S7WLBit,
                 S7Consts.S7WLByte,
                 S7Consts.S7WLChar,
                 S7Consts.S7WLWord,
                 S7Consts.S7WLInt,
                 S7Consts.S7WLDWord,
                 S7Consts.S7WLDInt,
                 S7Consts.S7WLReal,
                 S7Consts.S7WLCounter,
                 S7Consts.S7WLTimer
            };

            label18.Text = "0";
            TxtDump.Text = "";

            DBNumber = System.Convert.ToInt32(TxtDB.Text);
            Amount = System.Convert.ToInt32(TxtSize.Text);
            Result = Client.ReadArea(Area[CBArea.SelectedIndex], DBNumber, 0, Amount, WordLen[CBWLen.SelectedIndex], Buffer, ref SizeRead);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < Buffer.Length; i  )
            {
                sb.Append((int)Buffer[i]   ",");
            }
            System.IO.File.WriteAllText(Application.StartupPath   "\\error.txt", sb.ToString(), Encoding.UTF8);
            ShowResult(Result); //状态栏结果显示
            label18.Text = SizeRead.ToString();
            if (Result == 0)
                HexDump(TxtDump, Buffer, SizeRead);            
        }
        public void DBMultiRead()
        {
            // Multi Reader Instance
            S7MultiVar Reader = new S7MultiVar(Client);

            TxtRes_A.Text = "";
            TxtRes_B.Text = "";
            TxtRes_C.Text = "";

            int DBNumber_A = System.Convert.ToInt32(TxtDB_A.Text);
            int DBNumber_B = System.Convert.ToInt32(TxtDB_B.Text);
            int DBNumber_C = System.Convert.ToInt32(TxtDB_C.Text);

            // Add Items def.
            Reader.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, DBNumber_A, 0, 16, ref DB_A);
            Reader.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, DBNumber_B, 0, 16, ref DB_B);
            Reader.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, DBNumber_C, 0, 16, ref DB_C);
            // Performs the Read
            int Result = Reader.Read();

            // Dumps the data and shows the results
            ShowResult(Result);


            TxtRes_A.Text = Client.ErrorText(Reader.Results[0]);
            if (Reader.Results[0] == 0)
                HexDump(TxtDump_A, DB_A, 16);
            else
                TxtDump_A.Text = "< No Data Available >";

            TxtRes_B.Text = Client.ErrorText(Reader.Results[1]);
            if (Reader.Results[1] == 0)
                HexDump(TxtDump_B, DB_B, 16);
            else
                TxtDump_B.Text = "< No Data Available >";

            TxtRes_C.Text = Client.ErrorText(Reader.Results[2]);
            if (Reader.Results[2] == 0)
                HexDump(TxtDump_C, DB_C, 16);
            else
                TxtDump_C.Text = "< No Data Available >";

        }        
        void DBMultiWrite()
        {
            for (int c = 0; c < 16; c  )
            {
                DB_A[c] = 0x01;
            }
            for (int c = 0; c < 16; c  )
            {
                DB_B[c] = 0x02;
            }

            // Multi Writer Instance
            S7MultiVar Writer = new S7MultiVar(Client);

            TxtRes_A.Text = "";
            TxtRes_B.Text = "";
            TxtRes_C.Text = "";
            TxtDump_A.Text = "";
            TxtDump_B.Text = "";
            TxtDump_C.Text = "";

            int DBNumber_A = Convert.ToInt32(TxtDB_A.Text);
            int DBNumber_B = Convert.ToInt32(TxtDB_B.Text);
            int DBNumber_C = Convert.ToInt32(TxtDB_C.Text);

            // Add Items def.
            
            Writer.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, DBNumber_A, 0, 16, ref DB_A);
            Writer.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, DBNumber_B, 0, 16, ref DB_B);
            Writer.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, DBNumber_C, 0, 16, ref DB_C);
            
            
            // Performs the Write
            int Result = Writer.Write();
            // Shows the results
            ShowResult(Result);

            TxtRes_A.Text = Client.ErrorText(Writer.Results[0]);
            TxtRes_B.Text = Client.ErrorText(Writer.Results[1]);
            TxtRes_C.Text = Client.ErrorText(Writer.Results[2]);
        }
        void ReadSZL()
        {
            S7Client.S7SZL SZL = new S7Client.S7SZL();
            int Size = 4096; // Declare our Buffer Size
            SZL.Data = new byte[Size];

            label29.Text = "0";
            TxtSZL.Text = "";

            int Result = Client.ReadSZL(Convert.ToInt32(TxtSZLID.Text), Convert.ToInt32(TxtSZLIndex.Text), ref SZL, ref Size);
            ShowResult(Result);
            if (Result == 0)
            {
                label29.Text = Size.ToString();
                HexDump(TxtSZL, SZL.Data, Size);
            }
        }
        private void PlcDBWrite()
        {
            // Declaration separated from the code for readability
            int DBNumber;
            int Size;
            int Result;

            DBNumber = System.Convert.ToInt32(TxtDB.Text);
            Size = System.Convert.ToInt32(TxtSize.Text);
            Result = Client.DBWrite(DBNumber, 0, Size, Buffer);
            ShowResult(Result);
        }
        void ReadCPUInfo()
        {
            S7Client.S7CpuInfo Info = new S7Client.S7CpuInfo();
            txtModuleTypeName.Text = "";
            txtSerialNumber.Text = "";
            txtCopyright.Text = "";
            txtAsName.Text = "";
            txtModuleName.Text = "";
            int Result = Client.GetCpuInfo(ref Info);
            ShowResult(Result);
            if (Result==0)
            {
                txtModuleTypeName.Text = Info.ModuleTypeName;
                txtSerialNumber.Text = Info.SerialNumber;
                txtCopyright.Text = Info.Copyright;
                txtAsName.Text = Info.ASName;
                txtModuleName.Text = Info.ModuleName;
            }
        }
        void ReadOrderCode()
        {
            S7Client.S7OrderCode Info = new S7Client.S7OrderCode();
            txtOrderCode.Text = "";
            txtVersion.Text = "";
            int Result = Client.GetOrderCode(ref Info);
            ShowResult(Result);
            if (Result == 0)
            {
                txtOrderCode.Text = Info.Code;
                txtVersion.Text = Info.V1.ToString()   "."   Info.V2.ToString()   "."   Info.V3.ToString();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            // These are tests done on my DB
            
            DateTime DT = DateTime.Now;
            S7.SetSIntAt(Buffer, 40, -125);
            S7.SetIntAt(Buffer, 42, 32501);
            S7.SetDIntAt(Buffer, 44, -332501);
            S7.SetLIntAt(Buffer, 48, -99832501);
            S7.SetRealAt(Buffer, 56, (float)98.778);
            S7.SetLRealAt(Buffer, 60, 123000000000.778);
            S7.SetUSIntAt(Buffer, 24, 125);
            S7.SetUIntAt(Buffer, 26, 32501);
            S7.SetUDIntAt(Buffer, 28, 332501);
            S7.SetULintAt(Buffer, 32, 99832501);
            S7.SetDateAt(Buffer, 80, DT);
            S7.SetTODAt(Buffer, 82, DT);
            S7.SetDTLAt(Buffer, 112, DT);
            S7.SetLTODAt(Buffer, 86, DT);
            S7.SetLDTAt(Buffer, 94, DT);
            PlcDBWrite();
        }
        private void btnMultiRead_Click(object sender, EventArgs e) //MultiRead
        {
            DBMultiRead();
        }
        private void btnMultiWrite_Click(object sender, EventArgs e) //MultiWrite
        {
            DBMultiWrite();
        }
        private void ReadSZLBtn_Click(object sender, EventArgs e)
        {
            ReadSZL();
        }
        private void ReadCPUInfoBtn_Click(object sender, EventArgs e)
        {
            ReadCPUInfo();
        }
        private void ReadOrderCodeBtn_Click(object sender, EventArgs e)
        {
            ReadOrderCode();
        }
        private void button3_Click(object sender, EventArgs e) //读取PLC日期时间
        {
            DateTime DT = new DateTime();
            if (Client.GetPlcDateTime(ref DT) == 0)
            {
                txtDateTime.Text = DT.ToLongDateString()   " - "   DT.ToLongTimeString();
            }
        }
        private void SetDateTimeBtn_Click(object sender, EventArgs e) //将当期系统时间写入PLC
        {
            ShowResult(Client.SetPlcSystemDateTime()); //状态栏结果显示
        }
        private void SetPwdBtn_Click(object sender, EventArgs e)
        {
            ShowResult(Client.SetSessionPassword(txtPwd.Text)); //状态栏结果显示
        }
        private void ClrPwdBtn_Click(object sender, EventArgs e)
        {
            ShowResult(Client.ClearSessionPassword()); //状态栏结果显示
        }
        void ShowPlcStatus()
        {
            int Status = 0;
            int Result = Client.PlcGetStatus(ref Status);
            ShowResult(Result); //状态栏结果显示
            if (Result == 0)
            {
                switch (Status)
                {
                    case S7Consts.S7CpuStatusRun:
                        {
                            lblStatus.Text = "RUN";
                            lblStatus.ForeColor = System.Drawing.Color.LimeGreen;
                            break;
                        }
                    case S7Consts.S7CpuStatusStop:
                        {
                            lblStatus.Text = "STOP";
                            lblStatus.ForeColor = System.Drawing.Color.Red;
                            break;
                        }
                    default:
                        {
                            lblStatus.Text = "Unknown";
                            lblStatus.ForeColor = System.Drawing.Color.Black;
                            break;
                        }
                }
            }
            else
            {
                lblStatus.Text = "Unknown";
                lblStatus.ForeColor = System.Drawing.Color.Black;
            }
        }
        string HexByte(byte B)
        {
            string Result = Convert.ToString(B, 16);
            if (Result.Length < 2)
                Result = "0"   Result;
            return "0x"   Result;
        }
        string HexWord(ushort W)
        {
            string Result = Convert.ToString(W, 16);
            while(Result.Length<4)
                Result = "0"   Result;
            return "0x"   Result;
        }
        void GetBlockInfo()
        {
            S7Client.S7BlockInfo BI = new S7Client.S7BlockInfo();
            int[] BlockType =
            {
                S7Client.Block_OB, 
                S7Client.Block_DB, 
                S7Client.Block_SDB,
                S7Client.Block_FC, 
                S7Client.Block_SFC,
                S7Client.Block_FB, 
                S7Client.Block_SFB
            };
            txtBI.Text = "";
            int Result = Client.GetAgBlockInfo(BlockType[CBBlock.SelectedIndex], System.Convert.ToInt32(txtBlockNum.Text), ref BI);
            ShowResult(Result); //状态栏结果显示
            if (Result==0)
            {
                // Here a more descriptive Block Type, Block lang and so on, are needed, 
                // but I'm too lazy, do it yourself.
                txtBI.Text = txtBI.Text   "Block Type    : "   HexByte((byte)BI.BlkType)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Block Number  : "   Convert.ToString(BI.BlkNumber)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Block Lang    : "   HexByte((byte)BI.BlkLang)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Block Flags   : "   HexByte((byte)BI.BlkFlags)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "MC7 Size      : "   Convert.ToString(BI.MC7Size)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Load Size     : "   Convert.ToString(BI.LoadSize)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Local Data    : "   Convert.ToString(BI.LocalData)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "SBB Length    : "   Convert.ToString(BI.SBBLength)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Checksum      : "   HexWord((ushort)BI.CheckSum)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Version       : 0."   Convert.ToString(BI.Version)   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Code Date     : "   BI.CodeDate   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Intf.Date     : "   BI.IntfDate   (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Author        : "   BI.Author  (char)13   (char)10;               
                txtBI.Text = txtBI.Text   "Family        : "   BI.Family  (char)13   (char)10;
                txtBI.Text = txtBI.Text   "Header        : "   BI.Header;
            }
        }
        void GetSelectedDB()
        {
            int Size = 65536; // 64 K (the maximum for a S7400)
            byte[] Buffer = new byte[Size];
            txtDBGet.Text = "";
            int Result = Client.DBGet(System.Convert.ToInt32(txtBlockNum.Text), Buffer, ref Size);
            ShowResult(Result); //状态栏结果显示
            if (Result==0)
            {
                HexDump(txtDBGet, Buffer, Size);
            }
        }
        private void PlcStatusBtn_Click(object sender, EventArgs e)
        {
            ShowPlcStatus();
        }
        private void PlcStopBtn_Click(object sender, EventArgs e)
        {
            ShowResult(Client.PlcStop()); //状态栏结果显示
            ShowPlcStatus();
        }
        private void PlcHotBtn_Click(object sender, EventArgs e)
        {
            ShowResult(Client.PlcHotStart()); //状态栏结果显示
            ShowPlcStatus();
        }
        private void PlcColdBtn_Click(object sender, EventArgs e)
        {
            ShowResult(Client.PlcColdStart()); //状态栏结果显示
            ShowPlcStatus();
        }
        private void BlockInfoBtn_Click(object sender, EventArgs e)
        {
            GetBlockInfo();
        }
        private void DBGetBtn_Click(object sender, EventArgs e)
        {
            GetSelectedDB();
        }
    }
}

实例下载地址

C#winform与西门子1200、1500系列PLC通讯实例

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警