| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019 |
- 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 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>
- /// 写入一级震台启动为True
- /// </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 void WriteSpeedModeRunningSpeed(float Value)
- {
- modbusTcpClient.WriteMultipleReals(1, 1110, new float[] { Value }, "ABCD");
- }
- /// <summary>
- /// 写入点动速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteJogSpeed(float Value)
- {
- modbusTcpClient.WriteMultipleReals(1, 1114, new float[] { Value }, "ABCD");
- }
- /// <summary>
- /// 写入罐装设定值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottValueSet(UInt16 Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1118, Value);
- }
- /// <summary>
- /// 写入中转阀打开速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteTransferValveOpeningSpeed(float Value)
- {
- modbusTcpClient.WriteMultipleReals(1, 1122, new float[] { Value }, "ABCD");
- }
- /// <summary>
- /// 写入中转阀打开时间
- /// </summary>
- public void WriteTransferValveOpeningTime(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 1126, Value);
- }
- /// <summary>
- /// 写入罐装减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingDecelerationValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1130, Value);
- }
- /// <summary>
- /// 写入缓存减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheDecelerationValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1134, Value);
- }
- /// <summary>
- /// 写入缓存计时延时时间
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheCountDelayTiming(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 1138, Value);
- }
- /// <summary>
- /// 写入缓存停机值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheShutdownValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1142, Value);
- }
- /// <summary>
- /// 写入罐装料筒震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingMaterialCylinderVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1146, Value);
- }
- /// <summary>
- /// 写入罐装过滤震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingFilterVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1150, Value);
- }
- /// <summary>
- /// 写入罐装计数震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingCountVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1154, Value);
- }
- /// <summary>
- /// 写入罐装料筒震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingMaterialCylinderVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1158, Value);
- }
- /// <summary>
- /// 写入罐装过滤震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingFilterVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1162, Value);
- }
- /// <summary>
- /// 写入罐装计数震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottingCountVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1166, Value);
- }
- /// <summary>
- /// 写入缓存料筒震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheMaterialCylinderVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1170, Value);
- }
- /// <summary>
- /// 写入缓存过滤震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheFilterVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1174, Value);
- }
- /// <summary>
- /// 写入缓存计数震台高速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheCountVibrationTableHighSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1178, Value);
- }
- /// <summary>
- /// 写入缓存料筒震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheMaterialCylinderVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1182, Value);
- }
- /// <summary>
- /// 写入缓存过滤震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheFilterVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1186, Value);
- }
- /// <summary>
- /// 写入缓存计数震台减速值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteCacheCountVibrationTableDecelerationSpeedValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1190, Value);
- }
- /// <summary>
- /// 写入闸门打开延时
- /// </summary>
- /// <param name="Value"></param>
- public void WriteGateOpeningDelay(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 1194, Value);
- }
- /// <summary>
- /// 写入回零偏移值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteReturnToZeroOffsetValue(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 1198, Value);
- }
- /// <summary>
- /// 写入回零偏移速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteReturnToZeroOffsetSpeed(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 1202, Value);
- }
- /// <summary>
- /// 写入中转阀关闭速度
- /// </summary>
- /// <param name="Value"></param>
- public void WriteTransferValveClosingSpeed(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 1206, Value);
- }
- /// <summary>
- /// 写入中转阀开位置
- /// </summary>
- /// <param name="Value"></param>
- public void WriteTransferValveOpenPosition(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 1210, Value);
- }
- /// <summary>
- /// 写入中转阀关位置
- /// </summary>
- /// <param name="Value"></param>
- public void WriteTransferValveClosePosition(float Value)
- {
- modbusTcpClient.WriteSingleReal(1, 1214, Value);
- }
- /// <summary>
- /// 写入空气阀开启延时
- /// </summary>
- public void WriteAirValveOpeningDelay(UInt32 Value)
- {
- modbusTcpClient.WriteSingleInt32(1, 1218, Value);
- }
- /// <summary>
- /// 写入罐装停机值
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottlingShutdownValue(ushort Value)
- {
- modbusTcpClient.WriteSingleRegister(1, 1230, Value);
- }
- /// <summary>
- /// 写入罐装停机时间
- /// </summary>
- /// <param name="Value"></param>
- public void WriteBottlingShutdownTime(UInt32 Value)
- {
- 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)
- {
- 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);
- }
- /// <summary>
- /// 切换闸门点动
- /// </summary>
- /// <param name="value">闸门编号</param>
- 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));
- }
- }
- /// <summary>
- /// 写入送瓶轮运行速度
- /// </summary>
- /// <param name="result"></param>
- public void WriteBottleFeedingWheelRunningSpeed(float result)
- {
- modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1242, value: result);
- }
- /// <summary>
- /// 送瓶轮点动速度
- /// </summary>
- /// <param name="result"></param>
- public void WriteBottleFeedingWheelJogRunningSpeed(float result)
- {
- modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1246, value: result);
- }
- /// <summary>
- /// 送瓶轮回零偏移值
- /// </summary>
- /// <param name="result"></param>
- public void WriteBottleFeedingWheelReturnToZeroOffsetValue(float result)
- {
- modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1250, value: result);
- }
- /// <summary>
- /// 送瓶轮回零速度
- /// </summary>
- /// <param name="result"></param>
- public void WriteBottleFeedingWheelReturnToZeroSpeed(float result)
- {
- modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1254, value: result);
- }
- /// <summary>
- /// 送瓶轮定位长度
- /// </summary>
- /// <param name="result"></param>
- public void WriteBottleFeedingWheelPositionLength(float result)
- {
- modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 1258, value: result);
- }
- /// <summary>
- /// 送瓶轮暂停时间
- /// </summary>
- /// <param name="result"></param>
- public void WriteBottleFeedingWheelPauseTime(UInt32 result)
- {
- modbusTcpClient.WriteSingleInt32(slaveId: 1, startAddress: 1262, value: result);
- }
- /// <summary>
- /// 下料延时
- /// </summary>
- /// <param name="result"></param>
- public void WriteDelayBlanking(UInt32 result)
- {
- modbusTcpClient.WriteSingleInt32(slaveId: 1, startAddress: 1266, value: result);
- }
- /// <summary>
- /// 读取闸门点动
- /// </summary>
- public ushort ReadValveJog()
- {
- return modbusTcpClient.ReadHoldingRegisters(slaveId: 1, startAddress: 238, numRegisters: 1)[0];
- }
- }
- }
|