1.0  通讯组件概述

通讯组件用于PC与可编程控制器(PLC)、智能仪表等进行数据通讯,适用于基于PC高级语言的工业自动化控制系统。组件采用动态链接库文件(*.DLL)的形式,在PC系统的项目工程里引用该组件,调用相应的属性与方法函数,即可快速实现PC与PLC的高效数据交换。

DLL通讯组件无须安装,直接复制到工程文件目录,方便打包安装部署;无须任何配置,直接调用函数,与应用开发无缝衔接;多年工程经验的软件团队开发测试,经过本公司及客户的海量实际工程应用检验,稳定可靠;采用稳定高效的内部协议,无须编写PLC内部程序配合,直接访问PLC的内存,通讯响应快速;内建动态管理的多独立线程连接,同时支持外部应用的多线程结构调用;兼容WINDOWS系统下的所有开发环境,包括各种版本的VB.NET、C#、VC++,以及DEIPHI 、VB、LabView等;支持几乎所有PLC的CPU自带通讯口、通讯扩展模块。

2.0  通讯组件名称

3.0  数据类型

通讯组件能对PLC的输入、输出端口,以及内部中间继电器存储区域、内部数据存储区域,以及扩展存储区域进行读写操作,支持以下数据类型:

0  BOOL1:    1位布尔型数据;

1  INT16:    16位有符号整数;

2  UINT16:   16位无符号整数;

3  DINT32:   32位有符号整数;

4  HEX32:    32位16进制字符;

5  REAL32:   32位单精度浮点数据;

6  BIN16:    16位二进制字符串;

7  CHAR8:    8位单个字符(ASCII)

8  BYTE8:    8位单字节数据;

9  STRING:   多个字符或数字组成的字符串(ASCII)

4.0  函数与参数

4.1  函数参数

[EntLink]        设置PC、PLC的通讯参数,建立与PLC的以太网连接;

参数:   pcIP,String,本地地址,即PC端的IP地址

pcPort , Uint16, 本地端口,即PC端的网络端口,默认为0

plcIP , String ,远程地址,即PLC的IP地址

plcPort ,Uint16,  远程端口,即PLC的通讯端口

Rack ,Uint16,  PLC的机架号码

Slot ,Uint16, PLC的CPU的插槽号码

Handle, Integer ,DLL组件返回网络中PLC的连接句柄 *1

SN , String,调用序列号码,可联系本公司获

OverTime,Uint16, 通讯超时时间限制,毫秒单位,默认1000

返回值: Int16,函数执行结果,见4.3详细说明。

[ComLink]   设置PC、PLC的通讯参数,建立与PLC的串口连接;

参数:   CommPort,Uint16,联接PLC的PC通讯端口

CommRate,Int32,与PLC通讯的速率

DataBit, Uint16, 通讯数据位数

StopBit,Uint16, 数据的停止位数

Parity,PrtType, 数据校验方式

Station, Uint16, PLC的站号码

OverTime,Uint16, 通讯超时时间限制,毫秒单位

SN , String,调用序列号码,通过联系本公司获取

返回值:Int16,函数执行结果,见4.3详细说明

[DeLink]    断开与PLC的连接;

参数:   Handle, Integer , 通过EntLink函数获取的网络中PLC的句柄 *1

返回值: Int16,函数执行结果,见4.3详细说明

[CmdRead]   批量读取PLC的数据;

参数:   Handle, Integer , 通过EntLink函数获取的网络中PLC的句柄 *1

Memory ,PlcMemory, PLC数据区域枚举,见4.2详细说明

ValType, DataType, 数据类型枚举,见4.2详细说明

Block ,Uint16, DB块的号码,非DB数据为0

Address ,Uint16, 要读取的存储区域起始地址

Count ,Uint16, 要读取的数量,以ValType对应的数据类型为单位

ReData() ,Object/String,读取到的数据(传地址方式的形式参数)

返回值: Int16,函数执行结果,见4.3详细说明

[CmdWrite]    批量写入数据到PLC;

