EIO用户使用手册v1.6

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDPF-NT Plus EIO使用手册
版本 2.0
编号 UG000
北京国电智深控制技术有限公司
2010年12月
版权声明
本手册版权归北京国电智深控制技术有限公司所有。

修订历史
版本日期说明
REV 1.0 2009-1 第1版
REV 1.62010-12-22新添网络冗余,虚拟DPU在与EIO网络通讯中
断后实现主、备切换,通讯的容错次数为可配置
EIO用户使用手册
目录
1. 简介 (4)
2. 设备、任务、虚拟卡件 (4)
2.1 定义 (4)
2.2 设备与任务的划分规则 (5)
2.3 任务与虚拟卡件的对应关系 (5)
3. EIO通讯配置步骤 (6)
3.1 配置网络环境 (6)
3.2 创建虚拟DPU (6)
3.3 安装虚拟DPU (7)
3.4 组态 (7)
3.4.1 创建卡件布置图 (7)
3.4.2 配置虚拟卡件 (7)
3.5 创建“配置文件” (8)
3.5.1 文件目录 (8)
3.5.2 配置规则 (8)
4. 错误排查与确认 (11)
5. 实际工程应用举例 (12)
1. 简介
EIO即扩展I/O,其支持DCS与第三方系统通讯。

本文档重点介绍DCS通过虚拟DPU与第三方系统通讯的实现方案,虚拟DPU运行在NT+系统的MMI站上,一个虚拟DPU可同时和多个第三方系统通讯。

DCS与第三方系统之间可基于以太网或串口通讯,通讯协议为Modbus over TCP/IP 或Modbus RTU。

在实际应用中,将根据不同需求采用不同的通讯方案:
①基于以太网通讯:通讯协议为Modbus over TCP/IP,DCS与每个第三
方系统均可视为网络上的一个通讯结点,需要知道每个结点的IP地
址和端口号,配置文件中将明确指定每个通讯结点的IP和端口号。

②基于串口通讯:通讯协议为Modbus RTU,DCS与第三方系统之间通
过串口服务器作为转接接口。

串口服务器一端通过以太网和DCS连
接,另一端则通过RS485和第三方系统连接。

串口服务器通常具有
多个连接端口,每个端口连接一个第三方系统。

一个串口服务器具有
一个IP地址,每个端口具有自己的端口号,应用中需要定义每个端
口的波特率、停止位、奇偶校验等信息。

2. 设备、任务、虚拟卡件
设备、任务、虚拟卡件是EIO通讯中三个重要概念。

2.1 定义
设备:指与DCS通讯的第三方系统,通常情况下一个第三方系统定义为一个设备。

一个虚拟DPU可以同时和多个设备通讯,设备之间彼此独立。

在实际应用中需要事先确定与DCS通讯的设备个数,同时为每个设备定义:设备编号、设备描述、通讯协议、工作模式、通讯地址、通讯超时、任务个数。

任务:指DCS与每个第三方系统通讯的通讯单元,一个任务完成一次通讯。

DCS与每个设备通讯将由一个或多个任务完成,任务之间按顺序执行。

当DCS 工作在主站的模式时,一个设备可以包含多个从站,而一个任务只能与一个从站
通讯。

每个通讯任务需要定义:从站ID、功能码、起始协议地址(线圈或寄存器地址)、长度(线圈或寄存器个数)。

虚拟卡件:与虚拟DPU对应,类似传统IO卡件,专为EIO通讯所用,用户可以使用这类虚拟卡件在虚拟DPU上建卡件布置图,然后在相应虚拟卡件上创建通讯测点。

2.2 设备与任务的划分规则
不同的第三方系统应定义为不同的设备,每个设备允许有多个通讯任务。

每个任务只能指定一种功能码,只能与一个从站通讯,为了降低通讯负荷,每个任务应尽量多地写、读通讯数据,即一个任务应尽可能多地覆盖多个卡件的通讯。

2.3 任务与虚拟卡件的对应关系
虚拟卡件上的测点对应到第三方系统的通讯测点,两者之间的通讯由通讯任务完成。

