资源描述
工业以太网实验指导书
北京邮电大学自动化学院
1.各模块基本介绍
1.1 NDAM-9000通讯模块
1.1.1 基本介绍
NDAM-9000 通信模块采用以太网(TCP/IP)通讯接口,符合 MODBUS/TCP 协议规范。NDAM-9000 可以和其他数据采集模块组成以太网数据采集系统,适用于工业现场的各种数据采集和控制。
NDAM-9000 采用电气隔离技术和看门狗技术,有效保障设备安全可靠运行
NDAM-9000 的外观如图 1.1 所示。
1.1.2 主要技术指标
输入电压范围:10 ~ 30 VDC
u 保护:过压保护、过流保护、防反接保护
u 功率:<3W
以太网:10M 以太网,符合 TIEEE 802.3 标准
100M 以太网,符合 TXIEEE 802.3u 标准
u 网线:UTP,5 类线或更高
u 连接端子:RJ45 端子
u 通讯协议:Modbus/TCP
u 通讯速率:最高 100Mbps
u 通讯距离:最远 100 米
u 响应时间:<5ms
u 隔离耐压:2000 V DC
1.1.3 端子信息
NDAM-9000 数据采集模块接口分为电源接线端子、继电器输出接线端子、 RJ45 和通讯接口。NDAM-9000 共有 8 个输入接线端子,端子的编号和具体的名称与功能如表 1.1 所示
端子定义说明如下:
u NO:继电器输出的常开端。
u COM:继电器输出的公共端。
u NC:继电器输出的常闭端。
u GND;电源输入地(-)端。
u + Vs:电源输入(+)端。
u EARTH:保护地端子。
u ——:保留,未使用。
1.1.4 接线方式
电源接线:
NDAM-9000 需要 10~30VDC 供电电压,电源连接在+Vs 端子和 GND 端子上,如图 3.1所示。
网络电缆和接线端子选择
NDAM-9000 采用 RJ-45 与以太网其他设备连接,电缆应该采用 3 类(10M 速率)或 5类(100M 速率) UTP 电缆(符合 EIA/TIA568B 标准要求)。网络设备之间的长度最多 100m。
继电器端子接线
在 NDAM-9000 模块中,继电器采用单刀双掷的继电器,所有的端口都被引出,其中
COM 端为公共端,NO 为常开端,NC 为常闭端,当线圈 AB 中没有电流流过时,COM 端与 NC 端连接导通,当线圈 AB 中有一定的电流流过时,COM 端与 NO 端连接导通。
NDAM-9000继电器接线如图所示。当网络连接失败或模块断电的情况下COM端与NC端连接导通,当网络连接正常的情况下, COM端与NO端导通。用户可以选择NC端与COM端,也可以选择NO端与COM端接续来构成应用电路。
1.2.5 信号指示灯
模块的工作状态通过 NDAM-9000 的面板上 3 个指示灯表示,如图 1.4 所示,各指示灯
的定义如下:
u Power:红色指示灯。此灯点亮表示 NDAM-9000 供电正常。
u State:绿色指示灯。此灯缓慢闪烁表示 NDAM-9000 工作正常,但是还未连接主站,
此灯快速闪烁表示 NDAM-9000 已和主站建立通讯连接。
u Error:红色指示灯。此灯常亮表示 NDAM-9000 运行出现错误,如果此灯闪烁表示
模块进入升级模式。
NDAM系列模块面板上均有三个指示灯,表示含义与上面介绍一致,以下模块介绍此部分再不做说明。
1.2 NDAM-4055输入/输出数字量模块
1.2.1 基本介绍
NDAM-4055 是一款具有 8 通道数字量输入,8 通道数字量输出的数据采集模块,广泛应用于工业现场控制、远程监控与数据采集、电力通讯、仓储与监控、电子产品制造、食品和饮料行业、包装和物料转移、安防产品等领域。
NDAM-4055数据采集模块主要用于分布式数据采集与控制系统中,作为远端I/O 模块,
主要是采集工业中数字量数据,控制工业现场的继电器等开关设备,应用于远程开关设备的
智能与集中控制。
NDAM-4055 数据采集模块主要是针对数字量输入输出,它可以同时采集 8 路数字量输
入,支持开关触点信号和电平信号,同时有 8 路数字量开漏输出。所有的数字量输入输出均采用 3000V 光电隔离。
1.2.2 主要技术指标
数字量输入
u 输入路数:8 路
u 逻辑电平:
高电平信号(数字 1):+3.5V~+30V;
低电平信号(数字 0):≤1V;
u 输入类型:开关触点信号/电平信号(干/湿接点)
数字量输出
u 输出路数:8 路
u 输出类型:集电极开漏输出
u 电压范围:+5V~+30V DC
u 输出负载电流:小于电流 30mA
1.2.3 端子信息
NDAM-4055 的 24 个接线端子分为两组,分别是数字量输入端子和数字量输出端子,
端子的编号和具体的名称与功能如表 1.1 所示。
1.2.4 ID地址设定
在使用 NDAM 系列采集模块之前,需要先设定模块的 ID 地址。该 ID 地址通过模块面板上的拨码开关来设置。允许的 ID 地址范围为:1~8,若设置的 ID 地址不在此范围内,模块将不工作,请正确设置后,重新上电。与同一个通讯模块相连接的各个采集模块的 ID 地址必须设置为各不相同。
下面是一个 ID 地址的设置示例。如图 1.5 所示,当拨码开关拨到 OFF 时,对应的位为0,当拨码开关拨到 ON 时,对应的位为 1,图中对应的地址是 0110,即 ID 地址为 6。
NDAM-4055 出厂时的默认 ID 地址为:8。对于模块ID地址的设定,各模块操作均相同,后面模块的ID地址设定与NDAM-4055 ID地址设定操作一致,只不过设定的ID地址值不同,后面模块介绍该部分再不做介绍。
1.2.5 跳线说明
NDAM4055 模块有 8 路数字量输入,所有的通道都支持电平信号和开关触点信号,即支持干接点信号和湿接点信号,模块内部设有跳线来选择输入类型,模块内部的跳线位置如图 1.6 所示,从上到下一共 8 个跳线,分别用来选择 8 路数字量输入的类型,跳线靠近接线端子一侧为湿节点设置端, 另一端为干节点设置端,跳线相当于 1 个单刀双掷切换开关, 从上到下依次对应 8 个通道。跳线器位于模块的内部,需要打开模块的外壳才能执行操作。
当跳线跳到右侧(靠近接线端子一侧,标有 wet)时,模块选择电平信号作为输入数字量信号,这时端子的接线可以参照图 2.2 所示(见 2.2 节) ,当跳线跳到左侧(远离端子,标有 dry) 时,模块选择开关触点信号作为输入数字量信号,这时端子的接线可以参照图 2.3所示(见 2.2 节) ,具体的设置如图 1.7。
1.2.6 数字量输入
数字量输入的含义是指这种类型的输入信号只有简单的两种状态:不是高电平就是低电平,也可以理解为开(ON)或者关(OFF)两种状态。 在现场的数字量输入信号主要为开关触点信号和电平信号。开关触点信号与电平信号的区别是开关触点信号是无源的,而电平信号则是用一定的电压来表示。
NDAM-4055 模块具有 8 路的数字量输入通道。NDAM-4055 模块可以采集电压类型的数字量输入信号或者触点型输入信号。
当输入信号电平大于等于 3.5V 时,模块即认为输入为高电平信号(状态 1);当输入电平信号小于等于+1V 时,模块即认为输入为低电平信号(状态 0)。当输入为无源开关触点型输入信号,对于闭合信号,模块认为输入信号为状态 1;对于开路触点信号,模块认为输入信号为状态 0。
数字量输入接线方式:
(1) 电平输入信号接线
在连接电平输入信号时,注意信号输入的正端与 IDI 端子脚相连接,输入信号的负端与IDICOM 端子脚相连接。如果是多路输入信号,则输入信号的正端分别与不同的 IDI 端子脚相连接,所有输入信号的负端与 IDICOM 端子脚相连接,具体的接线图如图 2.2 所示。当模块选择电平信号作为输入信号时,需要设置模块内部的跳线。
(2)开关触点输入信号接线
在连接开关触点信号时,则只需注意触点开关的一端与 IDI 端子相连,另一端与 IGND
相连接,当有多个开关时,所有的开关公共端连接 IGND,而另外一端分别连接 IDI0—IDI7。
1.2.7 数字量输出
NDAM-4055 模块具有 8 路的数字量输出通道。NDAM-4055 模块输出为开漏输出。最大负载电压+30V,最大负载电流 30mA。在应用 NDAM-4055 的数字输出功能时,需要在输出端口连接负载以及上拉电源。
NDAM-4055 模块输出通道的内部等效电路如图 3.1 所示,当使用模块输出通道时,在输出端口外部需要连接上拉电阻。当 DO 控制位写入高电平信号时,晶体管 T1 导通, DOUT引脚输出为低电平信号;反之 DO 控制位写入低电平信号,T1 截止,DOUT 被外部上拉电阻拉为高电平。即对应控制位写入高电平信号开关闭合,写入低电平信号开关断开。
数字量输出接线方式:
由于 NDAM-4055 采用开漏输出,用户外部电路必须采用灌电流的工作方式,必要的场合要接上拉电阻确保端口的驱动能力。
1.3 NDAM-2808继电器模块
1.3.1 基本介绍
NDAM-2808具有8路继电器输出,输出光电和继电器双重隔离,所有的继电器都提供常开、常闭接口,能同时控制工业现场8路开关设备。隔离耐压高达3000V DC。适用于工业现场环境中对远程开关设备的智能与集中控制。
1.3.2 主要技术指标
输入路数:8路
继电器类型: 单刀双掷
输出接口:提供公共端COM、常开NO、常闭NC接口
输出负载: 125VAC@0.5A
30VDC@1A
接触电阻:初始值小于50mΩ
绝缘强度:触点与线圈之间 1000Vrms(1分钟)
触点与触点之间 750 Vrms(1分钟)
机械寿命:100,000,000次
电气寿命:200,000次@1A 30VDC
最大操作时间:3ms
最大释放时间:3ms
1.3.3 端口说明
NDAM-2808共有24个端子,一共分为6组。NDAM-2808的端子定义如表所示。其中端子名为COM表示继电器输出的公共端,NO表示常开端,即输出1时,继电器的COM与NO连通,NC表示常闭端,即输出0时,继电器的COM与NC连通。
1.3.4 继电器输出功能
NDAM-2808模块具有8路的继电器输出通道。继电器类型为单刀双掷,每路输出外部提供公共端(COM),常开(NC)接口,常闭(NO)接口。
NDAM-2808有8路继电器输出,可以控制外部8个开关设备,工业上用NDAM-2808驱动固态继电器的接线示意图如图所示,当内部输出0或者模块在断电的状态下,模块的COM端与NC端连接,当模块输出为1时,模块的COM端与NO端导通,用户可以选择COM端与NC端,也可以选择COM端与NO端接线来构成单开关,用户也可以利用COM,NO,NC来构成一个单刀双掷的开关,可以根据实际情况选择接线方式。
1.4 NDAM-3800模拟量输入模块
1.4.1 基本介绍
NDAM-3800数据采集模块主要用于分布式数据采集系统中,作为远端I/O 模块,采集工业控制现场中的直流电压/电流信号,可以同时采集8路模拟量信号,每个通道可以独立配置为电压或电流输入。
1.4.2 主要技术指标
模拟量输入
输入路数:8路差分
输入类型及范围:
电压(DC): -5V ~ +5V
-10V ~ +10V
电流(DC): 0 ~ 20mA
0 ~ 40mA
测量误差:<1% FSR
采样速率: 125次/秒(全通道)
1.4.3 端口说明
NDAM-3800共有16个输入接线端子,端子的编号和具体的名称与功能如表所示。
1.4.4 跳线说明
NDAM-3800模块有8路模拟量输入,支持电压或电流输入信号,通过设置模块内部的短路跳线,可以选择输入信号类型。跳线器如图所示,断开输入类型为电压,短接输入类型为电流。
详细跳线如表所示。
1.4.5 模拟量输入
模拟量信号是指连续的,任何时刻可为任意一个数值的信号,例如我们常见的温度、压力、振动、速度、位移等信号。对于工业控制现场常见的模拟量信号,可以通过传感器获取其值的变化,然后通过AD转换器进行测量转换。
NDAM-3800具有8路模拟量输入通道,采用12bit的AD进行转换。输入方式为差分输入,非常适合测量没有参考地的模拟信号。
NDAM-3800模块每个通道可以通过配置软件独立配置,根据配置类型每个通道既可以输入直流电压/电流信号,也可以关闭通道,具体配置说明见表通道配置类型
特别说明:由于当输入电压范围为-5V ~ +5V 时选择配置类型“电压输入范围 -5V ~+5V”和“电压输入范围-10V ~ +10V”均可进行测量,但是,为了保证测量精度,推荐选择配置类型“电压输入范围-5V ~ +5V”。 NDAM-3800模块默认的配置类型为“电压输入范围-10V ~ +10V”。
1.4.6 测量值计算
端口数据值以16位无符号数表示,数据bit15表示数据的正负,bit14表示是电流还是电压数据,低14 位为有效数据,表示数据大小。电压的单位为0.625mV,电流的单位为0.0025mA。5V量程时,若低14位的数值超过0x1F68,则视为输入的模拟量超出5V量程。
10V量程时,若低14位数据为0x3ED0,则视为输入的模拟量超出10V量程。提示超出量程。
若从bit14中判断出是电压采样值,则实际的电压值(单位:mV)为:
RealVolt = (+/-)0.625*DATA
若从bit14中判断出是电流采样值,则实际的电流值(单位:mA)为:
RealCurr = (+/-)0.0025*DATA
1.5 NDAM-4400模拟量输出模块
1.5.1 基本介绍
NDAM-4400是4通道的模拟量输出模块。它使用内部的D/A转换器将设定的数字值转换为模拟量信号输出。
NDAM-4400可同时输出4路模拟电压或电流控制信号,您可以单独将每一路选择为电压或电流输出,通过软件设定该路的输出范围、上电安全值;还可以使用模块的同步输出功能,实现多个通道同时输出。
同时,NDAM-4400模块的控制单元与输出单元之间采用了电气隔离,能有效地保护您的设备不受电源浪涌等干扰、损坏,保证控制可靠、稳定。
1.5.2 基本技术指标
模拟量输出
输出通道数:4路
分辨率:12位
电压输出范围:0~10V
电压输出精度:±0.5% FSR
电流输出范围:0 ~ 20mA / 4 ~ 20mA
电流输出精度:±0.5% FSR
电流输出负载阻抗:≤400Ω(内部供电)
≤1000Ω(外部24V供电)
安全值输出功能
4通道同步输出功能
输出短路保护
可微调校准
1.5.3 端口说明
NDAM-4400的输出端子定义如表所示。
1.5.4 模拟量输出电压输出接线方法
NDAM-4400可提供0 ~ 10V的模拟电压信号输出,下图是电压输出的接线示意图。
说明:NDAM-4400的电压输出端口有短路保护功能,导致其输出阻抗较大,用户的负载输入阻抗最好保证在200K以上,以免造成输出精度变差。
1.5.5 模拟量输出电流输出接线方法
当使用电流输出时,请将负载接到图2.2中电流输出端子,但是不要同时使用一个输出通道的电压输出端子和电流输出端子。
NDAM-4400支持0 ~ 20mA或4 ~ 20mA灌电流输出,输出范围由软件配置。电流输出可由模块内部供电,也可采用外部电源供电,内部供电时接线方法如下:
外部供电时接线方法如下:
说明: 当选择电流接线方式、外部供电时,外部电源最大为40V。
以采用外部24V电源为为例,负载电阻应小于等于1000Ω。
1.6 NDAM-5508热电阻模块
1.6.1 基本介绍
NDAM-5508是热电阻测量模块,适用于工业控制现场的温度信号测量。它具有5路热电阻差分输入通道,支持工业上常用的热电阻类型Pt及Cu系列。内置16位高精度AD转换器,温度值分辨率为0.1℃。支持温度值超限报警。它还提供8路数字量输出,既可用于指示模块状态也可由用户自行控制。
1.6.2 基本技术指标
模拟输入
输入路数:5路;
连接方式:2线制/3线制;
支持类型:Pt10/Pt100/ Pt200/Pt500/ Pt1000/Cu50/Cu100;
温度分辨率:0.1℃;
精确度:0.1%
采用速率:5次/秒(所有通道);
温度超限高低报警:
具备热电阻断线检测功能;
数字输出
输出通道:8路,指示模块状态或由用户控制;
输出类型: 集电极开漏输出;
电压范围:0~30VDC;
输出负载:<30mA
1.6.3 端口说明
NDAM-5508共有24个端子,定义如表所示。
端子定义说明如下:
l热电阻输入端口接线端子:
RTD0+~RTD4+:连接热电阻
RTD0-~RTD4- :连接热电阻
COM0~COM4 :热电阻参考地端
l数字量输出端口接线端子:
DO0~DO7:连接数字量输出通道0~7信号正端
DGND:连接数字量输出信号的参考地
1.6.4 热电阻接线方式选择跳线器
根据模块的各通道输入热电阻的接线方式的不同,可以通过对跳线器JP7~JP11的设置进行选择,跳线器如图所示。
跳线器设置的具体方法如下表所示:
1.6.5 热电阻接线方法
对于2线制及3线制的热电阻,接线方法是不同的,以热电阻输入0通道为例具体接法如图所示:
说明:二线制的接线方式只用于接线比较短的场合;一般都用三线制的接线方式,NDAM-5508 出厂时默认设定为三线制模式。
1.6.6 数字信号输出接线
NDAM-5508输出通道在使用时必须连接上拉电阻。NDAM-5508的DOUT端子脚与用户提供的上拉电阻连接,DGND端子脚与用户的提供的信号地相连接,如图所示(DGND是输出信号的公共地,与电压输入地GND是隔离的,接线时需要注意,不要混淆)。
NDAM-5508模块的输出信号驱动继电器接线方式:
1.6.7 数字量输出的测试电路
数字量输出的测试电路如下图所示:
图中电源为+24V,通过控制数字量通道DO1的输出状态可达到使LED1亮灭的效果。元器件的选择,假设流过发光二极管LED1的电流为I,I 只要控制在5-10mA,就足够点亮LED。
电流的具体算法也是很简单的,只要用所提供的电源电压减去LED和内部就所产生的压降,所得到的电压除以用户外接的电阻就可以得到流过LED电流了。在图中电压为24V,外接电阻为3K,大概算得流过LED的电流为7.5mA。 用户也可以根据上述内容,自行设计外部电路。如用NDAM-5508模块控制灯泡的亮灭,控制电铃的响铃,控制电机的启停等。
1.7 NDAM-7204计数器模块
1.7.1 基本介绍
NDAM-7204计数器/测频模块用于外部脉冲计数或测频。NDAM-7204模块具有2路32位正脉冲计数器,可编程数字滤波器,有效滤出高频脉冲干扰;工作在测频模式时最大输入频率为100kHz,自由设定的测频时间使用户可以在测频速度与精度之间任意选择。NDAM-7204模块支持隔离和非隔离输入,非隔离输入通道可编程设定门限电压,支持计数值定时循环传送及计数器溢出/频率值超限报警。NDAM-7204模块还提供4路数字量输出,既可用于指示模块状态也可由用户自行控制。
1.7.2 基本技术指标
模拟输入
输入通道数:2通道光电隔离输入,2通道非隔离输入;
数字量输入信号(隔离通道):
u 高电平信号(数字 1): +3.5 V~+10V
u 低电平信号(数字 0):≤+1V
非隔离输入通道门限:可编程
高电平信号(数字 1):0~+5V(默认值=2.4V)
低电平信号(数字 0):0~+5V(默认值=0.8V)
最大输入脉冲频率:100KHz;
计数器:32位加/减正脉冲计数器,可级连成64位;
可编程数字滤波器:0.4us~13ms;
频率计测频范围:0.5Hz~100KHz;
测频门控时间0.5s~8s,步进0.5s;
计数器溢出/频率值超限报警;
数字输出
输出通道:4路,指示模块状态或由用户控制;
输出类型: 集电极开漏输出;
电压范围:0~30VDC;
输出负载:<30mA
1.7.3 端口说明
NDAM-7204的端子定义如表所示。
1.7.4 NDAM-7204输入
NDAM-7204模块具有4路隔离数字量输入通道和4路非隔离输入通道。
1.7.5 数字信号输出接线方法
NDAM-7204输出通道在使用时必须连接上拉电阻。NDAM-7204的DOUT端子脚与用户
提供的上拉电阻连接,DGND端子脚与用户的提供的信号地相连接,如图所示。
NDAM-7204模块的输出信号驱动继电器接线方式,如下图所示。
1.7.6 数字量输出的测试电路
数字量输出的测试电路如下图所示:
图中电源为+24V,通过控制数字量通道DO1的输出状态可达到使LED1亮灭的效果。元器件的选择,假设流过发光二极管LED1的电流为I,I 只要控制在5-10mA,就足够点亮LED。 电流的具体算法也是很简单的,只要用所提供的电源电压减去LED和内部就所产生的压降,所得到的电压除以用户外接的电阻就可以得到流过LED电流了。在图中电压为24V,外接电阻为3K,大概算得流过LED的电流为7.5mA。
用户也可以根据上述内容,自行设计外部电路。如用NDAM-7204模块控制灯泡的亮灭,控制电铃的响铃,控制电机的启停等。
2 函数库介绍
NDAM系列模块提供了2个相关函数库:NDAM模块配置函数库NDAMSdk和NDAM模块数据采集函数库ZModbusSdk。
NDAM 系列模块是使用标准 Modbus 协议作为数据传输协议的数据采集模块,此系列
产品在链路层同时使用了以太网、RS-485 总线(串口传输),分别对应 NDAM-9000 系列、
NDAM-9010 系列。NDAMSdk 函数库提供 NDAM 系列模块在配置时的接口,用户可以使
用 NDAMSdk 进行 NDAM 系列模块的配置。如需要进行数据的采集可以使用 ZModbusSdk
协议库进行数据的采集。
2.1 NDAM模块配置函数库NDAMSdk
NDAM 函数接口库提供的接口可以分为通信模块搜索类、通信模块配置类、采集模块
搜索类、采集模块配置类、采集模块数据采集类等几类。为了给函数库的使用者提供统一的
接口,在此函数库开发的过程中尽量屏蔽有关使用 RS-485 还是以太网的具体链路,把接口
做成同时兼容以太网和 RS485 操作方式。在不同的通信链路里搜索通信模块类分别为以太
网和 RS485 链路提供不同的接口。
2.1.1 以太网通信模块搜索
Ø ZN_EthSearchAll
调用此函数进行广播搜索,调用此函数后要调用 ZN_EthGetSearchDev 函数获取搜索到
的设备信息。
long ZN_EthSearchAll();
参数描述:无
返回值:返回 0 表示成功,否则为错误码。当发送搜索命令成功,函数返回成功。
Ø ZN_EthSearchByIP
调用此函数进行指定 IP 搜索,调用此函数后要调用 ZN_EthGetSearchDev 函数获取搜索到的设备信息。
long ZN_EthSearchByIP(char * szIp );
参数描述:
szIp:指定 IP 地址,如”192.168.1.25”。
返回值:返回 0 表示成功,否则为错误码。当发送搜索命令成功,函数返回成功。
Ø ZN_EthGetSearchDev
调用此函数获取搜索到的设备的返回信息。
long ZN_EthGetSearchDev( char *pszIP, char *p szMAC,int *pnFrimVer, int *pnDevType, int *pnDveM ode, int *pnIPMode, int *pnTcpPort );
参数描述:
pszIP:返回搜索到设备 IP 地址, 如”192.168.0.178”。
pszMAC:返回搜索到设备的 MAC 地址, 如”11:22:33:ff:ff:55”。
pnFrimVer:返回搜索到设备的固件版本号。
pnDevType:返回搜索到设备的设备类型。
pnDevMode:返回搜索到设备的设备型号
pnIPMode:返回搜索到设备的获取 IP 方式
pnTcpPort:返回搜索到设备的 TCP 工作端口
返回值:返回 0 表示成功,否则为错误码。当接收到设备的响应且分析出设备基本信息,函数返回成功。
2.1.2 通信模块配置
通信模块的配置包括设置要操作的通信模块,读取通信模块配置,获取通信模块配置的
具体某个配置信息,清空没有提交的修改,修改某个具体属性配置,提交修改的配置等。
Ø ZN_EthSetOperateDev(以太网模块使用)
调用此函数,设置要操作的设备。 由于在设置将要操作的模块时,其中的某些信息需要在搜索时返回,因此设置操作的模块需要在搜索函数中正确返回,也就是说需要先调用搜索与获取搜索返回设备两个函数。在对一个设备进行操作前,首先保证此函数已经调用。
HANDLE ZN_EthSetOperateDev( char *szIp, char *szMACaddr, int nM odeType);
参数描述:
szIp:指定要操作的设备的 IP 地址。
szMACAddr:指定要操作的设备的 mac 地址。
nModeType:指定模块的型号,此型号一般从搜索的返回结果中获得。
返回值:返回“非 NULL”表示成功,否则为错误。
2.2 NDAM模块数据采集函数库ZModbusSdk
ZModbusSdk函数库为标准的MODBUS(主机)协议提供函数接口。开发人员可以使用此函数库方便开发出遵循MODBUS协议的程序。如果需要开发MODBUS从机程序,开发人员需要使用其他的函数库或方法。函数库在连接时使用对不同的链路层提供不同的函数接口如:以太网的为:ZMB_TCPConnectMDBServer,串口的为:ZMB_SerConnectMDBServer。其他的函数接口都相同,不区分连接链路。
2.2.1 以太网连接
Ø ZMB_TCPConnectMDBServer :调用此函数连接到从机模块(或服务器)。
HANDLE ZMB_TCPConnectMDBServer( char * szIp, int nDstPort, int nConnTimeout);
参数描述:
szIp :指定要进行连接的从机(服务器)的IP地址。
nDstPort :指定从机的端口号。
nConnTimeout :指定连接超时。
返回值:返回“非NULL”表示成功,否则为错误。
2.2.2 以太网链路的数据采集(读操作)
数据采集操作可以通过读取线圈状态或者模块内部寄存器来得到相应的数据,实验中使用读取线圈状态来得到数据。
Ø ZMB_ReadCoil :调用此函数按参数中的ID号和地址读取线圈状态。
long ZMB_ReadCoil( HANDLE hand, BYTE serID, int nStart, int nCount, BYTE * bRet/*arr of coils*/, BYTE * pBufNoFormat, WORD * len, WORD TranID);
参数描述:
hand :此handle是ConnectMDBServer操作的返回值。
serID: 设备ID号。
nStart: 线圈的起始地址。
nCount:线圈的个数。
bRet: 返回的线圈状态,已分配号的数组地址。
pBufNoFormat: 获取线圈状态返回的没有被格式化的数据,如果为NULL则不返回此数据。
Len:获取线圈状态返回的没有被格式化的数据的长度,如果为NULL则不返回此数据。
TranID: 在TCP的MODBUS协议里需要用到任务ID 号,如果为0使用系统自生成的,串口MODBUS此参数无效。
返回值:返回0表示成功,否则为错误码。
Ø ZMB_ReadInput :调用此函数按参数中的ID号和地址读取线圈状态(离散输入量数据)。
long ZMB_ReadInput ( HANDLE hand, BYTE serID, int nStart, int nCount, BYTE * bRet /*arr of coils*/, BYTE * pBufNoFormat, WORD * len, WORD TranID);
参数描述:
Hand:此handle是ConnectMDBServer操作的返回值。
serID: 设备ID号。
nStart: 线圈的起始地址。
nCount: 线圈的个数。
bRet: 返回的线圈状态,已分配号的数组地址,此数组的大小应该和nCount指定的大小相同。
pBufNoFormat: 获取线圈状态返回的没有被格式化的数据,如果为NULL则不返回此数据。
Len:获取线圈状态返回的没有被格式化的数据的长度,如果为NULL则不返回此数据。
TranID: 在TCP的MODBUS协议里需要用到任务ID 号,如果为0使用系统自生成的,串口
MODBUS此参数无效。
返回值:返回0表示成功,否则为错误码。
2.2.3 以太网链路数据采集(写操作)
Ø ZMB_WriteCoilMulitiple :调用此函数按参数中的ID号和地址修改nCount指定的多个线圈状态。
long ZMB_WriteCoilMulitiple ( HANDLE hand, BYTE serID, int nAddress, int nCount,
BYTE * bWriteDataArr, WORD TranID);
参数描述:
Hand:此handle是ConnectMDBServer操作的返回值。
serID: 设备ID号。
nAddress:线圈的起始地址。
nCount:写入的线圈的个数。
bWriteDataArr:写入的线圈数据的数组,数组的每个结构保存一个线圈状态,此数组大小应该和nCount指定的大小相同。
TranID: 在TCP的MODBUS协议里需要用到任务ID 号,如果为0使用系统自生成的,串口
MODBUS此参数无效。
返回值:返回0表示成功,否则为错误码。
29
展开阅读全文