/// <summary> /// отправка пакета с изменением статуса /// </summary> public void SendStatusforSlave(ushort status) { ushort startAddress = 0; ushort numOfPoints = 1; master.WriteSingleRegister(slaveID, startAddress, status); }
public void SendConfigurationMessage(Slave slave, ConfigurationMessage configurationMessage) { var startAddress = GetStartAddress(slave.DeviceNumber, 12); var valueConfigurationMessage = GetValueToConfigurationMessage(configurationMessage); _modbusSerial.WriteSingleRegister(slave.SlaveId, startAddress, valueConfigurationMessage); }
public void Write(int addr, EUT55ARegisterAddress register, float value) { if (Mode == EEthernetMode.Virtual) { return; } if ((addr < SlaveAddr) || (addr >= (SlaveAddr + SlaveCount))) { Log(EEthernetLogItem.Exception, "Occurred invalid address error in UlUT55AEthernetClient.Write"); throw new UT55AException( "Occurred invalid address error in UlUT55AEthernetClient.Write", EUT55AException.InvalidAddress); } try { lock (master) { ushort nValue = FixedDecimalBeforeWrite(addr, register, value); master.WriteSingleRegister((byte)addr, (ushort)register, nValue); } Log(EEthernetLogItem.Send, $"Address : {addr:X2}, Register : {register} - {value:F1}"); } catch (Exception e) { Log(EEthernetLogItem.Exception, e.Message); throw new UT55AException( "Occurred TCP stream sending error in UlUT55AEthernetClient.Write", EUT55AException.Send); } }
public int SetDataSingle(out byte[] requestBytes, out byte[] responseBytes, ushort start, ushort reg, out string errCode) { errCode = "OK"; try { if (_config.SelectedMemType == Memtype.Coils) { _modbus.WriteSingleCoil(_config.Slaves, start, reg > 0); } if (_config.SelectedMemType == Memtype.HoldingRegisters) { _modbus.WriteSingleRegister(_config.Slaves, start, reg); } return(0); } catch (SlaveException ex) { errCode = ex.Message; return(1); } catch (Exception ex) { if (ex is InvalidOperationException) { throw; } errCode = ex.Message; return(2); } finally { requestBytes = _modbus.Transport.RequestFrame; responseBytes = _modbus.Transport.ResponseFrame; } }
private static void WriteRegister <TResult>(HoldRegister index, byte slaveId, ModbusSerialMaster master, decimal value) where TResult : struct { //Как хранится Int8??? в первом байте или во втором ushort? //возможно надо будет Buffer.BlockCopy(s, 0, dest, 0, readsize * 2); и брать dest[1] var address = index.RealAddress; //int32 = 4 var size = index.DataType.GetDataTypeSize(); //кол-во ushort для записи var readSize = (ushort)(size / 2); if (size < 2) { readSize = 1; } var dest = new ushort[readSize]; var realValue = new[] { (TResult)Convert.ChangeType(index.Multiplier * value, typeof(TResult)) }; Buffer.BlockCopy(realValue, 0, dest, 0, size); if (readSize == 1) { master.WriteSingleRegister(slaveId, address, dest[0]); } else { master.WriteMultipleRegisters(slaveId, address, dest); } }
private void vScrollBar1_Scroll(object sender, ScrollEventArgs e) { try { //MessageBox.Show(String.Format("{0}", e.NewValue)); serialTransportRS485.WriteSingleRegister(1, 49999, STATUSW); Thread.Sleep(100); serialTransportRS485.WriteSingleRegister(1, 50009, Convert.ToUInt16(e.NewValue)); Thread.Sleep(100); //MessageBox.Show("All write!"); } catch (Exception ex) { String sMessage = String.Format("{0} {1}", DateTime.Now.ToString("hh:mm:ss "), ex.Message); logBox.Items.Add(sMessage); } }
/// <summary> /// 设定指定通道温度 /// </summary> /// <param name="Address">站号地址</param> /// <param name="Channel">通道地址</param> /// <param name="Temp">设定的温度</param> /// <returns>成功或失败</returns> public static bool Set_SP(byte Address, ushort Channel, short Temp) { if (PMAMaster == null) { return(false); } byte SlaveAddress = Address; ushort StartAddress = (ushort)(17526 + Channel * 512); ushort Value = Auxiliary.ShortToUshort((short)(Temp * 10)); float PV = 0; try { lock (LockValue) { PMAMaster.WriteSingleRegister(SlaveAddress, StartAddress, Value); } if (Get_PV(SlaveAddress, StartAddress, ref PV) == false) { return(false); } if (PV != Temp) { return(false); } return(true); } catch { return(false); } }
/// <summary> /// Отключение от устройства /// </summary> /// <param name="_portName">Имя порта</param> /// <param name="_errMessage">Сообщение</param> /// <returns></returns> internal void DisconnectToDevice() { if (_serial.IsOpen && _timer.IsEnabled) { // <Сброс регистров> var cleanRegs = new ushort[3] { 6, 7, 8 }; for (int i = 0; i < cleanRegs.Length; i++) { _master.WriteSingleRegister(slaveID, cleanRegs[i], 0); } //</Сброс регистров> } _countTimes = 0; CleanSeriesWithChart(); _timer.Stop(); _serial.Close(); _serial.Dispose(); _master.Dispose(); _errMessage = "Остановлено"; _stateSerialPort = "Подключить"; _queryRegisters = "Start"; }
/// <summary> /// 修改当前运行速度 /// </summary> /// <param name="address">地址0-31</param> /// <param name="speed">设定的速度</param> /// <param name="IsUse">是否更新当前速度</param> public static bool SetSpeed(byte Address, ushort speed) { try { lock (LockValue) { Thread.Sleep(2); if (speed > 1000) { speed = 1000; } PanasonicA6Master.WriteSingleRegister(Address, 17920, speed); A6_Channel[Address - 1].SetSpeed = speed; } return(true); } catch { return(false); } }
private void MasterWrite() { try { byte slaveAddress = Convert.ToByte(txtSlaveAdress.Text); ushort registerAddress = Convert.ToUInt16(txtRegiAdress.Text); //ex)40003->3 ushort value = Convert.ToUInt16(txtValue.Text); //0~10V : 0~10000 master.WriteSingleRegister(slaveAddress, registerAddress, value); lblStatus.Text = "master write"; } catch (Exception ex) { lblStatus.Text = ex.Message; } }
public void WritemASet(byte slaveAddress, SerialPort serialPort1) { try { ModbusSerialMaster master = ModbusSerialMaster.CreateRtu(serialPort1); ushort mASetValue = (ushort)(mASet * 4096 / PowerSupplyType.MaxmA); master.WriteSingleRegister(slaveAddress, 40001, mASetValue);//写管电流,先不做验证是否写成功 ComStateFlag = true; } catch (Exception) { MessageBox.Show("请检查端口设置", "错误提示"); ComStateFlag = false; //throw; } }
public void WriteSingleRegister(byte slaveAddress, ushort registerAddress, ushort value) { if (!serialPort.IsOpen) { Open(); } try { master.WriteSingleRegister(slaveAddress, registerAddress, value); } catch (Exception ex) { AddMessage("Catch exception in the function WriteSingleRegister(). " + ex.Message, DebugLevel.ExceptionLevel); Close(); } }
public void WriteFilLimitSet(byte slaveAddress, SerialPort serialPort1) { try { ModbusSerialMaster master = ModbusSerialMaster.CreateRtu(serialPort1); if (FilLimitSet > PowerSupplyType.MaxFilLimit)//不要超过最大值 { FilLimitSet = PowerSupplyType.MaxFilLimit; } ushort FilLimitSetValue = (ushort)(FilLimitSet * 4096 / 10); master.WriteSingleRegister(slaveAddress, 40005, FilLimitSetValue);//写管电压,先不做验证是否写成功 ComStateFlag = true; } catch (Exception) { MessageBox.Show("请检查端口设置", "错误提示"); ComStateFlag = false; //throw; } }
//set AO private void AO_click(object sender, EventArgs e) { byte slaveID = 1; frmInputValue inputvalue = new frmInputValue(); if (serialPort.IsOpen == true) { ushort index = ushort.Parse(((TextBox)sender).Tag.ToString()); inputvalue.StringValue = ((TextBox)sender).Text; inputvalue.ShowDialog(); if (inputvalue.DialogResult == DialogResult.OK) { double value = inputvalue.Value; ushort aovalue = (ushort)value; //use gain=20/32767, offset=0 //ushort aovalue = (ushort)(value * 32767 / 20.0); master.WriteSingleRegister(slaveID, index, aovalue); } } }
public void WriteRegisters(IMsgUart msg) { try { short startAddress = GetStartAddress(msg); if (startAddress != -1) { var propsInfo = msg.GetType().GetProperties(); if ((propsInfo != null) && (propsInfo.Length > 0)) { for (int i = 0; i < propsInfo.Length; i++) { ushort data = Convert.ToUInt16(propsInfo[i].GetValue(msg, null)); _Master.WriteSingleRegister(_SlaveId, (ushort)(startAddress + i), data); } } } } catch (Exception e) { } }
private void Stop_Click(object sender, RoutedEventArgs e) { try { ushort adress = 19; ushort value = 0; master.WriteSingleRegister(slaveID, adress, value); rezh = 0; } catch { MessageBox.Show("Ошибка подключения"); } }