在配置通讯任务和虚拟卡件时应遵循以下内容:
1)一个通讯任务可同时读或写多个卡件的内容,通讯任务应尽量多地覆盖多个卡件的通讯;
2)一个卡件的信息可以由多个任务读取,但在配置通讯任务时,应尽量避免一个卡件分布在多个任务通讯。

3)通讯任务与虚拟卡件之间的设备ID、从站ID、起始寄存器地址、功能码必须严格对应。

在配置任务的时候,应该事先规划好通讯任务与虚拟卡件。

4)虚拟卡件配置的起始寄存器地址(或线圈地址)和通讯任务的起始寄存器地址(或线圈地址)的差的绝对值应该满足:
●读、写线圈:绝对值应为8的整数倍;
●读、写寄存器:绝对值应为4的整数倍;
如果不满足这两个条件,算法浏览器将会提示“参数错或者配置错”,并不会完成预期的通讯任务。

5)为了满足第三方设备通讯测点的地址不连续的情况,允许卡件有些通道不创建点,如有两个需要通讯测点的寄存器地址分别为1001和1004,那么在MAI卡件上,第一个通道将创建与地址1001对应的点,第二、三通道
应空着,第四通道才创建对应地址1004的测点。

3. EIO通讯配置步骤
3.1 配置网络环境
DCS系统将有专门的通讯站(MMI)负责与第三方系统通讯,虚拟DPU运行在该通讯站上,推荐使用该通讯站的第三块网卡(不同于DCS内部的A、B 网网卡)与第三方系统通讯。

工程应用中,DCS与第三方系统之间因采用的通讯协议不同而有不同的网络连接方案:
1)基于以太网通讯:第三方系统与通讯站之间应属于同一个子网,才能保证DCS与第三方系统之间正常通讯。

如果第三方系统只有一个,通讯站和第三方系统之间可以直接连接而组成一个子网;如果第三方系统多于1个时,应使用HUB或交换机等组建网络。

2)基于串口通讯:需要使用串口服务器作为转接接口,串口服务器每个端口只能连接一个第三方系统,DCS的通讯站与串口服务器之间可直接连接,也可通过HUB、交换机等连接。

由于串口服务器具有IP地址和端口号,DCS与每个第三方系统之间的通讯将映射到DCS与串口服务器每个端口之间的通讯。

串口服务器每个端口的IP地址一样,均是串口服务器的IP 地址,而端口号不同,每个端口具有自己的端口号。

在通讯中,需要保证DCS通讯站与串口服务器属于同一个子网。

当DCS需要使用多个串口服务器和第三方系统通讯时,则需要DCS通讯站有多块网卡分别与串口服务器连接,或者把通讯站的一块网卡和多个串口服务器均连接到HUB、交换机上组成通讯子网。

3.2 创建虚拟DPU
在工程师站新建DPU站,作为虚拟DPU用。

操作方法与创建真实DPU类似。

虚拟DPU实现DCS和第三方系统通讯。

3.3 安装虚拟DPU
使用MIS在MMI站(通讯站)上安装之前建好的虚拟DPU。

操作方法与安装其他MMI站类似,具体操作可参考工程师站使用手册(安装软DPU部分)。

3.4 组态
3.4.1 创建卡件布置图
根据通讯测点类型选择虚拟卡件。

虚拟卡件包括MDI、MDO、MAI、MAO。

图标如下:
、、、
每个虚拟卡件有32通道,可建32个测点。


●一个MDI可建32个DI测点;
●一个MDO可建32个DO测点;
●一个MAI可建32个AI测点;
●一个MAO可建32个AO测点。

3.4.2 配置虚拟卡件
虚拟卡件的配置与传统I/O卡件配置类似,其中有5项特殊属性需要注意:
1)设备ID:指与DCS通讯的第三系统的编号,DCS内部定义的,与通讯
方没有关系,这个编号需要与配置文件eio.conf中的“DeviceId”一致。

如虚拟DPU同时和ECS、PLC通讯,其编号分别为1、2,则分别对应
于ECS和PLC虚拟卡件的属性配置中的“设备ID”应分别填1、2。

2)从站ID:通讯双方共同协定。

3)起始寄存器号:该卡件第一个通道的测点对应到第3方的通讯地址(寄
存器或者线圈)。

