1.0  通讯组件概述

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

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

2.0  相关资料下载地址

ModbusTCP 客户端DLL:      ModbusTCP.DLL

ModbusTCP 服务端DLL:      ModbusTCP_Server.DLL

ModbusRTU DLL程序:       ModbusRTU.DLL

网口透传RTU DLL程序:      TransModRTU.DLL

台达、永宏、信捷等PLC的Modbus地址表:   PLC地址表

3.0  数据类型

INT16:    16位有符号整数;         DINT32:   32位有符号整数;

UINT16:   16位无符号整数;         HEX32:    32位16进制字符;

BIN16:   16位二进制字符串;       REAL32:  32位单精度浮点数据;

4.0  DLL支持的功能

01  读取线圈状态     取得一组逻辑线圈的当前状态( ON/OFF)

02   读取输入状态     取得一组开关输入的当前状态( ON/OFF)

03   读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值

04    读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值

15    强置多线圈 强置一串连续逻辑线圈的通断

16   预置多寄存器 把具体的二进制值装入一串连续的保持寄存器

5.0  函数与参数

5.1  函数参数

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

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

pcPort , Uint16, PC端的网络端口

plcIP , String ,PLC的IP地址

plcPort ,Uint16,  PLC的通讯端口

Rack ,Uint16,  PLC的机架号码(除西门子外,其它品牌为0)

Slot ,Uint16, PLC的CPU的插槽号码(除西门子外,其它品牌为0)

Handle, Integer ,返回网络句柄,多PLC网络时通过该句柄操作不同的PLC

SN , String,调用系列号码,与DLL成对使用,可联系本公司获取

返回值: Int16,函数执行结果,见5.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,函数执行结果,见5.3详细说明。

[DeLink]    断开与PLC的连接;

参数:Handle, Integer , 网络句柄,多PLC网络时通过该句柄操作对应的PLC

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

[CmdRead]   读取多个PLC内存数据;

参数:Handle, Integer , 网络句柄,多PLC网络时通过该句柄操作对应的PLC

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

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

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

Address ,Uint16, 要操作的字的起始地址

Count ,Uint16, 要操作的字的个数

ReData() , Object,读取到的数据(传址参数)

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

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

参数:Handle, Integer , 网络句柄,多PLC网络时通过该句柄操作对应的PLC

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

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

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

Address ,Uint16, 要操作的字的起始地址

Count ,Uint16, 要操作的字的个数

Data() , Object,要写入PLC的数据(传址参数)

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

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

参数:Handle, Integer , 网络句柄,多PLC网络时通过该句柄操作对应的PLC

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

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

Address ,Uint16, 要操作的位所在的字地址

Bit,Uint16, 要操作的位在字地址内的位号码

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

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

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

参数:Handle, Integer ,网络句柄,多PLC网络时通过该句柄操作对应的PLC

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

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

Address ,Uint16, 要操作的位所在的字地址

Bit,Uint16, 要操作的位在字地址内的位号码

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

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

参数:Handle, Integer ,连接句柄,多PLC网络时通过该句柄操作对应的PLC

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

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

Address ,Uint16, 要操作的位在字地址内的位号码

Bit,Uint16, 要操作的位号码

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

5.2  枚举结构体参数说明:

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

DI:   输入端口;

DQ:   输出端口;

DR:   数据寄存器D区域

HR:   保持区域H区域

5.3  返回值说明:

0 执行成功;

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

-2  网络连接错误;

-3  连接参数错误导致连接失败;

-4  PLC握手连接异常;

-5  PLC握手无响应;

-6  PLC握手响应错误;

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

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

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

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

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

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

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

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

-22 写数据PLC响应超时;

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

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

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

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

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

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

-80 PC系统中无网卡;

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

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

-83 PING命令返回错误;

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

6.0  组件使用步骤

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

b. 注册DLL及其相关资源(DotNet框架的DLL程序集组件无需注册);

c. 在项目编程软件里面引用该组件,不同的编程语言引用方式有区别,具体参见所用语言的MSDN帮助文档;

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

7.0   技术支持

    该类DLL组件适用于具有高级语言基础的自动化软件工程师,同时本公司提供定制开发更为简便的PC与PLC通讯的解决方案,包括定制化的OPC数据服务器软件、以太网数据服务器软件等,工业数据采集项目等欢迎交流咨询。

任意一款DLL通讯组件,以及本公司的OPC数据服务器开发包等工业数据服务产品都会随产品提供多种语言的例程,同时通过以下方式提供24小时技术支持:

