PC高级语言与施耐德、罗克韦尔、台达等PLC的Modbus通讯源代码(ModbusTCP.DLL/ModbusRTU.DLL)
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)的更多相关文章
- 构建虚拟工控环境系列 - 罗克韦尔虚拟PLC
一. 概述 本篇主要介绍罗克韦尔虚拟PLC的搭建,使用的操作系统为Windows7 x86 Ultimate(DEEP_GHOST_WIN7_SP1_X86_V2015_06.iso),虚拟化软件为 ...
- 罗克韦尔 Allen-Bradley MicroLogix 1400 查看、设置IP
=============================================== 2019/4/14_第1次修改 ccb_warlock == ...
- <<杰克.韦尔奇自传>>
<<杰克.韦尔奇自传>> 这本书号称是管理学十大经典名著,也是HR老师推荐的一本书.花了几个月时间断断续续拜读了这本书. GE是伟大的公司,杰克韦尔奇是伟大的CEO,这都毋庸置 ...
- C# serialPort的DataReceived事件无法触发 ,用的霍尼韦尔的扫码枪并且装了相应的USB转串口驱动。
昨天想试试霍尼韦尔的扫码枪,扫码枪有两种模式,键盘模式和串口模式, 1.键盘模式直接插上就行了,就像一个键盘一样不需要任何驱动,扫出来的数据直接落到PC的输入焦点上.就像一个键盘一样,只能输入字符. ...
- 霍尼韦尔FC400A与FC400B的区别
给霍尼韦尔官方打电话咨询了下,发现两者区别不大,唯一的区别是400B可以和主机联动,也就是主机关的时候,400B也可以自动关闭,不需要手动去关闭电源,这样非常方便. 本来官方是只有400A的时候,但是 ...
- 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...
- 鲍姆-韦尔奇算法求解HMM参数
1. HMM模型参数求解概述 HMM模型参数求解根据已知的条件可以分为两种情况. 第一种情况较为简单,就是我们已知DD个长度为TT的观测序列和对应的隐藏状态序列,即{(O1,I1),(O2,I2),. ...
- 班尼特·A·麦克道尔 - 一个交易者的资金管理系统(2013年5月26日)
<一个交易者的资金管理系统:如何确保利润并避免破产风险> 作 者:班尼特·A·麦克道尔 系 列:“引领时代”金融投资系列-世界交易经典译丛 出 版:万卷出版公司 字 数:155千字 阅读完 ...
- 霍尼韦尔1450g二维码扫码枪中文识别。
USB接口模拟COM串口驱动程序 HSM USB Serial Driver 链接: https://pan.baidu.com/s/1aOV-Fz0OYdQGc5dMmkHzgg 提取码: fwgt ...
随机推荐
- cf807 c 二分好题
能够二分判定的前提是能找到一个单调关系,有时候需要将不是单调关系的数据转换成另外的具有单调关系的数据 #include<bits/stdc++.h> using namespace std ...
- 扩展欧几里得,解线性同余方程 逆元 poj1845
定理:对于任意整数a,b存在一堆整数x,y,满足ax+by=gcd(a,b) int exgcd(int a,int b,int &x,int &y){ ){x=,y=;return ...
- ural1855 线段树区间更新+推公式维护一元二次式
和威威猫系列故事差不多,都是根据条件推出公式 /* 操作c a b d:a到b道路上的所有边权值加d 操作e a b:问a到b中包含的道路的平均权值 区间平均值=所有可能路径权值/所有路径数, 而路径 ...
- python接口自动化测试十二:对返回的json的简单操作
# 1.requests里面自带解析器转字典 print(r.json()) print(type(r.json())) # 取出json中的'result_sk_temp'字段 # {"r ...
- div展现与收起效果(鼠标移入移出)
效果图: 移入: 移出: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- Web前端开发最佳实践(13):前端页面卡顿?可能是DOM操作惹的祸,你需要优化代码
文档对象模型(DOM)是一个独立于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得DOM成为了JavaScri ...
- 51Nod 算法马拉松28 B题 相似子串 哈希
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 51Nod1753 题意概括 两个字符串相似定义为: 1.两个字符串长度相等 2.两个字符串对应位置上有且仅有 ...
- 【noip模拟赛4】找啊找啊找BF 拓扑排序
描述 sqybi上次找GF的工作十分不成功,于是依旧单身的他在光棍节前的某天突发奇想,要给自己找一个BF(这里指的是男性的好朋友……),这样既可以和人分享内心的压抑(路人甲:压抑还分享么……),也可以 ...
- 在 xilinx SDK 使用 math.h
在使用到cos sin tan等算法的时候添加了math库 #include <math.h> 但是却报错了 'Invoking: ARM gcc linker'arm-xilinx-ea ...
- P1939【模板】矩阵加速(数列)
P1939[模板]矩阵加速(数列)难受就难受在a[i-3],这样的话让k=3就好了. #include<iostream> #include<cstdio> #include& ...