4)字节顺序类型:双方约定。

通讯中如果发现卡件通道上的测点值不对,
可改变一下字节序。

5)功能码:表示该卡件将选择哪个功能码和第3方通讯。

MDI、MDO、
MAI、MAO分别可使用的功能码如表1所示:
卡件类型可用功能码备注
MDI 1(读线圈);
2(读离散量);
3(读保持寄存器);
4(读输入寄存器);
开关量除可以使用读线圈和离散量的方式读取,还可以使用读保持寄存器和输入寄存器的方式读取,一个寄存器存放16个开关量的值。

MDO 15(写多个线圈);
16(写多个寄存器);
开关量使用写线圈或者写寄存器的方式通讯,一个寄存器保存16个开关量的值。

MAI 3(读保持寄存器);
4(读输入寄存器);
MAO 16(写多个寄存器);
表1
3.5 创建“配置文件”
3.5.1 文件目录
与EIO通讯相关的配置文件命名为“eio.conf”,该文件位于虚拟DPU运行主目录的“config\system\”下。

NT+系统安装目录的“Template/”目录下保存该文件的范本,实际应用中,用户可参考该范本进行修改。

3.5.2 配置规则
用户需要结合卡件组态信息和通讯测点清单配置通讯任务,配置文件的内容包括:
[General]
IoDeviceCnt=1:定义与一个虚拟DPU通讯的第三方设备个数。

如果IoDeviceCnt =1时,用户只需配置一个IoDevice,即[IoDevice1];如果IoDeviceCnt
=2时,用户需要配置[IoDevice1] 和[IoDevice2],每个IoDevice的配置类似。

[IoDevice1]:设备1的配置
DeviceId=1:设备编号,如定义ECS的编号为1,取值范围:0~65535。

该编号与上述[IoDevice1]中的“1”没有关系,用户可定义0~65535之间的任何一个值。

Desc=ECS:设备描述。

protocol=modbustcp:定义DCS与第三方系统通讯所使用的通讯协议,modbus:ModbuRTU; modbustcp:Modbus over TCP;simu:simulator master=1:定义DCS的工作模式,1:Master;0:Slave;
LocalIp=192.168.0.191:与第三方设备通讯的本地IP地址。

LocalPort=502:与第三方设备通讯的本地端口号。

RemoteIp=192.168.0.1:与DCS通讯的第三方设备的IP地址。

RemotePort=502:与DCS通讯的第三方设备的端口号,如果使用Modbus over TCP 通讯,该端口号一般为502。

注意:当DCS采用Modbus over TCP/IP和第三方系统通讯时,RemoteIP和RemotePort就是指第三方系统提供的IP和端口号;当DCS采用Modbus Rtu和第三方系统通讯时,RemoteIP即为串口服务器的IP,RemotePort即为串口服务器上各个端口的端口号。

LocalIp_2=172.101.2.201:冗余本地IP地址。

LocalPort_2=9902:冗余端口号。

RemoteIp_2=172.101.2.11:冗余第三方设备的IP地址。

RemotePort_2=502:冗余第三方设备的端口号。

Timeout=3000:每个任务通讯的超时时间,取值范围:10~3100,单位毫秒。

MaxCommErr=3;容错功能,意思是到达Timeout设定时间后并不是马上报错,而是累加容错计数器,当容错计数器到达容错上限才报通讯错。

以Timeout=3000,MaxCommErr=3为例子,通讯超时达到9000ms后开始报通讯错。

SubTask=2:定义DCS与该第三方通讯通讯的任务数,取值范围:大于1的整数。

该值将影响下面[IoDevice1_SubTask*]的配置,其中“*”表示任务序号,设置大于0的整数。

假如任务数为2,则下面将配置[IoDevice1_SubTask1]和[IoDevice1_SubTask2],每个[IoDevice1_SubTask*]里面的配置类似,下面仅介绍
[IoDevice1_SubTask1]的配置。

[IoDevice1_SubTask1]:与设备1对应的通讯任务1。

SlaveId=1:从站ID,双方协定,取值范围:1~247。

FuncCode=3:与第三方通讯的功能码。

