Exemple #1
0
 public static void SetVirtualIndexer(PlcMaster master, VirtualIndexerStates virtualIndexer)
 {
     byte[] dummy = { };
     if (master == null)
     {
         return;
     }
     if (master.connected)
     {
         master.WriteSingleRegister(4, 1, master.VirtualIndexerStartAddress, ModbusTcpHelper.WordArrayToByteArray(new[] { Convert.ToInt32(virtualIndexer) }, 1), ref dummy);
     }
 }
 public void SetVirtualIndexer(VirtualIndexerStates virtualIndexer)
 {
     _memory[PlcScanStartAddress + 4] = Convert.ToByte(virtualIndexer);
 }
        private void VirtualIndexerStateChanged(VirtualIndexerStates state)
        {
            switch (state)
            {
            case VirtualIndexerStates.NotIndexed:
                SetLabelText(lbl_VirtualIndexer, "Not Used");
                break;

            case VirtualIndexerStates.NewlyIndexed:
                SetLabelText(lbl_VirtualIndexer, "Newly Indexed");
                _machineData.VirtualIndexer.ShiftProductStationRight("", 1, 1, 1);
                _dataAcquisition.SetVirtualIndexer(VirtualIndexerStates.UpdateTraceabilityStatus);
                break;

            case VirtualIndexerStates.IndexConfirmed:
                SetLabelText(lbl_VirtualIndexer, "Index Confirmed");
                break;

            case VirtualIndexerStates.Reset:
                SetLabelText(lbl_VirtualIndexer, "Reset");
                _machineData.VirtualIndexer.Clear();
                _dataAcquisition.SetVirtualIndexer(VirtualIndexerStates.IndexConfirmed);
                break;

            case VirtualIndexerStates.WaitingTraceabilityStatusCheck:
                SetLabelText(lbl_VirtualIndexer, "Waiting Traceability Status Check");
                if (EnableVirtualIndexer && _machineData.ProductInLoadingStatus == ProductStatus.LoadedNeedTraceabilityCheck)
                {
                    var product = ReadLoading();
                    if (product == string.Empty)
                    {
                        _dataAcquisition.UpdateProductInLoadingStatus(ProductStatus.TraceabilityCheckedNok);
                        break;
                    }
                    int status;
                    CheckReferenceLoadIfUnMatch(product);
                    var result = _thisMachine.LoadProduct(product, "", out status);

                    _dataAcquisition.UpdateProductInLoadingStatus(result
                            ? ProductStatus.TraceabilityCheckedOk
                            : ProductStatus.TraceabilityCheckedNok);

                    if (result && EnableVirtualIndexer)
                    {
                        _machineData.VirtualIndexer.SetProductToStation(0, product, 1, 1);
                        VirtualIndexerToListBox(lb_Indexer);
                        _dataAcquisition.SetVirtualIndexer(VirtualIndexerStates.IndexConfirmed);
                    }
                }
                break;

            case VirtualIndexerStates.UpdateTraceabilityStatus:
                SetLabelText(lbl_VirtualIndexer, "Waiting Unloading Traceability Status Update");
                if (EnableVirtualIndexer &&
                    _machineData.ProductInUnloadingStatus == ProductStatus.LoadedNeedTraceabilityStatusUpdateNOk)
                {
                    var product = ReadUnloading();
                    var result  = false;
                    if (product != string.Empty)
                    {
                        int status;
                        result = _thisMachine.UpdateProductStatusNOk(product, "Auto", out status);
                    }
                    _dataAcquisition.UpdateProductInUnloadingStatus(
                        result ? ProductStatus.TraceabilityStatusUpdated : ProductStatus.TraceabilityStatusNotUpdated);
                    _dataAcquisition.SetVirtualIndexer(VirtualIndexerStates.WaitingTraceabilityStatusCheck);
                }
                if (EnableVirtualIndexer &&
                    _machineData.ProductInUnloadingStatus == ProductStatus.LoadedNeedTraceabilityStatusUpdateOk)
                {
                    var product = ReadUnloading();

                    var result = false;
                    if (product != string.Empty)
                    {
                        int status;
                        result = _thisMachine.UpdateProductStatusOk(product, "Auto", out status);
                    }
                    _dataAcquisition.UpdateProductInUnloadingStatus(
                        result ? ProductStatus.TraceabilityStatusUpdated : ProductStatus.TraceabilityStatusNotUpdated);
                    _dataAcquisition.SetVirtualIndexer(VirtualIndexerStates.WaitingTraceabilityStatusCheck);
                }
                break;
            }
            VirtualIndexerToListBox(lb_Indexer);
        }
 public void SetVirtualIndexer(VirtualIndexerStates virtualIndexer)
 {
     PlcCommand.SetVirtualIndexer(_plcMaster, virtualIndexer);
 }