资源简介
这是PLC与上位机的MODBUS通讯程序,使用施耐德PLC已调试通过。

代码片段和文件信息
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; }
}
//关闭串口
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 < Length - 2; 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个文件信息
- 上一篇:简单登录界面代码asp.net
- 下一篇:QuadTree四叉树实现代码 C#
相关资源
- C# TIP文件生成和拆解
- C#解析HL7消息的库135797
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
评论
共有 条评论