参数:   Handle, Integer , 通过EntLink函数获取的网络中PLC的句柄 *1

Memory ,PlcMemory, PLC数据区域枚举,见4.2详细说明

ValType, DataType, 数据类型枚举,见4.2详细说明

Block ,Uint16, DB块的号码,非DB数据为0

Address ,Uint16, 要写入的存储区域起始地址

Count ,Uint16, 要写入的数量,以ValType对应的数据类型为单位

Data() ,Object/String,要写入PLC的数据(传地址方式的形式参数)

返回值: Int16,函数执行结果,见4.3详细说明

[Bit_Test]   以Bit(位)的方式读取一个位的状态;

参数:   Handle, Integer , 通过EntLink函数获取的网络中PLC的句柄 *1

Memory ,PlcMemory, PLC数据区域枚举,见4.2详细说明

Block ,Uint16, DB块的号码,非DB数据为0

Address ,Uint16, 要读取的位所在的字或字节地址

Bit,Uint16, 要读取的位在Address中的位号码

State ,Boolean,读取到的位的状态(传地址方式的形式参数)

返回值: Int16,函数执行结果,见4.3详细说明

[Bit_Set]    以Bit(位)的方式设置其状态为ON;

参数:   Handle, Integer , 通过EntLink函数获取的网络中PLC的句柄 *1

Memory ,PlcMemory, PLC数据区域枚举,见4.2详细说明

Block ,Uint16, DB块的号码,非DB数据为0

Address ,Uint16, 要设置的位所在的字或字节地址

Bit,Uint16, 要设置的位在Address中的位号码

返回值: Int16,函数执行结果,见4.3详细说明

[Bit_Reset]   以Bit(位)的方式复位其状态为OFF;

参数:   Handle, Integer , 通过EntLink函数获取的网络中PLC的句柄 *1

Memory ,PlcMemory, PLC数据区域枚举,见4.2详细说明

Block ,Uint16, DB块的号码,非DB数据为0

Address ,Uint16, 要复位的位所在的字或字节地址

Bit,Uint16, 要复位的位在Address中的位号码

返回值: Int16,函数执行结果,见4.3详细说明

[CmdReadString]   读取PLC中的字符串;

参数:   Handle, Integer , 通过EntLink函数获取的网络中PLC的句柄 *1

Memory ,PlcMemory, PLC数据区域枚举,见4.2详细说明

Block ,Uint16, DB块的号码,非DB数据为0

Address ,Uint16, 要读取的存储区域起始地址

PlcDataSize ,Uint16, PLC内定义的存放字符的最大字符数

返回值: String,正常时为读到的字符串,异常时为空

[CmdWriteString]   写入字符串到PLC;

参数:   Handle, Integer , 通过EntLink函数获取的网络中PLC的句柄 *1

Memory ,PlcMemory, PLC数据区域枚举,见4.2详细说明

Block ,Uint16, DB块的号码,非DB数据为0

Address ,Uint16, 要写入的存储区域起始地址

PlcDataSize ,Uint16, PLC内定义的存放字符的最大字符数

Data ,String, 要写入到PLC的符数,长度应≤PlcDataSize

返回值: String,正常时为读到的字符串,异常时为空

[DataConvert]   数据类型转换函数;

参数:   SourType,DataType, 数据类型枚举,见4.2详细说明

SourData , Object,需要转换的源数据

DestType ,DataType, 数据类型枚举,见4.2详细说

DestData ,Object,转换后的目标数据(传地址方式的形式参数)

StartByte ,Int16,目标数据从源数据取数的起始字节(可选参数)

返回值: Int16,函数执行结果,见5.3详细说明。

*1: Handle参数说明

为方便同一应用程序连接多台PLC而设置的参数,在通讯组件外部调用时,定义一个全局变量,DLL在与PLC网络连接成功以后,自动分配PLC句柄数据,外部程序通过该句柄区分操作不同的PLC;变量为输入输出型参数,即传地址方式的形式参数,外部赋值无效。

4.2  枚举结构体参数说明:

--PlcMemory   要操作的PLC的内存区域类型:

DI:   数字输入端口;

DQ:   数字输出端口;

MR:   内部中间继电器区域;

DR:   内部数据寄存器V/DB区域;

--PrtType  串口通讯的校验方式

None: 无校验

Odd:奇校验

Even:偶检验

4.3  返回值说明:

0 执行成功;

-1  IP地址或端口参数错误;

-2  网络连接错错误;

-3  连接参数错误导致连接失败(如Rack>7 、Slot>15等);

-4  PLC握手连接异常;

-5  PLC握手无响应;

-6  PLC握手响应错误;

-10 读数据超过最大数据量限制;

-11 读数据时数据发送异常;

-12 读数据时PLC响应超时;

-13 读数据PLC返回格式错误;

-14 读数据PLC返回数据错误;

-15 读数据PLC返回数据校验错误;

-18 PLC的网络句柄解析错误;

-19 PLC的网络句柄数据错误;

-20 写数据超过最大数据量限制;

-21 写数据时数据发送异常;

-22 写数据PLC响应超时;

-23 写数据PLC返回格式错误;

-24 写数据PLC返回数据错误;

-25 写数据PLC返回数据校验错误;

-28 PLC的网络句柄解析错误;

-29 PLC的网络句柄数据错误;

-31 数据转换时源数据处理错误;

-32 数据转换时目标数据处理错误;

-41 位操作函数的参数错误;

-70 PLC内存区域的功能受限制;

-80 PC系统中无网卡;

-81 PC的IP地址格式错误;

-82 PLC的IP地址格式错误;

-83 PING命令返回错误;

-99 连接序列号错误或测试次数超过试用限制;

5.0  组件使用步骤

5.1 基本步骤

a. 复制DLL、OCX文件到需要用到该组件的工程项目目录下;

b. 注册DLL、OCX文件(VS.NET平台的DLL程序集组件不用注册);

c. 在项目开发环境里引用DLL文件,不同的开发环境引用方式有区别,具体参见所用语言的帮助文档;

d.  参照例程定义、实例化通讯组件,编写相关通讯代码;

5.2  DLL注册方法

