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)。

C#与西门子PLC通讯的更多相关文章

  1. 【转】西门子PLC以太网 通讯协议 解析

    一直想把三菱和西门子这两个使用频率最高的PLC上位通讯,融合到WCS系统的框架里: 现在三菱主流使用Q系列,使用的是MC协议, 前一段时间也写过一个入门介绍: 三菱Q系列通讯方式设计说明 去年8月份, ...

  2. 西门子PLC开发笔记(一):PLC介绍,西门子S1200系列接线、编程、下载和仿真

    前言   西门西PLC.台达触摸屏.法兰克机床等等多年以前玩得比较多,改造机床.维修机床.给机床编程等等,没事还能扯个零件啥的,之前也没总结过,有时间就重新整理下.  本章后面以西门1200实物为例, ...

  3. 西门子plc串口通讯方式

    西门子plc串口通讯的三种方式 时间:2015-10-25 14:31:55编辑:电工栏目:西门子plc 导读:西门子plc串口通讯的三种方式,分为RS485 串口通信.PPI 通信.MPI 通信,自 ...

  4. 西门子PLC学习笔记二-(工作记录)

    今天师傅给讲了讲做自己主动化控制的总体的思路,特进行一下记录,做个备忘. 1.需求分析 本次的项目是对楼宇循环供水的控制,整个项目须要完毕压力.压差.温度等的获取及显示.同一时候完毕电机的控制. 2. ...

  5. C#读写三菱PLC和西门子PLC数据 使用TCP/IP 协议

    本文将使用一个Github开源的组件库技术来读写三菱PLC和西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能 ...

  6. C# 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 官方 ...

  7. PLC 通讯

    几个之前整理的高级语言与PLC通讯的资源下载链接:三菱:http://blog.sina.com.cn/s/blog_16d7d3ecb0102x6wj.html倍福:http://bbs.elecf ...

  8. python 读写西门子PLC 包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 nu ...

  9. java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...

随机推荐

  1. POJ 题目2823 Sliding Window(RMQ,固定区间长度)

    Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 46507   Accepted: 13442 ...

  2. 51nod Bash游戏(V1,V2,V3,V4(斐波那契博弈))

    Bash游戏V1 有一堆石子共同拥有N个. A B两个人轮流拿.A先拿.每次最少拿1颗.最多拿K颗.拿到最后1颗石子的人获胜.如果A B都很聪明,拿石子的过程中不会出现失误.给出N和K,问最后谁能赢得 ...

  3. nginx启用https访问

    什么是https? https 全称:Hyper Text Transfer Protocol over Secure Socket Layer,是http的安全版.即http下加入SSL协议层,因此 ...

  4. Learn from Architects of Buildings

     Learn from Architects of Buildings Keith Braithwaite Architecture is a social act and the material ...

  5. 安装spark1.3.1单机环境 分类: B8_SPARK 2015-04-27 14:52 1873人阅读 评论(0) 收藏

    本文介绍安装spark单机环境的方法,可用于测试及开发.主要分成以下4部分: (1)环境准备 (2)安装scala (3)安装spark (4)验证安装情况 1.环境准备 (1)配套软件版本要求:Sp ...

  6. vc弹出USB的方法. 附试验通过的代码!

    vc弹出USB的方法. 附试验通过的代码! http://blog.sina.com.cn/s/blog_4fcd1ea30100qrzn.html (2011-04-15 10:09:48) boo ...

  7. C#的Timer(很多相关文章)

    再C#里现在有3个Timer类: System.Windows.Forms.Timer System.Threading.Timer System.Timers.Timer 这三个Timer我想大家对 ...

  8. 关于spyder的一些用法

    目前还不会用spyder,感觉不习惯,也没怎么用MATLAB 能记住几点算几点吧 1,双击程序左侧栏,加断点 1,按住Ctrl,点击函数,进入函数

  9. 几种常见web 容器比较 (tomcat、 jboss 、resin、 weblogic、 websphere、 glassfish)(转)

    点击打开PDF下载链接 web 容器比较 tomcat jboss resin weblogic websphere glassfish 1. Tomcat是Apache鼎力支持的Java Web应用 ...

  10. poj 2955 Brackets 括号匹配 区间dp

    题意:最多有多少括号匹配 思路:区间dp,模板dp,区间合并. 对于a[j]来说: 刚開始的时候,转移方程为dp[i][j]=max(dp[i][j-1],dp[i][k-1]+dp[k][j-1]+ ...