StartReg=0:起始协议地址,即该任务第一个测点所对应的协议地址(寄存器地址或者成线圈地址)。

取值:双方协定,地址范围0~65535。

RegCnt=64:该任务通讯的线圈或寄存器个数。

功能码不同,该值的定义不同。

如果功能码是读、写线圈功能的,此值表示线圈个数;如果功能码是读、写寄存器功能的,此值表示寄存器个数。

在配置任务时需要注意以下两点:
1)如果一个模拟量是浮点数,则其占将用两个寄存器。

例如为一个MAI卡件(建有32个AI测点)配置一个通讯任务,如果每个AI测点用浮点型表示,占用2个寄存器,则该任务配置的RegCnt的值应为64(2*32);如果每个AI点用两个字节的整型表示,则其只占用一个寄存器,那么一个任务配置的RegCnt的值应为32(1*32)。

“RegCnt”的取值范围应根据具体的功能码而定,如下所示:
01(读取线圈状态):1~2000
02(读取输入状态):1~2000
03读取保持寄存器:1~125
04读取输入寄存器:1~125
15强制多线圈:1~2000
16预置多寄存器:1~123
2)StartReg(起始寄存器/线圈地址)与RegCnt(每个任务通讯的长度)之间应遵循如下规则:
●第三方允许的结尾地址<= StratReg <= 第三方允许的起始地址;
●StratReg +(RegCnt)>= 第三方允许的结尾地址;
3)若配置冗余虚拟DPU,当主站与EIO网络通讯出现故障,将自动切换至备站运行。

4. 错误排查与确认
使用算法浏览器查询虚拟DPU卡件算法,“算法状态”框将会有如下提示:1)“算法状态”什么都没有显示,如:
表示通讯正常。

2)“算法状态”显示“参数错或配置错(模块)相关算法报警品质bad”,如:
出错原因有:
●卡件配置信息与通讯任务配置信息不符合,如从站ID、起始寄存器
地址、寄存器个数、功能码等配置不一致;
●卡件的起始寄存器地址和任务的起始寄存器地址的差的绝对值不合
法;
●从站ID错,与第三方设备的从站ID不符合;
●功能码错,与第三方要求使用的功能码不符合;
●Modbus地址越界,读、写第三方设备不允许的地址;
3)“算法状态”显示“通讯错”,如:
出错原因:
●从站设备故障;
●从站设备忙;
●存储奇偶性差错;
●通讯错(连接失败,连接断开);
●发送失败;
●接收数据超时;
5. 实际工程应用举例
1)通讯对象:DCS与FECS之间的通讯(DCS工作在主站,FECS工作在从
站,从站ID为17)。

2)通讯测点信息如表2所示(该表中的测点类型、数据类型、协议地址、功
能码等信息由通讯方提供):
测点类型数值类型起始协议地址(相
对modbus地址)
测点个数功能码
DI Bool 1 259 1 AI Float 5001 52 3 AI Float 1001 89 4 DO Bool 960 10 15 AO Float 2001 20 16
表2
3)卡件组态规划
如果上述每种测点的协议地址均是连续,则可在连续通道上建点,若出现测点的协议地址不连续,则可把不连续的地址补上,建点时,需为不连续的地址段空出多余的通道。

然后规划好应建多少个卡件。

假如上表均为连续地址的测点。

在卡件组态图中可建卡件如表3所示:
测点类型数值类型起始协议地址
(相对modbus
地址)测点个数应用功能码卡件类型,卡
件个数
DI Bool 1 259 1 MDI,9 AI Float 5001 51 3 MAI,2 AI Float 1001 89 4 MAI,3 DO Bool 960 10 15 MDO,1 AO Float 2001 20 16 MAO,1
表3
卡件配置信息如表4(模块地址、卡件位置等配置与传统卡件配置类似,在此忽略):
卡件类型卡件名称设备ID 从站ID 起始寄存器号功能码
1 1 1 1
MDI DPU01A1
MDI DPU01A2
1 1 33 1
1
MDI …… 1 1 依次类推,每个卡件均加
32
MDI DPU01B2
1 1 225 1
1 1 257 1
MDI DPU01B3
1 1 5001 3
MAI DPU01B4
MAI DPU01B4
1 1 5065 3
1 1 1001 4
MAI DPU01B5
1 1 1065 4
MAI DPU01B6
1 1 960 15 MDO DPU01C1
1 1 2001 16 MAO DPU01C2
表4
4)批量建点
根据通讯方提供的通讯测点清单中的点描述以及之前规划好的卡件,可使用批量建点的方式创建通讯测点。