VS.NET平台的DLL程序集组件不用注册,ActiveX的COM组件(*.dll/*.ocx)须要在系统下注册才能正常使用,注册的方法主要有两种:

a. 代码注册:用Windows提供的Shell命令,Shell “regsvr32 \s ” + 组件的完整路径及文件名称;

b. 手动注册:同时按下 “Win”键 +“R”建,在弹出的运行对话框中输入:

“Regsvr32 ” + 空格 + 组件的完整路径及文件名称,然后点“确认”按钮;

Windows7 及以上的系统下注册,建议对用户账户作以下设置:

控制面板->用户账号和家庭安全->用户账户->更改用户账户控制设置,把滑竿拖到最下面,即“从不通知”。

Windows7 及以上系统64位注册方法:

a. 在C:\Windows\SysWOW64\下新建目录(以 regdll 为例),复制需要注册的dll到这个目录下(以WinTcpS7.dll为例);

b. 点击开始,在“搜索程序和文件”里键入cmd,然后在搜索出来的cmd菜单上右键,以管理员的权限运行;

c. 此时cmd提示符为C:\Windows\System32,键入: Regsvr32 C:\Windows\System32\regdll\WinTcpS7.dll

d. 按回车键,然后提示注册成功(注意此时使用的是syswow64目录下的regsvr32.exe,而不是system32下的regsvr32.exe)。

转载于:https://www.cnblogs.com/DreamRecorder/p/9359435.html

C#与西门子PLC通讯相关推荐

  1. PC与西门子PLC通讯免费软件Libnodave

    软件介绍:PC与西门子PLC通讯免费软件Libnodave Introduction: Libnodave is a free communication library for Siemens S7 ...

  2. 上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,

    上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,A系列,Q系列,L系列,R系列,全系系列,各种串口和各种网口通讯,, ...

  3. 上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯

    上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,A系列,Q系列,L系列,R系列,全系系列,各种串口和各种网口通讯,, ...

  4. 上位机与PLC 通讯源码DEMO 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制

    上位机与PLC 通讯源码DEMO 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,A系列,Q系列,L系列,R系列,全系系列,各种串口和各种网口通 ...

  5. python与西门子PLC通讯

    python与西门子PLC通讯 安装Python-snap7 win+R打开"运行",输入cmd,确定后,进入DOS命令行终端,输入下面的命令: pip install pytho ...

  6. C#与西门子plc通讯上位机 c#软件 工控软件

    C#与西门子plc通讯上位机 c#软件 工控软件 1.该程可以实现CSharp与西门子全系列plc(200,200smart,300,1200,1500)的以太网s7通讯,通讯传输快稳定. 2.该程序 ...

  7. jetson nano上编译与使用西门子PLC通讯库snap7

    文章目录 一.西门子snap7介绍 二.西门子S7通讯介绍 三.jetson nano编译snap7库 四.Qt Cmake导入snap7库 五.snap7主要函数说明 1.与PLC建立连接 2.读写 ...

  8. 威纶和s7200通讯线_PLC通讯,西门子plc通讯知识汇总学习

    (一)西门子 200 plc 使用 MPI 协议与组态王进行通讯时需要哪些设置? 1)在运行组态王的机器上需要安装西门子公司提供的 STEP7 Microwin 3.2 的编程软件,我们的驱动需要调用 ...

  9. c#与汇川机器人通讯_C#与西门子PLC通讯

    S7Net 如下图,ip="192.168.0.5". 如下图,rack为0,slot为1. public Plc(CpuType cpu, string ip, short ra ...

  10. C#中使用S7.net与西门子PLC通讯

    最近因为工作的原因用到了西门子PLC,在使用过程中一直在思考上位机和PLC的通讯问题,后来上网查了一下,找到了一个专门针对S7开发的一个.net库–<S7netPlus>,PLC通讯方法比 ...

最新文章

  1. React路由---react-router-dom、获取路由参数、ant design ui组件、fetch发送请求(默认不能跨域)、Switch...
  2. Dom4J的基本使用
  3. spring 学习—spring的相关概念(01)
  4. 【转载】315M无线模块数据传输——深入研究
  5. django基于存储在前端的token用户认证
  6. requests-发送post请求
  7. bzoj1596[Usaco2008 Jan]电话网络*
  8. 【java】 Java 类加载器 破坏双亲委派
  9. WindowsAPI----AttachThreadInput使用
  10. MyEclipse安装配置maven插件
  11. Android 实例子源代码文件下载地址380个合集
  12. Windows android adb interface驱动安装失败 ADB interface驱动安装失败解决方法
  13. cmd命令:批量创建文件夹
  14. 直播组装服务器,快速搭建直播服务器
  15. JavaScript阿拉伯数字“1“转中文数“一“
  16. 无法激活服务,因为它不支持 ASP.NET 兼容性
  17. VUE解决warning(Emitted value instead of an instance of Error) el-table-column v-for=item in batch问题
  18. jq 获取input的光标,定位光标的位置
  19. ROS从入门到精通系列(十三)-- PR2移动双臂机器人基础
  20. XBee zigbee 使用指南--- XBee模块输入和输出

热门文章

  1. mysql 远程日志_让mysql能够远程连接
  2. 进阶学习(2) jenkins 使用
  3. 关于 Quartz 框架如何引入 Dubbo 服务
  4. 浅析SEO优化怎样打好企业新站优化基础稳步提升排名
  5. python成员变量和全局变量_python 全局变量和局部变量详解笔记
  6. java 追加写入hdfs_java操作之HDFS-创建-删除目录-读写文件-追加写文件
  7. cesium面积计算_cesium-长度测量和面积测量
  8. magento2 所需要php 扩展,Magento2系统环境要求与安装分享
  9. ai怎么平均排列_你的隐私正在被 AI “窥探”,马赛克也不管用了
  10. kibana智能检索发送多次_msearch —— 配置index pattern,同时设置时间段,就知道到底是在哪些索引里去查找数据了...