/// <summary>
        /// 设定零点偏移
        /// </summary>
        void GetZeloOffset()
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleReads;
            sendtemp.myRegister       = RegisterEnum.MotorZeroOffset;
            sendtemp.mySendDataNumber = 0x0002;
            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 停止
        /// </summary>
        public void Stop()
        {
            ModbusData sendtempControl = new ModbusData();

            sendtempControl.myPRO            = PRO;
            sendtempControl.myFunctionCode   = FunctionCodeEnum.SingleWrite;
            sendtempControl.myRegister       = RegisterEnum.MotorControl;
            sendtempControl.mySendDataNumber = 0x0000;
            sendtempControl.myDataList.Add(0x010F);
            SENDDATA = sendtempControl;
        }
        /// <summary>
        /// 读取现在的位置
        /// </summary>
        void GetPositionNow()
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleReads;
            sendtemp.myRegister       = RegisterEnum.MotorPositionNow;
            sendtemp.mySendDataNumber = 0x0002;

            SENDDATASixed = sendtemp;
        }
        /// <summary>
        /// 读取回零加减速
        /// </summary>
        void GetHomeAddSubtract()
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleReads;
            sendtemp.myRegister       = RegisterEnum.MotorHomeAddSubtract;
            sendtemp.mySendDataNumber = 0x0001;

            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 读取回机械原点的速度
        /// </summary>
        void GetHomeMechanicsSpeed()
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleReads;
            sendtemp.myRegister       = RegisterEnum.MotorHomeMechanicsSpeed;
            sendtemp.mySendDataNumber = 0x0002;

            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 错误码
        /// </summary>
        void GetErrorCode()
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleReads;
            sendtemp.myRegister       = RegisterEnum.MotorErrorCode;
            sendtemp.mySendDataNumber = 0x0001;

            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 设定零点偏移
        /// </summary>
        /// <param name="iValue"></param>
        void SetZeloOffset(int iValue)
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleWrites;
            sendtemp.myRegister       = RegisterEnum.MotorZeroOffset;
            sendtemp.mySendDataNumber = 0x0002;
            sendtemp.myDataList.Add(iValue);
            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 运动模式
        /// </summary>
        /// <param name="Mode">位置模式;转距模式;速度模式;回零模式;可选</param>
        void SetMotorOperationMode(MotorOperationModeEnum Mode)
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.SingleWrite;
            sendtemp.myRegister       = RegisterEnum.MotorOperationMode;
            sendtemp.mySendDataNumber = 0x0000;
            sendtemp.myDataList.Add((int)Mode);

            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 马达停止
        /// </summary>
        /// <param name="stopcode">停止代码</param>
        void SetMOTORSTOP(MotorStopCodeEnum stopcode)
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.SingleWrite;
            sendtemp.myRegister       = RegisterEnum.MotorStop;
            sendtemp.mySendDataNumber = 0;
            sendtemp.myDataList.Add((int)stopcode);

            SENDDATAFIRST = sendtemp;
        }
        /// <summary>
        /// 读取快停减速度
        /// </summary>
        void GetQuickStopDeceleration()
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleReads;
            sendtemp.myRegister       = RegisterEnum.MotorQuickStopDeceleration;
            sendtemp.mySendDataNumber = 0x0001;
            //sendtemp.myDataList.Add(iValue);

            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 设定回零加减速
        /// </summary>
        /// <param name="iValue"></param>
        void SetHomeAddSubtract(int iValue)
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.SingleWrite;
            sendtemp.myRegister       = RegisterEnum.MotorHomeAddSubtract;
            sendtemp.mySendDataNumber = 0x0000;
            //sendtemp.myDataList.Add(0);
            sendtemp.myDataList.Add(iValue);

            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 回零速度
        /// </summary>
        /// <param name="iValue"></param>
        void SetHomeSpeed(int iValue)
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleWrites;
            sendtemp.myRegister       = RegisterEnum.MotorHomeSpeed;
            sendtemp.mySendDataNumber = 0x0002;
            //sendtemp.myDataList.Add(0);
            sendtemp.myDataList.Add(iValue);

            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 设定快停减速度
        /// </summary>
        /// <param name="iValue"></param>
        void SetQuickStopDeceleration(int iValue)
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.SingleWrite;
            sendtemp.myRegister       = RegisterEnum.MotorQuickStopDeceleration;
            sendtemp.mySendDataNumber = 0x0000;
            //sendtemp.myDataList.Add(0);
            sendtemp.myDataList.Add(iValue);

            SENDDATA = sendtemp;
        }
        /// <summary>
        /// 设定目标位置
        /// </summary>
        void SetObjectPosition(int iValue)
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleWrites;
            sendtemp.myRegister       = RegisterEnum.MotorObjectPosition;
            sendtemp.mySendDataNumber = 0x0002;
            //sendtemp.myDataList.Add(0);
            sendtemp.myDataList.Add(iValue);

            SENDDATA = sendtemp;
            GetObjectrPosition();
        }
