public DefectsController(RaportareDbContext context, DefectService defectService, PlcService plcService, ReportService reportService)
 {
     _context       = context;
     _defectService = defectService;
     _plcService    = plcService;
     _reportService = reportService;
 }
示例#2
0
 public HomeController(ILogger <HomeController> logger, TimedService backGroundService, StartAutBackgroundService bk, PlcService plcService)
 {
     _logger            = logger;
     _backgroundService = backGroundService;
     _plcService        = plcService;
     _logger.LogInformation("{data}<=>{Messege}", DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss"), "S-A CREAT HOMECONTROLLER AR TREBUI SA URMEZE SI BACKGROUND SERVICE");
     _logger.LogInformation("{LasttimeScan} {text}", _backgroundService.LastTimeRunBackgroundWork.ToString("dd.MM.yyyy hh:mm:ss"), "Timp din backgroundService in HomeController");
 }
示例#3
0
        public CpuDisplayModel(PlcService plcService, IMapper mapper, IEventAggregator events)
        {
            _plcService = plcService;
            _plcService.ComStateChanged += OnPlcComStateChanged;
            Index            = _plcService.Index;
            _mapper          = mapper;
            _events          = events;
            S7CpuType        = Enum.GetValues(typeof(S7CpuType)).Cast <S7CpuType>().ToList();
            PlcConnectionCmd = new AsyncCommand <object>(OnPlcConnectionCmd);

            _connectButtonStateTimer          = new System.Timers.Timer();
            _connectButtonStateTimer.Elapsed += onConnectButtonStateTimerElapsed;
            _connectButtonStateTimer.Interval = 50;

            Name            = _plcService.Config.Name;
            IpAddress       = _plcService.Config.Ip;
            Rack            = _plcService.Config.Rack;
            Slot            = _plcService.Config.Slot;
            SelectedCpuType = _plcService.Config.CpuType;

            //foreach (var datablock in _plcService.Datablocks)
            //{
            //    IDatablockDisplayModel db


            //    Datablocks.Add
            //}
            try
            {
                List <SignalDisplayModel> signals = mapper.Map <List <SignalDisplayModel> >(_plcService.Datablocks[0].Signals);

                var db = mapper.Map <List <DatablockDisplayModel> >(_plcService.Datablocks);
                Datablocks = db;
            }
            catch (AutoMapperMappingException ex)
            {
                Console.WriteLine(ex.Message);

                if (ex.InnerException != null)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }
                throw;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);

                if (ex.InnerException != null)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }
                throw;
            }
        }
 // Map Defect To PlcViewModel
 public void MapDefect(PlcService plcService, Defect defect, PlcModel plc, List <Defect> defects)
 {
     IsConnected = plcService.IsAvailableIpAdress(plc);
     if (defect == null)
     {
         return;
     }
     MotivStationare       = defect.MotivStationare;
     TimpStartDefect       = defect.TimpStartDefect;
     TimpStopDefect        = defect.TimpStopDefect;
     IsDefectFinalizat     = defect.DefectFinalizat;
     NumePlcAfisat         = GetNumePlcAfisat(defect);
     TextAfisare           = GetTextAfisare();
     ChartDefectsInPercent = GetItemSourceGraficDefects(defects);
     RandamentRealizat     = GetRandamentRealizat(defects);
 }
示例#5
0
 public PlcController(IEnumerable <IHostedService> hostedServices)
 {
     _plcService = (PlcService)hostedServices.Single(s => s.GetType() == typeof(PlcService));
 }
 // Constructor
 public PlcServiceController(RaportareDbContext context, ILogger <PlcsController> logger, PlcService plcService)
 {
     _logger     = logger;
     _context    = context;
     _plcService = plcService;
 }
示例#7
0
 public ConnToPLC()
 {
     InitializeComponent();
     plcService = new PlcService();
 }
