using CCDCount.DLL.Tools;
using CCDCount.MODEL.PlcModel;
using System;
using System.Linq;
using System.Security.Cryptography;
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;
}
///
/// 归零置为True
///
public void ReturnToZeroToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 0, values: true);
}
///
/// 归零置为False
///
public void ReturnToZeroToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 0, values: false);
}
///
/// 复位置为True
///
public void RepositionToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 1, values: true);
}
///
/// 复位置为False
///
public void RepositionToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 1, values: false);
}
///
/// 轴停止置为True
///
public void ShaftStopsToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 2, values: true);
}
///
/// 轴停止置为False
///
public void ShaftStopsToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 2, values: false);
}
///
/// 正转点动置为True
///
public void ForwardRotatingJogToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 3, values: true);
}
///
/// 正转点动置为False
///
public void ForwardRotatingJogToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 3, values: false);
}
///
/// 反转点动置为True
///
public void ReversalReverseJogToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 4, values: true);
}
///
/// 反转点动置为False
///
public void ReversalReverseJogToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 4, values: false);
}
///
/// 速度运行设置为True
///
public void SpeedRunToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 5, values: true);
}
///
/// 速度运行设置为False
///
public void SpeedRunToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 5, values: false);
}
///
/// 启动设置为True
///
public void InitiateToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 6, values: true);
}
///
/// 启动设置为False
///
public void InitiateToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 6, values: false);
}
///
/// 停止设置为True
///
public void StopToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 7, values: true);
}
///
/// 停止设置为False
///
public void StopToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 7, values: false);
}
///
/// 设备运行设置为True
///
public void EquipmentOperationToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 8, values: true);
}
///
/// 设备运行设置为False
///
public void EquipmentOperationToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 8, values: false);
}
///
/// 写入完成设置为True
///
public void WriteDoneToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 11, values: true);
}
///
/// 写入一级震台启动为True
///
public void SwitchLevelOneVibrationTable()
{
bool Enable = ReadLevelOneVibrationTable();
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 25, values: !Enable);
}
///
/// 二级震台启动
///
public void SwitchLevelTwoVibrationTable()
{
bool Enable = ReadLevelTwoVibrationTable();
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 26, values: !Enable);
}
///
/// 三级震台启动
///
public void SwitchLevelThreeVibrationTable()
{
bool Enable = ReadLevelThreeVibrationTable();
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 27, values: !Enable);
}
///
/// 设备上升
///
public void WriteDeviceUpToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 28, values: true);
}
public void WriteDeviceUpToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 28, values: false);
}
///
/// 设备下降
///
public void WriteDeviceDownToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 29, values: true);
}
public void WriteDeviceDownToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 29, values: false);
}
///
/// 传送带启动
///
public void SwitchTransferStart()
{
bool Enable = ReadTransferStart();
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 30, values: !Enable);
}
///
/// 气锁关
///
public void SwitchAirValveClose()
{
bool Enable = ReadAirValveClose();
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 31, values: !Enable);
}
///
/// 送瓶轮复位
///
public void WriteBottleFeedingWheelResetToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 32, values: true);
}
public void WriteBottleFeedingWheelResetToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 32, values: false);
}
///
/// 送瓶轮回零
///
public void WriteBottleFeedingWheelReturnToZeroToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 33, values: true);
}
public void WriteBottleFeedingWheelReturnToZeroToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 33, values: false);
}
///
/// 送瓶轮轴停止
///
public void WriteBottleFeedingWheelShaftStopsToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 34, values: true);
}
public void WriteBottleFeedingWheelShaftStopsToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 34, values: false);
}
///
/// 送瓶轮正转点动
///
public void WriteBottleFeedingWheelPositiveRotationJogToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 36, values: true);
}
public void WriteBottleFeedingWheelPositiveRotationJogToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 36, values: false);
}
///
/// 送瓶轮反转点动
///
public void WriteBottleFeedingWheelReverseRotationJogToTrue()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 37, values: true);
}
public void WriteBottleFeedingWheelReverseRotationJogToFalse()
{
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 37, values: false);
}
///
/// 送瓶轮使能
///
public void SwitchBottleFeedingWheelEnable()
{
bool Enable = ReadBottleFeedingWheelEnable();
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 38, values: !Enable);
}
///
/// 读取写入完成
///
///
public bool ReadAllowWrite()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress:12, numRegisters: 1)[0];
}
///
/// 读取使能完成
///
///
public bool ReadEnableCompletion()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 14, numRegisters: 1)[0];
}
///
/// 读取归零完成
///
///
public bool ReadReturnToZeroCompletion()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 15, numRegisters: 1)[0];
}
///
/// 读取停止完成
///
///
public bool ReadStopCompletion()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 16, numRegisters: 1)[0];
}
///
/// 读取速度运行中
///
public bool ReadSpeedRunning()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 17, numRegisters: 1)[0];
}
///
/// 读取归零中
///
///
public bool ReadReturnToZero()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 18, numRegisters: 1)[0];
}
///
/// 读取中转阀开定位完成
///
///
public bool ReadTransferValveOpenCompletion()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 19, numRegisters: 1)[0];
}
///
/// 读取中转阀关定位完成
///
public bool ReadTransferValveCloseCompletion()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 20, numRegisters: 1)[0];
}
///
/// 读取允许数据交换
///
public bool ReadAllowsDataExchange()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 21, numRegisters: 1)[0];
}
///
/// 读取暂停数据交换
///
public bool ReadPauseDataExchange()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 22, numRegisters: 1)[0];
}
///
/// 缓存计数延时完成
///
///
public bool ReadCacheCountDelayed()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 23, numRegisters: 1)[0];
}
///
/// 读取使能
///
///
public bool ReadEnable()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 24, numRegisters: 1)[0];
}
///
/// 读取一级震台启动
///
public bool ReadLevelOneVibrationTable()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 25, numRegisters: 1)[0];
}
///
/// 读取二级震台启动
///
public bool ReadLevelTwoVibrationTable()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 26, numRegisters: 1)[0];
}
///
/// 读取三级震台启动
///
public bool ReadLevelThreeVibrationTable()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 27, numRegisters: 1)[0];
}
///
/// 读取传送带启动
///
public bool ReadTransferStart()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 30, numRegisters: 1)[0];
}
///
/// 读取气锁关
///
public bool ReadAirValveClose()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 31, numRegisters: 1)[0];
}
///
/// 读取送瓶轮使能
///
public bool ReadBottleFeedingWheelEnable()
{
return modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 38, numRegisters: 1)[0];
}
///
/// 读取所有状态
///
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]
};
Readresult = modbusTcpClient.ReadCoilsRegister(slaveId: 1, startAddress: 35, numRegisters: 5);
result.BottleFeedingWheelEnableCompletion = Readresult[0];
result.BottleFeedingWheelStopCompletion = Readresult[4];
return result;
}
///
/// 写入速度模式运行速度
///
///
public void WriteSpeedModeRunningSpeed(float Value)
{
modbusTcpClient.WriteMultipleReals(1, 1110, new float[] { Value }, "BADC");
}
///
/// 写入点动速度
///
///
public void WriteJogSpeed(float Value)
{
modbusTcpClient.WriteMultipleReals(1, 1114, new float[] { Value }, "BADC");
}
///
/// 写入罐装设定值
///
///
public void WriteBottValueSet(UInt16 Value)
{
modbusTcpClient.WriteSingleRegister(1, 1118, Value);
}
///
/// 写入中转阀打开速度
///
///
public void WriteTransferValveOpeningSpeed(float Value)
{
modbusTcpClient.WriteMultipleReals(1, 1122, new float[] { Value }, "BADC");
}
///
/// 写入中转阀打开时间
///
public void WriteTransferValveOpeningTime(UInt32 Value)
{
modbusTcpClient.WriteSingleInt32(1, 1126, Value);
}
///
/// 写入罐装减速值
///
///
public void WriteBottingDecelerationValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1130, Value);
}
///
/// 写入缓存减速值
///
///
public void WriteCacheDecelerationValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1134, Value);
}
///
/// 写入缓存计时延时时间
///
///
public void WriteCacheCountDelayTiming(UInt32 Value)
{
modbusTcpClient.WriteSingleInt32(1, 1138, Value);
}
///
/// 写入缓存停机值
///
///
public void WriteCacheShutdownValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1142, Value);
}
///
/// 写入罐装料筒震台高速值
///
///
public void WriteBottingMaterialCylinderVibrationTableHighSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1146, Value);
}
///
/// 写入罐装过滤震台高速值
///
///
public void WriteBottingFilterVibrationTableHighSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1150, Value);
}
///
/// 写入罐装计数震台高速值
///
///
public void WriteBottingCountVibrationTableHighSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1154, Value);
}
///
/// 写入罐装料筒震台减速值
///
///
public void WriteBottingMaterialCylinderVibrationTableDecelerationSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1158, Value);
}
///
/// 写入罐装过滤震台减速值
///
///
public void WriteBottingFilterVibrationTableDecelerationSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1162, Value);
}
///
/// 写入罐装计数震台减速值
///
///
public void WriteBottingCountVibrationTableDecelerationSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1166, Value);
}
///
/// 写入缓存料筒震台高速值
///
///
public void WriteCacheMaterialCylinderVibrationTableHighSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1170, Value);
}
///
/// 写入缓存过滤震台高速值
///
///
public void WriteCacheFilterVibrationTableHighSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1174, Value);
}
///
/// 写入缓存计数震台高速值
///
///
public void WriteCacheCountVibrationTableHighSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1178, Value);
}
///
/// 写入缓存料筒震台减速值
///
///
public void WriteCacheMaterialCylinderVibrationTableDecelerationSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1182, Value);
}
///
/// 写入缓存过滤震台减速值
///
///
public void WriteCacheFilterVibrationTableDecelerationSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1186, Value);
}
///
/// 写入缓存计数震台减速值
///
///
public void WriteCacheCountVibrationTableDecelerationSpeedValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1190, Value);
}
///
/// 写入闸门打开延时
///
///
public void WriteGateOpeningDelay(UInt32 Value)
{
modbusTcpClient.WriteSingleInt32(1, 1194, Value);
}
///
/// 写入回零偏移值
///
///
public void WriteReturnToZeroOffsetValue(float Value)
{
modbusTcpClient.WriteSingleReal(1, 1198, Value);
}
///
/// 写入回零偏移速度
///
///
public void WriteReturnToZeroOffsetSpeed(float Value)
{
modbusTcpClient.WriteSingleReal(1, 1202, Value);
}
///
/// 写入中转阀关闭速度
///
///
public void WriteTransferValveClosingSpeed(float Value)
{
modbusTcpClient.WriteSingleReal(1, 1206, Value);
}
///
/// 写入中转阀开位置
///
///
public void WriteTransferValveOpenPosition(float Value)
{
modbusTcpClient.WriteSingleReal(1, 1210, Value);
}
///
/// 写入中转阀关位置
///
///
public void WriteTransferValveClosePosition(float Value)
{
modbusTcpClient.WriteSingleReal(1, 1214, Value);
}
///
/// 写入空气阀开启延时
///
public void WriteAirValveOpeningDelay(UInt32 Value)
{
modbusTcpClient.WriteSingleInt32(1, 1218, Value);
}
///
/// 写入罐装停机值
///
///
public void WriteBottlingShutdownValue(ushort Value)
{
modbusTcpClient.WriteSingleRegister(1, 1230, Value);
}
///
/// 写入罐装停机时间
///
///
public void WriteBottlingShutdownTime(UInt32 Value)
{
modbusTcpClient.WriteSingleInt32(1, 1234, Value);
}
///
/// 读取所有参数(参数数据表)
///
public PlcParaModelClass ReadAllPara()
{
PlcParaModelClass result = null;
var results = modbusTcpClient.ReadHoldingRegisters(slaveId: 1, startAddress: 1110, 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],
};
results = modbusTcpClient.ReadHoldingRegisters(slaveId: 1, startAddress: 1234, numRegisters: 36);
result.BottlingShutdownTime = GetInt32FromRegisters(results.Take(2).ToArray());
result.BottleFeedingWheelRunningSpeed = GetFloatFromRegisters(results.Skip(8).Take(2).ToArray());
result.BottleFeedingWheelJogRunningSpeed = GetFloatFromRegisters(results.Skip(12).Take(2).ToArray());
result.BottleFeedingWheelReturnToZeroOffsetValue = GetFloatFromRegisters(results.Skip(16).Take(2).ToArray());
result.BottleFeedingWheelReturnToZeroSpeed = GetFloatFromRegisters(results.Skip(20).Take(2).ToArray());
result.BottleFeedingWheelPositionLength = GetFloatFromRegisters(results.Skip(24).Take(2).ToArray());
result.BottleFeedingWheelPauseTime = GetInt32FromRegisters(results.Skip(28).Take(2).ToArray());
result.DelayBlanking = GetInt32FromRegisters(results.Skip(32).Take(2).ToArray());
return result;
}
///
/// 获取16位寄存器中的32Uint位值
///
private UInt32 GetInt32FromRegisters(ushort[] registers,string byteOrder = "BADC")
{
ushort highRegister = registers[0];
ushort lowRegister = registers[1];
byte[] bytes = ConvertToByteArray(lowRegister, highRegister, byteOrder);
// 转换为float
return (UInt32)BitConverter.ToInt32(bytes, 0);
}
///
/// 获取16位寄存器中的32Float位值
///
private float GetFloatFromRegisters(ushort[] registers)
{
string byteOrder = "BADC";
ushort highRegister = registers[0];
ushort lowRegister = registers[1];
byte[] bytes = ConvertToByteArray(lowRegister, highRegister, byteOrder);
return BitConverter.ToSingle(bytes, 0); ;
}
///
/// 将寄存器数组换为字节数组转(根据指定字节序)
///
/// 低位寄存器
/// 高位寄存器
/// 字节序
/// 字节数组
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;
}
///
/// 切换使能
///
public void SwitchEnable()
{
bool Enable = ReadEnable();
modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 24, values: !Enable);
}
///
/// 切换闸门点动
///
/// 闸门编号
public void SwitchValveJog(int value)
{
if (value >= 0 && value <= 7)
{
ushort valveJog = ReadValveJog();
ushort mask = (ushort)(1 << value);
modbusTcpClient.WriteSingleRegister(slaveId: 1, registerAddress: 238, value: (ushort)(valveJog^mask));
}
}
///
/// 写入送瓶轮运行速度
///
///
public void WriteBottleFeedingWheelRunningSpeed(float result)
{
modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1242, value: result);
}
///
/// 送瓶轮点动速度
///
///
public void WriteBottleFeedingWheelJogRunningSpeed(float result)
{
modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1246, value: result);
}
///
/// 送瓶轮回零偏移值
///
///
public void WriteBottleFeedingWheelReturnToZeroOffsetValue(float result)
{
modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1250, value: result);
}
///
/// 送瓶轮回零速度
///
///
public void WriteBottleFeedingWheelReturnToZeroSpeed(float result)
{
modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1254, value: result);
}
///
/// 送瓶轮定位长度
///
///
public void WriteBottleFeedingWheelPositionLength(float result)
{
modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1258, value: result);
}
///
/// 送瓶轮暂停时间
///
///
public void WriteBottleFeedingWheelPauseTime(UInt32 result)
{
modbusTcpClient.WriteSingleInt32(slaveId: 1, startAddress: 1262, value: result);
}
///
/// 下料延时
///
///
public void WriteDelayBlanking(UInt32 result)
{
modbusTcpClient.WriteSingleInt32(slaveId: 1, startAddress: 1266, value: result);
}
///
/// 读取闸门点动
///
public ushort ReadValveJog()
{
return modbusTcpClient.ReadHoldingRegisters(slaveId: 1, startAddress: 238, numRegisters: 1)[0];
}
}
}