123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729 |
- using CCDCount.DLL.Tools;
- using CCDCount.MODEL.PlcModel;
- using System;
- using System.Linq;
- namespace CCDCount.DLL
- {
- public class PLCManagementClass
- {
- private bool isConnect = false;
- public bool IsConnect
- {
- get
- {
- return isConnect;
- }
- }
- public ModbusTcpClient modbusTcpClient = new ModbusTcpClient();
- public PLCManagementClass(string ipAddress)
- {
- //ConnectModbus("127.0.0.1");
- ConnectModbus(ipAddress);
- //ConnectModbus("192.168.1.88");
- }
- public void ConnectModbus(string ipAddress)
- {
- if (!modbusTcpClient.Connect(ipAddress))
- {
- FaultLog.RecordErrorMessage($"Modbus通讯连接失败,目标IP:{ipAddress}");
- isConnect = false;
- return;
- }
- isConnect = true;
- }
- /// <summary>
- /// 归零置为True
- /// </summary>
- public void ReturnToZeroToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 0, values: true);
- }
- /// <summary>
- /// 归零置为False
- /// </summary>
- public void ReturnToZeroToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 0, values: false);
- }
- /// <summary>
- /// 复位置为True
- /// </summary>
- public void RepositionToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 1, values: true);
- }
- /// <summary>
- /// 复位置为False
- /// </summary>
- public void RepositionToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 1, values: false);
- }
- /// <summary>
- /// 轴停止置为True
- /// </summary>
- public void ShaftStopsToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 2, values: true);
- }
- /// <summary>
- /// 轴停止置为False
- /// </summary>
- public void ShaftStopsToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 2, values: false);
- }
- /// <summary>
- /// 正转点动置为True
- /// </summary>
- public void ForwardRotatingJogToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 3, values: true);
- }
- /// <summary>
- /// 正转点动置为False
- /// </summary>
- public void ForwardRotatingJogToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 3, values: false);
- }
- /// <summary>
- /// 反转点动置为True
- /// </summary>
- public void ReversalReverseJogToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 4, values: true);
- }
- /// <summary>
- /// 反转点动置为False
- /// </summary>
- public void ReversalReverseJogToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 4, values: false);
- }
- /// <summary>
- /// 速度运行设置为True
- /// </summary>
- public void SpeedRunToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 5, values: true);
- }
- /// <summary>
- /// 速度运行设置为False
- /// </summary>
- public void SpeedRunToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 5, values: false);
- }
- /// <summary>
- /// 启动设置为True
- /// </summary>
- public void InitiateToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 6, values: true);
- }
- /// <summary>
- /// 启动设置为False
- /// </summary>
- public void InitiateToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 6, values: false);
- }
- /// <summary>
- /// 停止设置为True
- /// </summary>
- public void StopToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 7, values: true);
- }
- /// <summary>
- /// 停止设置为False
- /// </summary>
- public void StopToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 7, values: false);
- }
- /// <summary>
- /// 设备运行设置为True
- /// </summary>
- public void EquipmentOperationToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 8, values: true);
- }
- /// <summary>
- /// 设备运行设置为False
- /// </summary>
- public void EquipmentOperationToFalse()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 8, values: false);
- }
- /// <summary>
- /// 写入完成设置为True
- /// </summary>
- public void WriteDoneToTrue()
- {
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 11, values: true);
- }
- /// <summary>
- /// 读取写入完成
- /// </summary>
- /// <returns></returns>
- public bool ReadAllowWrite()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress:12, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取使能完成
- /// </summary>
- /// <returns></returns>
- public bool ReadEnableCompletion()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 14, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取归零完成
- /// </summary>
- /// <returns></returns>
- public bool ReadReturnToZeroCompletion()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 15, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取停止完成
- /// </summary>
- /// <returns></returns>
- public bool ReadStopCompletion()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 16, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取速度运行中
- /// </summary>
- public bool ReadSpeedRunning()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 17, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取归零中
- /// </summary>
- /// <returns></returns>
- public bool ReadReturnToZero()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 18, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取中转阀开定位完成
- /// </summary>
- /// <returns></returns>
- public bool ReadTransferValveOpenCompletion()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 19, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取中转阀关定位完成
- /// </summary>
- public bool ReadTransferValveCloseCompletion()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 20, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取允许数据交换
- /// </summary>
- public bool ReadAllowsDataExchange()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 21, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取暂停数据交换
- /// </summary>
- public bool ReadPauseDataExchange()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 22, numRegisters: 1)[0];
- }
- /// <summary>
- /// 缓存计数延时完成
- /// </summary>
- /// <returns></returns>
- public bool ReadCacheCountDelayed()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 23, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取使能
- /// </summary>
- /// <returns></returns>
- public bool ReadEnable()
- {
- return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 24, numRegisters: 1)[0];
- }
- /// <summary>
- /// 读取所有状态(状态操作后十位)
- /// </summary>
- public PlcStaticModelClass ReadAllState()
- {
- PlcStaticModelClass result = null;
- bool[] Readresult = modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 14, numRegisters: 11);
- if (Readresult == null) return null;
- result = new PlcStaticModelClass()
- {
- EnableCompletion = Readresult[0],
- ReturnToZeroCompletion = Readresult[1],
- StopCompletion = Readresult[2],
- SpeedRunning = Readresult[3],
- ReturnToZero = Readresult[4],
- TransferValveOpenCompletion = Readresult[5],
- TransferValveCloseCompletion = Readresult[6],
- AllowsDataExchange = Readresult[7],
- PauseDataExchange = Readresult[8],
- CacheCountDelayed = Readresult[9],
- Enable = Readresult[10]
- };
- return result;
- }
- /// <summary>
- /// 写入速度模式运行速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteSpeedModeRunningSpeed(float Value)
- {
- modbusTcpClient.WriteMultipleReals(1, 110, new float[] { Value }, "ABCD");
- }
- /// <summary>
- /// 写入点动速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteJogSpeed(float Value)
- {
- modbusTcpClient.WriteMultipleReals(1, 114, new float[] { Value }, "ABCD");
- }
- /// <summary>
- /// 写入罐装设定值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottValueSet(UInt16 Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 118, Value);
- }
- /// <summary>
- /// 写入中转阀打开速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteTransferValveOpeningSpeed(float Value)
- {
- modbusTcpClient.WriteMultipleReals(1, 122, new float[] { Value }, "ABCD");
- }
- /// <summary>
- /// 写入中转阀打开时间
- /// </summary>
- public void WriteTransferValveOpeningTime(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 126, Value);
- }
- /// <summary>
- /// 写入罐装减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingDecelerationValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 130, Value);
- }
- /// <summary>
- /// 写入缓存减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheDecelerationValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 134, Value);
- }
- /// <summary>
- /// 写入缓存计时延时时间
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheCountDelayTiming(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 138, Value);
- }
- /// <summary>
- /// 写入缓存停机值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheShutdownValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 142, Value);
- }
- /// <summary>
- /// 写入罐装料筒震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingMaterialCylinderVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 146, Value);
- }
- /// <summary>
- /// 写入罐装过滤震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingFilterVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 150, Value);
- }
- /// <summary>
- /// 写入罐装计数震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingCountVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 154, Value);
- }
- /// <summary>
- /// 写入罐装料筒震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingMaterialCylinderVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 158, Value);
- }
- /// <summary>
- /// 写入罐装过滤震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingFilterVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 162, Value);
- }
- /// <summary>
- /// 写入罐装计数震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingCountVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 166, Value);
- }
- /// <summary>
- /// 写入缓存料筒震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheMaterialCylinderVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 170, Value);
- }
- /// <summary>
- /// 写入缓存过滤震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheFilterVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 174, Value);
- }
- /// <summary>
- /// 写入缓存计数震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheCountVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 178, Value);
- }
- /// <summary>
- /// 写入缓存料筒震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheMaterialCylinderVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 182, Value);
- }
- /// <summary>
- /// 写入缓存过滤震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheFilterVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 186, Value);
- }
- /// <summary>
- /// 写入缓存计数震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheCountVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 190, Value);
- }
- /// <summary>
- /// 写入闸门打开延时
- /// </summary>
- /// <param name="Value"></param>
- public void WriteGateOpeningDelay(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 194, Value);
- }
- /// <summary>
- /// 写入回零偏移值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteReturnToZeroOffsetValue(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 198, Value);
- }
- /// <summary>
- /// 写入回零偏移速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteReturnToZeroOffsetSpeed(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 202, Value);
- }
- /// <summary>
- /// 写入中转阀关闭速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteTransferValveClosingSpeed(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 206, Value);
- }
- /// <summary>
- /// 写入中转阀开位置
- /// </summary>
- /// <param name="Value"></param>
- public void WriteTransferValveOpenPosition(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 210, Value);
- }
- /// <summary>
- /// 写入中转阀关位置
- /// </summary>
- /// <param name="Value"></param>
- public void WriteTransferValveClosePosition(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 214, Value);
- }
- /// <summary>
- /// 写入空气阀开启延时
- /// </summary>
- public void WriteAirValveOpeningDelay(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 218, Value);
- }
- /// <summary>
- /// 写入罐装停机值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottlingShutdownValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 230, Value);
- }
- /// <summary>
- /// 写入罐装停机时间
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottlingShutdownTime(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 234, Value);
- }
- /// <summary>
- /// 读取所有参数(参数数据表)
- /// </summary>
- public PlcParaModelClass ReadAllPara()
- {
- PlcParaModelClass result = null;
- var results = modbusTcpClient.ReadHoldingRegisters(slaveId: 1, startAddress: 110, numRegisters: 124);
- if (results == null) return null;
- result = new PlcParaModelClass()
- {
- SpeedModeRunningSpeed = GetFloatFromRegisters(results.Take(2).ToArray()),
- JogSpeed = GetFloatFromRegisters(results.Skip(4).Take(2).ToArray()),
- BottValueSet = results[8],
- TransferValveOpeningSpeed = GetFloatFromRegisters(results.Skip(12).Take(2).ToArray()),
- TransferValveOpeningTime = GetInt32FromRegisters(results.Skip(16).Take(2).ToArray()),
- BottingDecelerationValue = results[20],
- CacheDecelerationValue = results[24],
- CacheCountDelayTiming = GetInt32FromRegisters(results.Skip(28).Take(2).ToArray()),
- CacheShutdownValue = results[32],
- BottingMaterialCylinderVibrationTableHighSpeedValue = results[36],
- BottingFilterVibrationTableHighSpeedValue = results[40],
- BottingCountVibrationTableHighSpeedValue = results[44],
- BottingMaterialCylinderVibrationTableDecelerationSpeedValue = results[48],
- BottingFilterVibrationTableDecelerationSpeedValue = results[52],
- BottingCountVibrationTableDecelerationSpeedValue = results[56],
- CacheMaterialCylinderVibrationTableHighSpeedValue = results[60],
- CacheFilterVibrationTableHighSpeedValue = results[64],
- CacheCountVibrationTableHighSpeedValue = results[68],
- CacheMaterialCylinderVibrationTableDecelerationSpeedValue = results[72],
- CacheFilterVibrationTableDecelerationSpeedValue = results[76],
- CacheCountVibrationTableDecelerationSpeedValue = results[80],
- GateOpeningDelay = GetInt32FromRegisters(results.Skip(84).Take(2).ToArray()),
- ReturnToZeroOffsetValue = GetFloatFromRegisters(results.Skip(88).Take(2).ToArray()),
- ReturnToZeroOffsetSpeed = GetFloatFromRegisters(results.Skip(92).Take(2).ToArray()),
- TransferValveClosingSpeed = GetFloatFromRegisters(results.Skip(96).Take(2).ToArray()),
- TransferValveOpenPosition = GetFloatFromRegisters(results.Skip(100).Take(2).ToArray()),
- TransferValveClosePosition = GetFloatFromRegisters(results.Skip(104).Take(2).ToArray()),
- AirValveOpeningDelay = GetInt32FromRegisters(results.Skip(108).Take(2).ToArray()),
- BottlingShutdownValue = results[120],
- BottlingShutdownTime = modbusTcpClient.ReadHoldingRegistersAsInt32(slaveId: 1, startAddress: 234, count: 1)[0],
- };
- return result;
- }
- /// <summary>
- /// 获取16位寄存器中的32Uint位值
- /// </summary>
- private UInt32 GetInt32FromRegisters(ushort[] registers)
- {
- ushort highRegister = registers[0];
- ushort lowRegister = registers[1];
- // 根据字节序组合成32位值
- byte[] bytes = new byte[4];
- if (BitConverter.IsLittleEndian)
- {
- bytes[3] = (byte)((highRegister >> 8) & 0xFF);
- bytes[2] = (byte)(highRegister & 0xFF);
- bytes[1] = (byte)((lowRegister >> 8) & 0xFF);
- bytes[0] = (byte)(lowRegister & 0xFF);
- }
- else
- {
- bytes[0] = (byte)((highRegister >> 8) & 0xFF);
- bytes[1] = (byte)(highRegister & 0xFF);
- bytes[2] = (byte)((lowRegister >> 8) & 0xFF);
- bytes[3] = (byte)(lowRegister & 0xFF);
- }
- // 转换为float
- return (UInt32)BitConverter.ToInt32(bytes, 0);
- }
- /// <summary>
- /// 获取16位寄存器中的32Float位值
- /// </summary>
- private float GetFloatFromRegisters(ushort[] registers)
- {
- string byteOrder = "ABCD";
- ushort highRegister = registers[0];
- ushort lowRegister = registers[1];
- byte[] bytes = ConvertToByteArray(lowRegister, highRegister, byteOrder);
- return BitConverter.ToSingle(bytes, 0); ;
- }
- /// <summary>
- /// 将寄存器数组换为字节数组转(根据指定字节序)
- /// </summary>
- /// <param name="lowRegister">低位寄存器</param>
- /// <param name="highRegister">高位寄存器</param>
- /// <param name="byteOrder">字节序</param>
- /// <returns>字节数组</returns>
- private byte[] ConvertToByteArray(ushort lowRegister, ushort highRegister, string byteOrder)
- {
- byte[] bytes = new byte[4];
- switch (byteOrder.ToUpper())
- {
- case "ABCD": // 大端序
- bytes[0] = (byte)(highRegister >> 8);
- bytes[1] = (byte)(highRegister & 0xFF);
- bytes[2] = (byte)(lowRegister >> 8);
- bytes[3] = (byte)(lowRegister & 0xFF);
- break;
- case "CDAB": // 小端序
- bytes[0] = (byte)(lowRegister >> 8);
- bytes[1] = (byte)(lowRegister & 0xFF);
- bytes[2] = (byte)(highRegister >> 8);
- bytes[3] = (byte)(highRegister & 0xFF);
- break;
- case "BADC":
- bytes[0] = (byte)(highRegister & 0xFF);
- bytes[1] = (byte)(highRegister >> 8);
- bytes[2] = (byte)(lowRegister & 0xFF);
- bytes[3] = (byte)(lowRegister >> 8);
- break;
- case "DCBA":
- bytes[0] = (byte)(lowRegister & 0xFF);
- bytes[1] = (byte)(lowRegister >> 8);
- bytes[2] = (byte)(highRegister & 0xFF);
- bytes[3] = (byte)(highRegister >> 8);
- break;
- default:
- // 默认使用ABCD顺序
- bytes[0] = (byte)(highRegister >> 8);
- bytes[1] = (byte)(highRegister & 0xFF);
- bytes[2] = (byte)(lowRegister >> 8);
- bytes[3] = (byte)(lowRegister & 0xFF);
- break;
- }
- return bytes;
- }
- /// <summary>
- /// 切换使能
- /// </summary>
- public void SwitchEnable()
- {
- bool Enable = ReadEnable();
- modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 24, values: !Enable);
- }
- }
- }
|