在C#程序中三菱PLC读写数据

news/2024/10/28 0:18:16/

首先添加引用 三菱PLCdll文件
1、导入 命名空间:
using HslCommunication.Profinet.Melsec;
2、声明一个PLC对象:
private MelsecMcNet melsecMcNet = null;
3、读取PLC地址值
///
/// 读取bool值
///
/// PLC地址:如M100,X100,Y100,B100
///
public bool ReadBool(string str_Add)
{
OperateResult rt = this.melsecMcNet.ReadBool(str_Add);
if (rt.IsSuccess)
return rt.Content;
else
return false;
}
///
/// 读取short值
///
/// PLC地址:如D100,W100,R100
///
public int ReadInt16(string str_Add)
{
OperateResult rt = melsecMcNet.ReadInt16(str_Add);
if (rt.IsSuccess)
{
return rt.Content;
}
else
{
return 0;
}
}
///
/// 读取ushort值
///
/// PLC地址:如D100,W100,R100
///
public int ReadUInt16(string str_Add)
{
OperateResult rt = melsecMcNet.ReadUInt16(str_Add);
if (rt.IsSuccess)
{
return rt.Content;
}
else
{
return 0;
}
}
///
/// 读取int值
///
/// PLC地址:如D100,W100,R100
///
public int ReadInt32(string str_Add)
{
OperateResult rt = melsecMcNet.ReadInt32(str_Add);
if (rt.IsSuccess)
return rt.Content;
else
return 0;
}
///
/// 读取uint值
///
/// PLC地址:如D100,W100,R100
///
public int ReadUInt32(string str_Add)
{
OperateResult rt = melsecMcNet.ReadUInt32(str_Add);
if (rt.IsSuccess)
return (int)rt.Content;
else
return 0;
}
///
/// 读取float值
///
/// PLC地址:如D100,W100,R100
///
public float ReadFloat(string str_Add)
{
OperateResult rt = melsecMcNet.ReadFloat(str_Add);
if (rt.IsSuccess)
return rt.Content;
else
return 0;
}
///
/// 读取double值
///
/// PLC地址:如D100,W100,R100
///
public double ReadDouble(string str_Add)
{
OperateResult rt = melsecMcNet.ReadDouble(str_Add);
if (rt.IsSuccess)
return rt.Content;
else
return 0;
}

    /// <summary>/// 读取多个连续的bool值/// </summary>/// <param name="str_Add">PLC地址:如M100,X100,Y100,B100</param>/// <param name="length">地址个数</param>/// <returns></returns>public bool[] ReadBool(string str_Add, ushort length){OperateResult<bool[]> rt = this.melsecMcNet.ReadBool(str_Add, length);if (rt.IsSuccess)            return rt.Content;            else            return null;            }/// <summary>/// 读取short值/// </summary>/// <param name="str_Add">PLC地址:如D100,W100,R100</param>/// <param name="length">地址个数</param> /// <returns></returns>public short[] ReadInt16(string str_Add, ushort length){OperateResult<short[]> rt = melsecMcNet.ReadInt16(str_Add, length);if (rt.IsSuccess)            return rt.Content;            else           return null;        }/// <summary>/// 读取ushort值/// </summary>/// <param name="str_Add">PLC地址:如D100,W100,R100</param>/// <param name="length">地址个数</param>/// <returns></returns>public ushort[] ReadUInt16(string str_Add, ushort length){OperateResult<ushort[]> rt = melsecMcNet.ReadUInt16(str_Add, length);if (rt.IsSuccess)         return rt.Content;          else           return null;            }/// <summary>/// 读取int值/// </summary>/// <param name="str_Add">PLC地址:如D100,W100,R100</param>/// <param name="length">地址个数</param>/// <returns></returns>public int[] ReadInt32(string str_Add, ushort length){OperateResult<int[]> rt = melsecMcNet.ReadInt32(str_Add, length);if (rt.IsSuccess)            return rt.Content;        else          return null;         }/// <summary>/// 读取uint值/// </summary>/// <param name="str_Add">PLC地址:如D100,W100,R100</param>/// <param name="length">地址个数</param>/// <returns></returns>public uint[] ReadUInt32(string str_Add, ushort length){OperateResult<uint[]> rt = melsecMcNet.ReadUInt32(str_Add, length);if (rt.IsSuccess)           return rt.Content;           else            return null;            }/// <summary>///  读取float值/// </summary>/// <param name="str_Add">PLC地址:如D100,W100,R100</param>/// <param name="length">地址个数</param>/// <returns></returns>public float[] ReadFloat(string str_Add, ushort length){OperateResult<float[]> rt = melsecMcNet.ReadFloat(str_Add, length);if (rt.IsSuccess)           return rt.Content;          else           return null;            }/// <summary>///  读取double值/// </summary>/// <param name="str_Add">PLC地址:如D100,W100,R100</param>/// <param name="length">地址个数</param>/// <returns></returns>public double[] ReadDouble(string str_Add, ushort length){OperateResult<double[]> rt = melsecMcNet.ReadDouble(str_Add, length);if (rt.IsSuccess)          return rt.Content;          else           return null;           }/// <summary>/// 读取string值/// </summary>/// <param name="str_Add">PLC地址:如D100,W100,R100</param>/// <param name="length">地址个数</param>/// <returns></returns>public string ReadString(string str_Add, ushort length){OperateResult<string> rt = melsecMcNet.ReadString(str_Add, length);if (rt.IsSuccess)            return rt.Content;           else            return string.Empty;           }