Beispiel #15
0
        private async Task PublishScadaData(Topic topic, ScadaMessage scadaMessage)
        {
            string verboseMessage = $"{baseLogString} entering PublishScadaData method.";

            Logger.LogVerbose(verboseMessage);

            try
            {
                ScadaPublication   scadaPublication = new ScadaPublication(topic, scadaMessage);
                IPublisherContract publisherClient  = PublisherClient.CreateClient();
                await publisherClient.Publish(scadaPublication, MicroserviceNames.ScadaModelProviderService);

                Logger.LogInformation($"{baseLogString} PublishScadaData => SCADA service published data of topic: {scadaPublication.Topic}, publisher name: {MicroserviceNames.ScadaModelProviderService}");
            }
            catch (Exception e)
            {
                string errorMessage = $"{baseLogString} PublishScadaData => exception {e.Message}";
                Logger.LogError(errorMessage, e);
                throw e;
            }

            StringBuilder sb = new StringBuilder();

            sb.AppendLine($"{baseLogString} PublishScadaData => MeasurementCache content: ");

            var enumerableMeasurementCache = await MeasurementsCache.GetEnumerableDictionaryAsync();

            foreach (long gid in enumerableMeasurementCache.Keys)
            {
                ModbusData data = enumerableMeasurementCache[gid];

                if (data is AnalogModbusData analogModbusData)
                {
                    sb.AppendLine($"Analog data line: [gid] 0x{gid:X16}, [value] {analogModbusData.Value}, [alarm] {analogModbusData.Alarm}");
                }
                else if (data is DiscreteModbusData discreteModbusData)
                {
                    sb.AppendLine($"Discrete data line: [gid] 0x{gid:X16}, [value] {discreteModbusData.Value}, [alarm] {discreteModbusData.Alarm}");
                }
                else
                {
                    sb.AppendLine($"UNKNOWN data type: {data.GetType()}");
                }
            }

            Logger.LogDebug(sb.ToString());
        }
        /// <summary>
        /// 设定电机初始化
        /// </summary>
        /// <param name="iPosition"></param>
        public void SETMOTORINITIAL()
        {
            ModbusData sendtemp = new ModbusData();

            sendtemp.myPRO            = PRO;
            sendtemp.myFunctionCode   = FunctionCodeEnum.MultipleWrites;
            sendtemp.myRegister       = RegisterEnum.MotorControl;
            sendtemp.mySendDataNumber = 0x0000;
            sendtemp.myDataList.Add(0x0001);
            SENDDATA = sendtemp;

            sendtemp.myDataList.Clear();
            sendtemp.myDataList.Add(0x0003);
            SENDDATA = sendtemp;

            sendtemp.myDataList.Clear();
            sendtemp.myDataList.Add(0x000F);
            SENDDATA = sendtemp;
        }
Beispiel #17
0
        public void InitCtrl()
        {
            ModbusFunction functions = new ModbusFunction();
            ModbusData     DataType  = new ModbusData();

            cbo_functioncode.Items.Clear();
            for (int i = 0; i < functions.Functions.Count; i++)
            {
                cbo_functioncode.Items.Add(functions.Functions[i]);
            }
            cbo_functioncode.SelectedIndexChanged += Cbo_functioncode_SelectedIndexChanged;
            cbo_StoreType.Items.Clear();
            cbo_StoreType.SelectedIndexChanged += Cbo_StoreType_SelectedIndexChanged;
            for (int i = 0; i < DataType.DataTypes.Count; i++)
            {
                cbo_StoreType.Items.Add(DataType.DataTypes[i]);
            }
            cbo_StoreType.SelectedIndex = 0;
            cbo_datatype.SelectedIndex  = 0;
        }
 public void ReportProgress(ModbusData data)
 {
     listBox1.Items.Add(data.fc1.ToString()); 
     listBox1.Items.Add(dta.StartAddress1.ToString()); 
     listBox1.Items.Add(data.NumOfPoints1.ToString()); 
 }