示例#8
0
 public PLCViewModel(PlcService PLC)
 {
     this.PLC = PLC;
 }
 // Constructor: Inject PlcService To Get PLCViewModelList
 public UtilajViewComponent(PlcService plcService)
 {
     ListPlcViewModel = plcService.ListPlcViewModels;
 }
示例#10
0
        public List <PlcService> LoadConfigs(string path = "")
        {
            log.Info($"LoadConfigs - path {path}");
            var plcServiceList = new List <PlcService>();

            int totalFilesToLoadCount            = 0;
            List <ICpuConfigFile> cpuConfigFiles = _configParser.LoadConfigFiles(path);

            foreach (var jsonConfig in cpuConfigFiles)
            {
                totalFilesToLoadCount += jsonConfig.SignalLists.Count;
            }

            var configsProgressEventArgs = new ConfigsProgressEventArgs();

            configsProgressEventArgs.ProgressTotal = totalFilesToLoadCount;
            ConfigsLoadingProgressChanged?.Invoke(this, configsProgressEventArgs);

            foreach (var config in cpuConfigFiles)
            {
                ICpuConfig             cpuConfig  = new CpuConfig(config);
                List <IDatablockModel> datablocks = new List <IDatablockModel>();

                foreach (var dbNumberDbNameString in config.SignalLists)
                {
                    DatablockModel datablock = new DatablockModel();

                    // signal should contain db number and db name, format : "number:name" e.g "3201:DbName"
                    List <string> dbNumberDbName = dbNumberDbNameString.Split(':').ToList();
                    int           dbNumber       = 0;
                    bool          isParsable     = false;

                    if (dbNumberDbName.Count > 0)
                    {
                        isParsable = Int32.TryParse(dbNumberDbName.First(), out dbNumber);
                    }

                    if (dbNumberDbName.Count != 2 || !isParsable)
                    {
                        string errorStr = "Invalid file format in Json config!SignalsList must use : as separator between db number and name.";
                        log.Error(errorStr);
                        throw new FormatException(errorStr);
                    }

                    var    signals  = new List <SignalModel>();
                    string filePath = AppDomain.CurrentDomain.BaseDirectory + Constants.BaseDirectorySubDirs + dbNumberDbName.Last();

                    try
                    {
                        var fileLines         = _dbParser.ReadS7DbFile(filePath);
                        var signalContextList = _dbParser.ParseDb(fileLines, config.DiscardKeywords);

                        for (int i = 0; i < signalContextList.Count; i++)
                        {
                            signalContextList[i].CpuIndex = plcServiceList.Count;
                            signalContextList[i].DbIndex  = datablocks.Count;
                            signalContextList[i].Index    = i;
                            signalContextList[i].DbNumber = dbNumber;
                            signals.Add(SignalFactory.Create(signalContextList[i]));
                        }
                    }
                    catch (Exception)
                    {
                        // TODO - Handle
                        throw;
                    }

                    if (signals?.Count > 0)
                    {
                        datablock.CpuIndex  = plcServiceList.Count;
                        datablock.Index     = datablocks.Count;
                        datablock.Signals   = signals;
                        datablock.Name      = dbNumberDbName.Last();
                        datablock.Number    = dbNumber;
                        datablock.FirstByte = signals.First().DbByteIndex();
                        datablock.ByteCount = signals.Last().DbByteIndex() - datablock.FirstByte;
                        datablocks.Add(datablock);
                    }
                    configsProgressEventArgs.ProgressInput += 1;
                    ConfigsLoadingProgressChanged?.Invoke(this, configsProgressEventArgs);
                    Thread.Sleep(250);
                }

                PlcService plcService = PlcServiceFactory.Create(plcServiceList.Count, cpuConfig, datablocks);
                plcServiceList.Add(plcService);
            }
            Thread.Sleep(2500);
            ConfigsLoaded?.Invoke(this, new EventArgs());
            return(plcServiceList);
        }