PC高级语言与施耐德、罗克韦尔、台达等PLC的Modbus通讯源代码(ModbusTCP.DLL/ModbusRTU.DLL)的更多相关文章

  1. 构建虚拟工控环境系列 - 罗克韦尔虚拟PLC

    一. 概述 本篇主要介绍罗克韦尔虚拟PLC的搭建,使用的操作系统为Windows7 x86 Ultimate(DEEP_GHOST_WIN7_SP1_X86_V2015_06.iso),虚拟化软件为 ...

  2. 罗克韦尔 Allen-Bradley MicroLogix 1400 查看、设置IP

    =============================================== 2019/4/14_第1次修改                       ccb_warlock == ...

  3. <<杰克.韦尔奇自传>>

    <<杰克.韦尔奇自传>> 这本书号称是管理学十大经典名著,也是HR老师推荐的一本书.花了几个月时间断断续续拜读了这本书. GE是伟大的公司,杰克韦尔奇是伟大的CEO,这都毋庸置 ...

  4. C# serialPort的DataReceived事件无法触发 ,用的霍尼韦尔的扫码枪并且装了相应的USB转串口驱动。

    昨天想试试霍尼韦尔的扫码枪,扫码枪有两种模式,键盘模式和串口模式, 1.键盘模式直接插上就行了,就像一个键盘一样不需要任何驱动,扫出来的数据直接落到PC的输入焦点上.就像一个键盘一样,只能输入字符. ...

  5. 霍尼韦尔FC400A与FC400B的区别

    给霍尼韦尔官方打电话咨询了下,发现两者区别不大,唯一的区别是400B可以和主机联动,也就是主机关的时候,400B也可以自动关闭,不需要手动去关闭电源,这样非常方便. 本来官方是只有400A的时候,但是 ...

  6. 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...

  7. 鲍姆-韦尔奇算法求解HMM参数

    1. HMM模型参数求解概述 HMM模型参数求解根据已知的条件可以分为两种情况. 第一种情况较为简单,就是我们已知DD个长度为TT的观测序列和对应的隐藏状态序列,即{(O1,I1),(O2,I2),. ...

  8. 班尼特·A·麦克道尔 - 一个交易者的资金管理系统(2013年5月26日)

    <一个交易者的资金管理系统:如何确保利润并避免破产风险> 作 者:班尼特·A·麦克道尔 系 列:“引领时代”金融投资系列-世界交易经典译丛 出 版:万卷出版公司 字 数:155千字 阅读完 ...

  9. 霍尼韦尔1450g二维码扫码枪中文识别。

    USB接口模拟COM串口驱动程序 HSM USB Serial Driver 链接: https://pan.baidu.com/s/1aOV-Fz0OYdQGc5dMmkHzgg 提取码: fwgt ...

随机推荐

  1. poj2464扫描线好题,回头再做

    扫描线+区间更新 题解 /* st[i],ol[i]表示y坐标大于y[i]和小于y[i]的点 两颗线段树建立在y轴上,区间[l,r]ol线选在[l,r]时st的分数 每次查询完成后再更新一次 遍历每条 ...

  2. python 全栈开发,Day138(scrapy框架的下载中间件,settings配置)

    昨日内容拾遗 打开昨天写的DianShang项目,查看items.py class AmazonItem(scrapy.Item): name = scrapy.Field() # 商品名 price ...

  3. python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)

    昨日内容回顾 外键的变种三种关系: 多对一: 左表的多 对右表一 成立 左边的一 对右表多 不成立 foreign key(从表的id) refreences 主表的(id) 多对多 建立第三张表(f ...

  4. python 全栈开发,Day22(封装,property,classmethod,staticmethod)

    一.封装 封装 : 广义上的 :把一堆东西装在一个容器里 狭义上的 :会对一种现象起一个专门属于它的名字 函数和属性装到了一个非全局的命名空间 —— 封装 隐藏对象的属性和实现细节,仅对外提供公共访问 ...

  5. 步步为营-69-Razor基础

    作用:进一步将HTML代码和C#代码进行解耦 1.1 引用程序集(RazorEngine.dll,System.Web.Razor.dll) 1.1.1 可以从http://razorengine.c ...

  6. charAt和String的用法

    package charpter2; import java.util.Scanner; public class Test { public static void main(String[] ar ...

  7. 《Java编程的逻辑》 - 文章列表

    <计算机程序的思维逻辑>系列文章已整理成书<Java编程的逻辑>,由机械工业出版社出版,2018年1月上市,各大网店有售,敬请关注! 京东自营链接:https://item.j ...

  8. web网页练习

    一. HTML部分 1. XHTML和HTML有什么区别 HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同: XHTML 元素必须被正确地嵌套. XHTML 元 ...

  9. AMD Cpu 性能分析

    未完待续... 首先,几款APU系列的cpu: A8-: 一款低功耗的移动版处理器,四核心主频最高2.5GHz,二级缓存2MB, 图形核心Radeon R5 内存频率DDR3-1866,热设计功耗12 ...

  10. shell scripts 之 代码量统计

    代码统计1 文件only中的内容为多个文件的文件名,code如下: xargs说明:xargs 读入stdin的值, 并默认以空白或者回车作为分隔符,将分割的值作为参数传给后面紧接着的的命令行操作.- ...