/// <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(); }
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; }
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()); }