当前位置:网站首页>使用S7.net通信库

使用S7.net通信库

2022-01-15 02:02:33 罗迪尼亚的熔岩

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using IniHelper;
using S7.Net;
using thinger.cn.DataConvertHelper;

namespace IniPractice
{
    
    public class CoreLogicManager
    {
    
        private Plc simensS7 = null;
        //public int MyProperty { get; set; }
        public CommunicationState CurentState {
     get; set; } = new CommunicationState();

        private CancellationTokenSource cts = new CancellationTokenSource();
      
        //连接
        public bool ConnectPLC(SysSettings sysSettings)
        {
    
            try
            {
    
                simensS7 = new Plc((CpuType)Enum.Parse(typeof(CpuType), sysSettings.CpuType), sysSettings.CpuType, 0,0);
                simensS7.Open();
            }
            catch (Exception)
            {
    
                return false;
            }
            //采集 多线程执行
            Task.Run(() =>
            {
    
                PLCCommucation();
            }, cts.Token);
            return true;
        }
        private void PLCCommucation()
        {
    
            while (!cts.IsCancellationRequested)
            {
    

                byte[] result = simensS7.ReadBytes(S7.Net.DataType.DataBlock, 1, 0,23);//起始地址,数量30
                //数据解析 截取字节数组,转换为需要的值
                if (result!=null && result.Length==23)
                {
    
                    CurentState.SatusValue = ByteLib.GetByteFromByteArray(result,22);//状态值
                    CurentState.LimitLeft = BitLib.GetBitFromByteArray(result, 20, 5);//20个字节第5个位
                }
            }
        }

        //断开
        private void PLCClose()
        {
    
            if (cts!=null)
            {
    
                cts.Cancel();
            }
            
            if(simensS7!=null)
            {
    
                simensS7.Close();
            }
        }
    }
}

版权声明
本文为[罗迪尼亚的熔岩]所创,转载请带上原文链接,感谢
https://blog.csdn.net/helldoger/article/details/122228138

随机推荐