資源簡介
這是PLC與上位機的MODBUS通訊程序,使用施耐德PLC已調(diào)試通過。
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Collections;
using?System.Threading;
using?System.IO.Ports;
namespace?HMI
{
????public?class?EMS
????{
????????public?int[]?AnalogArr;
????????public?int[]?SwitchArr;
????????private?ArrayList?SendArray?=?new?ArrayList();
????????//public?Thread?SendThread?RcvThread;
????????private?SerialPort?SPort?=?new?SerialPort();
????????public?bool?IsOpen?=?false;
????????public?string?PortName?=?““;
????????public?int?PortAddr?=?1;
????????public?bool?PortFlag?=?false;
????????public?int?RcvTime?=?0;
????????public??bool?isRead?=?true;
????????public?EMS(int?AnalogNumint?SwitchNum)
????????{
????????????AnalogArr?=?new?int[256?AnalogNum];
????????????SwitchArr?=?new?int[256?SwitchNum];
????????}
????????//打開串口
????????public?bool?Open(string?portName?int?baudRate?int?databits?Parity?parity?StopBits?stopBits?int?ReadTimeout?int?WriteTimeout)
????????{
????????????try
????????????{
????????????????if?(!SPort.IsOpen)
????????????????{
????????????????????PortName?=?portName;
????????????????????SPort.PortName?=?portName;
????????????????????SPort.BaudRate?=?baudRate;
????????????????????SPort.DataBits?=?databits;
????????????????????SPort.Parity?=?parity;
????????????????????SPort.StopBits?=?stopBits;
????????????????????SPort.ReadTimeout?=?ReadTimeout;
????????????????????SPort.WriteTimeout?=?WriteTimeout;
????????????????????SPort.Open();
????????????????????ThreadPool.QueueUserWorkItem(new?WaitCallback(SendMethod));
????????????????}
????????????????IsOpen?=?true;
????????????????return?true;
????????????}
????????????catch?{?return?false;?}
????????}
????????//關(guān)閉串口
????????public?bool?Close()
????????{
????????????try
????????????{
????????????????if?(SPort.IsOpen)
????????????????????SPort.Close();
????????????????IsOpen?=?false;
????????????????return?true;
????????????}
????????????catch
????????????{
????????????????return?false;
????????????}
????????}
????????#region?檢查CRC校驗
????????private?bool?CheckResponse(byte[]?response?int?Length)
????????{
????????????byte[]?CRC?=?new?byte[2];
????????????GetCRC(response?Length?ref?CRC);
????????????if?(CRC[0]?==?response[Length?-?2]?&&?CRC[1]?==?response[Length?-?1])
????????????????return?true;
????????????else
????????????????return?false;
????????}
????????#endregion
????????#region?計算CRC
????????private?void?GetCRC(byte[]?messageint?Length?ref?byte[]?CRC)
????????{
????????????ushort?CRCFull?=?0xFFFF;
????????????byte?CRCHigh?=?0xFF?CRCLow?=?0xFF;
????????????char?CRCLSB;
????????????for?(int?i?=?0;?i?????????????{
????????????????CRCFull?=?(ushort)(CRCFull?^?message[i]);
????????????????for?(int?j?=?0;?j?8;?j++)
????????????????{
????????????????????CRCLSB?=?(char)(CRCFull?&?0x0001);
????????????????????CRCFull?=?(ushort)((CRCFull?>>?1)?&?0x7FFF);
??????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????11600??2014-11-04?15:48??Modbus_測試\Modbus_測試\Modbus_測試\bin\Debug\Modbus_測試.vshost.exe
?????文件????????490??2009-08-31?00:40??Modbus_測試\Modbus_測試\Modbus_測試\bin\Debug\Modbus_測試.vshost.exe.manifest
?????文件??????97792??2014-11-04?15:49??Modbus_測試\Modbus_測試\Modbus_測試\bin\Debug\Modbus_測試.pdb
?????文件??????45568??2014-11-04?15:49??Modbus_測試\Modbus_測試\Modbus_測試\bin\Debug\Modbus_測試.exe
?????文件??????12991??2014-04-02?13:19??Modbus_測試\Modbus_測試\Modbus_測試\EMS.cs
?????文件??????11870??2014-10-28?12:17??Modbus_測試\Modbus_測試\Modbus_測試\EMS1.cs
?????文件???????9445??2014-11-04?15:49??Modbus_測試\Modbus_測試\Modbus_測試\Form1.cs
?????文件??????38691??2014-11-04?15:37??Modbus_測試\Modbus_測試\Modbus_測試\Form1.Designer.cs
?????文件???????6398??2014-11-04?15:37??Modbus_測試\Modbus_測試\Modbus_測試\Form1.resx
?????文件???????3921??2014-10-10?14:19??Modbus_測試\Modbus_測試\Modbus_測試\Form2.cs
?????文件??????25188??2014-10-10?14:19??Modbus_測試\Modbus_測試\Modbus_測試\Form2.Designer.cs
?????文件??????10513??2014-10-10?14:19??Modbus_測試\Modbus_測試\Modbus_測試\Form2.resx
?????文件???????1169??2014-10-09?15:27??Modbus_測試\Modbus_測試\Modbus_測試\frmDaBaoCheng.cs
?????文件??????12767??2014-10-09?15:27??Modbus_測試\Modbus_測試\Modbus_測試\frmDaBaoCheng.Designer.cs
?????文件???????6011??2014-10-09?15:27??Modbus_測試\Modbus_測試\Modbus_測試\frmDaBaoCheng.resx
?????文件??????15249??2014-11-04?15:49??Modbus_測試\Modbus_測試\Modbus_測試\ModbusClient.cs
?????文件???????4445??2014-10-10?14:12??Modbus_測試\Modbus_測試\Modbus_測試\Modbus_測試.csproj
?????文件???????7473??2014-07-21?09:16??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache
?????文件???????6347??2014-11-04?15:49??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件???????4671??2014-11-04?15:49??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\Modbus_測試.csproj.FileListAbsolute.txt
?????文件????????180??2014-11-04?15:37??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\Modbus_測試.Form1.resources
?????文件????????180??2014-11-04?14:35??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\Modbus_測試.Form2.resources
?????文件????????180??2014-11-04?14:35??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\Modbus_測試.frmDaBaoCheng.resources
?????文件????????180??2014-11-04?14:35??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\Modbus_測試.Properties.Resources.resources
?????文件????????688??2014-11-04?15:37??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\GenerateResource.read.1.tlog
?????文件???????1586??2014-11-04?15:37??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\GenerateResource.write.1.tlog
?????文件??????97792??2014-11-04?15:49??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\Modbus_測試.pdb
?????文件??????45568??2014-11-04?15:49??Modbus_測試\Modbus_測試\Modbus_測試\obj\x86\Debug\Modbus_測試.exe
?????文件????????494??2014-10-20?13:07??Modbus_測試\Modbus_測試\Modbus_測試\Program.cs
?????文件???????1376??2014-03-27?09:20??Modbus_測試\Modbus_測試\Modbus_測試\Properties\AssemblyInfo.cs
............此處省略20個文件信息
評論
共有 條評論