• 大小: 111KB
    文件类型: .rar
    金币: 2
    下载: 2 次
    发布日期: 2021-06-13
  • 语言: C#
  • 标签: MODBUS  C#  施耐德  

资源简介

这是PLC与上位机的MODBUS通讯程序,使用施耐德PLC已调试通过。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Threading;
using System.IO.Ports;

namespace HMI
{
    public class EMS
    {
        public int[] AnalogArr;
        public int[] SwitchArr;
        private ArrayList SendArray = new ArrayList();
        //public Thread SendThread RcvThread;
        private SerialPort SPort = new SerialPort();
        public bool IsOpen = false;
        public string PortName = ““;
        public int PortAddr = 1;
        public bool PortFlag = false;
        public int RcvTime = 0;
        public  bool isRead = true;

        public EMS(int AnalogNumint SwitchNum)
        {
            AnalogArr = new int[256 AnalogNum];
            SwitchArr = new int[256 SwitchNum];
        }

        //打开串口
        public bool Open(string portName int baudRate int databits Parity parity StopBits stopBits int ReadTimeout int WriteTimeout)
        {
            try
            {
                if (!SPort.IsOpen)
                {
                    PortName = portName;
                    SPort.PortName = portName;
                    SPort.BaudRate = baudRate;
                    SPort.DataBits = databits;
                    SPort.Parity = parity;
                    SPort.StopBits = stopBits;
                    SPort.ReadTimeout = ReadTimeout;
                    SPort.WriteTimeout = WriteTimeout;
                    SPort.Open();
                    ThreadPool.QueueUserWorkItem(new WaitCallback(SendMethod));
                }
                IsOpen = true;
                return true;
            }
            catch { return false; }
        }

        //关闭串口
        public bool Close()
        {
            try
            {
                if (SPort.IsOpen)
                    SPort.Close();
                IsOpen = false;
                return true;
            }
            catch
            {
                return false;
            }
        }

        #region 检查CRC校验
        private bool CheckResponse(byte[] response int Length)
        {
            byte[] CRC = new byte[2];
            GetCRC(response Length ref CRC);
            if (CRC[0] == response[Length - 2] && CRC[1] == response[Length - 1])
                return true;
            else
                return false;
        }
        #endregion

        #region 计算CRC
        private void GetCRC(byte[] messageint Length ref byte[] CRC)
        {
            ushort CRCFull = 0xFFFF;
            byte CRCHigh = 0xFF CRCLow = 0xFF;
            char CRCLSB;

            for (int i = 0; i < Length - 2; i++)
            {
                CRCFull = (ushort)(CRCFull ^ message[i]);

                for (int j = 0; j < 8; j++)
                {
                    CRCLSB = (char)(CRCFull & 0x0001);
                    CRCFull = (ushort)((CRCFull >> 1) & 0x7FFF);

              

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      11600  2014-11-04 15:48  Modbus_测试\Modbus_测试\Modbus_测试\bin\Debug\Modbus_测试.vshost.exe

     文件        490  2009-08-31 00:40  Modbus_测试\Modbus_测试\Modbus_测试\bin\Debug\Modbus_测试.vshost.exe.manifest

     文件      97792  2014-11-04 15:49  Modbus_测试\Modbus_测试\Modbus_测试\bin\Debug\Modbus_测试.pdb

     文件      45568  2014-11-04 15:49  Modbus_测试\Modbus_测试\Modbus_测试\bin\Debug\Modbus_测试.exe

     文件      12991  2014-04-02 13:19  Modbus_测试\Modbus_测试\Modbus_测试\EMS.cs

     文件      11870  2014-10-28 12:17  Modbus_测试\Modbus_测试\Modbus_测试\EMS1.cs

     文件       9445  2014-11-04 15:49  Modbus_测试\Modbus_测试\Modbus_测试\Form1.cs

     文件      38691  2014-11-04 15:37  Modbus_测试\Modbus_测试\Modbus_测试\Form1.Designer.cs

     文件       6398  2014-11-04 15:37  Modbus_测试\Modbus_测试\Modbus_测试\Form1.resx

     文件       3921  2014-10-10 14:19  Modbus_测试\Modbus_测试\Modbus_测试\Form2.cs

     文件      25188  2014-10-10 14:19  Modbus_测试\Modbus_测试\Modbus_测试\Form2.Designer.cs

     文件      10513  2014-10-10 14:19  Modbus_测试\Modbus_测试\Modbus_测试\Form2.resx

     文件       1169  2014-10-09 15:27  Modbus_测试\Modbus_测试\Modbus_测试\frmDaBaoCheng.cs

     文件      12767  2014-10-09 15:27  Modbus_测试\Modbus_测试\Modbus_测试\frmDaBaoCheng.Designer.cs

     文件       6011  2014-10-09 15:27  Modbus_测试\Modbus_测试\Modbus_测试\frmDaBaoCheng.resx

     文件      15249  2014-11-04 15:49  Modbus_测试\Modbus_测试\Modbus_测试\ModbusClient.cs

     文件       4445  2014-10-10 14:12  Modbus_测试\Modbus_测试\Modbus_测试\Modbus_测试.csproj

     文件       7473  2014-07-21 09:16  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache

     文件       6347  2014-11-04 15:49  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件       4671  2014-11-04 15:49  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\Modbus_测试.csproj.FileListAbsolute.txt

     文件        180  2014-11-04 15:37  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\Modbus_测试.Form1.resources

     文件        180  2014-11-04 14:35  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\Modbus_测试.Form2.resources

     文件        180  2014-11-04 14:35  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\Modbus_测试.frmDaBaoCheng.resources

     文件        180  2014-11-04 14:35  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\Modbus_测试.Properties.Resources.resources

     文件        688  2014-11-04 15:37  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\GenerateResource.read.1.tlog

     文件       1586  2014-11-04 15:37  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\GenerateResource.write.1.tlog

     文件      97792  2014-11-04 15:49  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\Modbus_测试.pdb

     文件      45568  2014-11-04 15:49  Modbus_测试\Modbus_测试\Modbus_测试\obj\x86\Debug\Modbus_测试.exe

     文件        494  2014-10-20 13:07  Modbus_测试\Modbus_测试\Modbus_测试\Program.cs

     文件       1376  2014-03-27 09:20  Modbus_测试\Modbus_测试\Modbus_测试\Properties\AssemblyInfo.cs

............此处省略20个文件信息

评论

共有 条评论