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