注意:如果出现协议地址不连续的情况,则要求把对应的通道空出来,不需要建点。

5)配置通讯任务
配置文件eio.conf中的具体配置如下所示:
[General]
IoDeviceCnt=1 //只与一个FECS通讯,所以此值设为1
[IoDevice1] //只需要配置一个IoDevice
DeviceId=1 // 第三方设备FECS的编号
Desc=FECS //第三方设备的描述
protocol=modbustcp //本次通讯使用modbus over tcp协议
master=1 // 本次通讯,DCS工作在主站模式
LocalIp=192.168.3.46 //本地IP地址
LocalPort=502 //本地端口号
RemoteIp=192.168.3.36 //通讯端的IP地址
RemotePort=502 //通讯端的端口号(Modbus over tcp 服务端默认端口号)LocalIp_2=192.168.4.46//冗余本地IP地址。

LocalPort_2=9902//冗余端口号。

RemoteIp_2=192.168.4.36//冗余第三方设备的IP地址。

RemotePort_2=502//冗余第三方设备的端口号。

Timeout=3000//每个任务通讯的超时时间3000毫秒,通讯中,如果DCS发送一个报文后在3000毫秒内后不到任何对方的应答,通讯属超时。

MaxCommErr=2//容错功能
SubTask=6 //要完成上述表3中所有卡件的通讯,至少需要配置6个通讯任务[IoDevice1_SubTask1] //任务1,负责协议地址从1开始,点数为259的DI点通讯
SlaveId=17 //从站ID
FuncCode=1 //使用功能码1读取DI测点的值
StartReg=1 //DI点中第一测点对应的协议地址(modbus地址)
RegCnt=259 //该任务每次读取259个DI测点的值
[IoDevice1_SubTask2] //任务2负责协议地址从5001开始,点数为52的AI 点通讯
SlaveId=17
FuncCode=3 //使用功能码3读取AI测点的值
StartReg=5001 //AI点的起始寄存器地址
RegCnt=102 //该任务读取102个寄存器(因为每个float的点占用两个寄存器,所以这里应读取51*2=102个寄存器的值)
[IoDevice1_SubTask3] //任务3负责协议地址从1001开始,点数为60的AI 点通讯
SlaveId=17
FuncCode=4 //使用功能码4读取AI测点的值
StartReg=1001 //AI点的起始寄存器地址
RegCnt=120 //读取120个寄存器的值,由于协议地址从1001开始的AI点有89个,每个都是float类型,分别占用两个寄存器,所以89个AI将占用198个寄存器。

而一个任务最多只能读取125个寄存器,所以应分布在两个任务通讯,第一个任务可通讯120个寄存器,第二个任务可通讯78个寄存器。

[IoDevice1_SubTask4]
SlaveId=17
FuncCode=4
StartReg=1121 //读取寄存器地址从1121开始的AI测点
RegCnt=78 //读取78个寄存器的值,解释在任务3。

[IoDevice1_SubTask5] //该任务负责写入10个DO测点的值
SlaveId=17
FuncCode=15 //使用功能码15往第三方设备写入多个DO测点的值StartReg=960 //该任务对应的第一个DO测点所在的协议地址
RegCnt=10 //该任务每次写入的DO测点个数
[IoDevice1_SubTask6] //该任务负责写入20个AO测点的值
SlaveId=17
FuncCode=16 //使用功能码16往第三方设备写入多个AO测点的值StartReg=2001 //该任务对应的第一个AO测点所在的协议地址
RegCnt=40//该任务每次往通讯方写入的寄存器个数,由于从地址2001开始共有20个AO点,每个AO点占用两个寄存器,所以总共需要写入40个寄存器。

相关文档
最新文档