4、写入PLC地址值
///
/// 写入单个bool数据
///
///
///
///
public bool WriteBool(string str_Add,bool data)
{
OperateResult rt= melsecMcNet.Write(str_Add, data);
if(!rt.IsSuccess)
return false;
return true;
}
///
/// 写入单个ushort数据
///
///
///
///
public bool WriteUInt16(string str_Add, ushort data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 写入单个short数据
///
///
///
///
public bool WriteInt16(string str_Add, short data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 写入单个uint数据
///
///
///
///
public bool WriteUInt32(string str_Add, uint data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 写入单个int数据
///
///
///
///
public bool WriteInt32(string str_Add, int data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 写入单个float数据
///
///
///
///
public bool WriteFloat(string str_Add, float data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 写入单个double数据
///
///
///
///
public bool WriteDouble(string str_Add, double data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 写入字符串
///
///
///
///
public bool WriteString(string str_Add, string data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 连续写入多个bool数据
///
///
///
///
public bool WriteBool(string str_Add, bool[] data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 连续写入多个ushort数据
///
///
///
///
public bool WriteUInt16(string str_Add, ushort[] data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 连续写入多个short数据
///
///
///
///
public bool WriteInt16(string str_Add, short[] data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 连续写入多个uint数据
///
///
///
///
public bool WriteUInt32(string str_Add, uint[] data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 连续写入多个int数据
///
///
///
///
public bool WriteInt32(string str_Add, int[] data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 连续写入多个float数据
///
///
///
///
public bool WriteFloat(string str_Add, float[] data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}
///
/// 连续写入多个double数据
///
///
///
///
public bool WriteDouble(string str_Add, double[] data)
{
OperateResult rt = melsecMcNet.Write(str_Add, data);
if (!rt.IsSuccess)
return false;
return true;
}


http://www.ppmy.cn/news/132161.html

相关文章

STM32使用光敏传感器计算光照度Lux,而不是仅仅打印个电压值或者电阻值

最近项目中用到了光敏电阻。搜索资料&#xff0c;发现很多人都使用光敏电阻&#xff0c;只是用了AD读取了电压值&#xff0c;或者算出了电阻值&#xff0c;就发送给上位机或者服务器&#xff0c;美其名曰获取了光照度。 搜索一番&#xff0c;也没找到用光敏电阻计算Lux的方法&a…

【PaddleClas】手把手让你训练自己的人脸识别模型

【PaddleClas】手把手让你训练自己的人脸识别模型 简介 在这个项目中&#xff0c;我们将介绍如何使用PaddleClas仓库训练我们自己的AdaFace模型&#xff0c;为以后的人脸识别做铺垫。在AIStudio中&#xff0c;项目空间大小只有100G&#xff0c;如果你想要在本地训练更大的数据…

Cadence OrCAD Capture 新放置的元件为问号无法自动编号解决方法

🏡《总目录》   🏡《宝典目录》 目录 1,概述2,三种逻辑及应用范围3,设置方法4,总结B站关注“硬小二”浏览更多演示视频 1,概述 本文介绍OrCAD Capture软件新放置元件的三种编号逻辑。 2,三种逻辑及应用范围 在新加或者复制新的元件时,新元件的编号逻辑有三种: 不…

IAR代码界面配色和字体修改

IAR代码界面配色和字体修改 IAR编写代码的界面实在让人难以恭维&#xff0c;所以就自己改了一下编写代码的界面&#xff0c;让写代码变的没那么难受。 效果图↓↓↓ 打开IAR 点开tools中的options一栏 配置editor中的属性 设置配色方案 展开编辑中colors and fonts&#xf…

SAP CO生产订单的标准成本、计划成本、实际成本和目标成本

什么是生产订单的标准成本、计划成本、实际成本、目标成本&#xff0c;我想做成本会计的应该很熟悉&#xff0c;计算公式简单表示如下。 标准成本 标准价格 * 标准数量 作业价格 * 标准数量 计划成本 计划价格 * 计划数量 作业价格 * 计划数量 实际成本 实际价格 * 实际…

Arduino:串口控制led灯的颜色

菜鸡的学习记录 实验目的&#xff1a; 通过本次实验掌握以下知识&#xff1a; 串口通信波特率设置。设计串口通信协议。串口读取字符。串口读取整数值。PWM输出 初步掌握和理解以下协议和软件的使用 MQTT协议NodeRED软件App Inventor软件 实验要求&#xff1a; 编写可以通…

华为metro1000描述,optix metro1000参数-华讯佳科技

OptiX Metro1000传输设备(简称Metro1000&#xff09;是华为技术有限公司研发的STM-1/STM-4/STM-16级别的盒式设备。华为Metro1000光端机主要应用于城域网、本地传输网接入层&#xff0c;具备结构简洁、集成度高等许多特点。 Metro1000光端机是华为技术有限公司开发的STM-1/STM-…

【电子器件笔记1】电阻参数和选型

引言 最近打算重新学学电子的知识&#xff0c;做做笔记&#xff0c;就有了这个系列&#xff0c;笔记都是从B站up主唐老师讲电赛那摘录来的&#xff0c;和大家一起分享学习。希望自己能一步步进步。 引言1.电阻的参数1.1 精度1.2 温度系数1.3 功率 2.电阻的命名规则2.1 贴片电阻…