ABB DCS系统MODBUS通讯简介
一、概述:
DCS MODBUS的通讯组态,了解整个的组态过程和信号的传送方式,在调试中,按MODBUS规程的约定,一般读数字量使用02功能代码,读模拟量使用03功能代码,写开关量使用05或者15功能代码, 写模拟量使用06或16功能代码.在MODBUS的编程时注意: 选择功能代码02时在GPI软件中对应数据类型为DIP,选择功能代码03时时在GPI软件中对应数据类型为AOP;选择功能代码01或者05时在GPI软件中对应数据类型为DOP;选择功能代码06时在GPI软件中对应数据类型为DOP;
另外还需电气通讯管理机确定数字量和模拟量的起始地址,以方便编程。可双方书面约定),每个设备一个PLC地址。通讯管理机全是一个设备地址,数字量与模拟量的RTU地址可重复,数字量需要一次读16个数据,在组态时要注意,模拟量没有要求;电气来的信号要考虑信号的系数问题,在MODBUS编程时要注意;另外电气还有长整型数据(比如电度量),在DCS的接口部分无法处理,只能在信号进入DCS后由组态进行处理,这还需要到现场后进行测试.
二.硬件连接和地址设置:硬件连接图
MFP12 模件方框图(functional block diagram):
其中: ROM 512 kilobyte; RAM 512 kilobyte; NVRAM 256 kilobyte
用户可用:347,712 byteS RAM, 194,752 bytes NVRAM
DMA: directly memory access ,allows data received or transmitted.
1.从PLC或者其他设备来的通讯接口首先连接至ADAM4520的DATA端,注意要直连,也即对方
的正端接至ADAM4520的DATA+端,也即对方的负端接至ADAM4520的DATA-端, 然后通过一根通讯线将ADAM4520上的9针串口转换为NTMP端子上的25针串口,注意接法为: NTMP 端子上的25针串口pin 2、3、7分别对应ADAM4520 模块的9针串口的pin2、3、5;
2.MFP12 模块拨码开关的设置:
a.SW3: 模件地址和运行方式选择;具体如下:
举例如下:
MFP12采用正常的工作模式,并且地址为6,则SW3的设置为: 6和7设为OPEN,其余全为CLOSED.
b.SW4: 模件的特殊操作选择.具体如下
当使用单网进行通讯时,SW4一般都设为CLOSED;当用于冗余通讯时,需要对POLE 8进行设置: 主MFP12 设为0,冗余MFP12设为1.
值得注意的是,在做MODBUS通讯之前,先要对模件进行特殊操作,方法为:
(1)1、7操作(即2操作):
先将SW4的POLE 1和7拨为1,将MFP12模件推进去,然后再拔出来,再将
POLE 1和7拨为0,再次将模件推进去,通过这样的操作,结果将NVRAM存储
器进行了初始化;
(2)1、6操作(即4操作):
先将SW4的POLE 1和6拨为1,将MFP12模件推进相应槽位,然后再拔
出来,再将POLE 1和6拨为0,再次将模件推进去,通过这样的操作,使得 Cnet或者INFI-NET网络规程成立.
3.串口通讯接线方式:
RS232
温馨推荐
您可前往百度文库小程序
享受更优阅读体验
不去了
立即体验
1969年,美国电子工业协会(EIA)公布了RS-232C作为串行通信接口的电气标准,该标准定义了数据终端设备(DTE)和数据通信设备(DCE)间按位串行传输的接口信息,合理安排了接口
的电气信号和机械要求,在世界范围内得到广泛的应用。但它采用单端驱动非差分接收电路,存在着传输距离不太远(最大传输距离15m)和传送速率不太高(最大位速率为20Kb/s)的问题。
远距离串行通信必须使用Modem,增加了成本。在分布式控制系统和工业局部网络中,传输距离常介于近距离(<20m=和远距离(>2km)之间的情况,这时RS-232C(25脚连接器)不能采用,用Modem又不经济,因而需要制定新的串行通信接口标准。
RS422/485
1977年EIA制定了RS-449。它除了保留与RS-232C兼容的特点外,还在提高传输速率,增加传输距离及改进电气特性等方面作了很大努力,并增加了10个控制信号。与RS-449同时推出的还有RS-422和RS-423,它们是RS-449的标准子集。RS-422、RS-423是全双工的。
RS-422标准规定采用平衡驱动差分接收电路,提高了数据传输速率(最大位速率为10Mb/s),增加了传输距离(最大传输距离1200m)。
RS-485串行接口的电气标准实际上是RS-422的变型,它属于七层OSI(Open System Interconnection,开放系统互连)模型物理层的协议标准。由于性能优异、结构简单、组网容易,RS-485总线标准得到了越来越广泛的应用。
RS-485为半双工的,有极强的抗共模干扰的能力,接收灵敏度也相当高。同时,最大传输速率和最大传输距离也大大提高。如果以10Kbps速率传输数据时传输距离可达12m,而用100Kbps时传输距离可达 1.2km。如果降低波特率,传输距离还可进一步提高。另外RS-485实现了多点互连,最多可达32台驱动器和32接收器,非常便于多器件的连接。
RS232 Pin Definition
Fig4.1 Termination Unit
Jumper J1 controls the P6 connector, J2 controls the P5 connector. P5 and P6 are the DB-25 connectors. Determine if the equipment requires a DCE, DTE, nonhandshake, or loopback jumper setting configuration.
The following figure4.2 to figure4.4 show how to set jumpers J1 and J2 for DCE, DTE, and nonhandshake operation.
如果接口设备与INFI90 MFP 之间的距离不超过20m (19200 baud 最好不超过15m ),就不要采用485连接,因为,经过RS232/RS485转换器,会占用很多的转换时间,造成通讯的延迟。而且,在现阶段,有些转换器会或多或少的造成一些通讯冲突,甚至完全中断通讯。
Primary
RS-232-C PORT 0
Backup Module
RS-232-C PORT 1
Primary Module
Fig
4.4 Nonhandshake Jumper Configuration
具体的RS232直接连接方式如下:
Fig4.4。
Fig
4.4 Nonhandshake Jumper Configuration(通常采用这种跳线方式)
通过ADAM转换器连接单个设备
通常我们采用ADAM4520来实现接口标准的转换,两个设备之间的距离超过20米之后,我们尽量采用485/422通讯方式。接线方式有两种:RS-422方式;RS-485方式。
具体的R-422直接连接方式如下:
注:
1.因为ADAM4520转换器的RS232串口管角定义已经有过交叉(RXD,TXD已经交叉),所以
要注意信号的对应。
2.TMP的J1或J2跳线设置必须为Nonhandshake Jumper方式,参见图Fig4.4。
具体的R-485直接连接方式如下:
注:
1.因为ADAM4520转换器的RS232串口管角定义已经有过交叉(RXD,TXD已经交叉),所以
要注意信号的对应。
2.TMP的J1或J2跳线设置必须为Nonhandshake Jumper方式,参见图Fig4.4。
同样还可以有另外一种连接方式如下:
注:TMP的J1或J2跳线设置必须为combination Jumper 方式,参见图Fig4.5。
通过ADAM转换器连接多个设备
R-485电气标准属于一种令牌网结构,它组网方便,在网络上可以通过不同的地址来寻址。所以可以同时连接多个设备。
具体的R-485直接连接方式如下:
这种网络结构同时可以连接最多128个设备,如果网络通讯协议为MODBUS时,可以连接最多32个设备。
三、GPI软件简介:
GPI02.RTU,用于Symphony(INFI90)系统与支持MODBUS(RTU模式)协议的系统进行接口,通讯波特率最高为19200波特,最大通讯量为1500点(模拟量点和数字量点之和),多点连接的系统数最多为50;AB公司的PLC有特有的通讯协议DH+和DH485,针对该公司的PLC,北京ABB贝利控制有限公司采用专用的通讯协议软件GPI03.AB。主要用于和AB公司的PLC接口,现实际应用不多.
GPI02.RTU概况
GPI02.RTU软件包是一种可组态的利用MODBUS协议(RTU方式)进行双向串行数据通讯的产品。
它允许数值在可编程控制器和贝利的GPI02.RTU通讯模件中的功能码之间传送。GPI02.RTU可以读写PLC中的数值,而不改变PLC的编程和逻辑。
GPI02.RTU由两个C语言程序组成:
A. 用户接口(组态)程序,也称为离线程序,运行于DOS环境。用于:
a. 用自配的编辑器或TEXT文件输入数据通讯组态
b. 编译改组态形成实际通讯程序可用的格式
c. 通过串行通讯和一个串行口模件(SPM或CIU)将通讯程序和组态文件下装进通讯模件
(MFC03或MFP12)
d。监视和调节通讯
B. 在线程序,运行在GPI02.RTU通讯模件中,执行实际的通讯功能。
为了将数据从PLC传到贝利系统,该程序经常访问多组数据,更新已经组态的输出功能块。接收数字量的必须是45或138号功能码。接收模拟量的必须是30或137号功能码。
这些功能块中的数值可以被应用组态中的其它块使用。为将数据从贝利系统传到PLC,该程序经常扫描通讯模件中已经组态的块,每当数据变化时更新PLC。
必须注意的是,和GPI02程序同在通讯模件中的应用功能块组态负责读写数据。GPI02可以认为是应用功能块组态的逻辑数据附属。
下
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
定义了GPI02读写每个数据的有关操作:
数字量输出表数值量输入表模拟量输出表模拟量输入表
描述DO DI AO AI
表号0 1 4 3
读/写能力读和写读读和写读
读码01 02 03 04
写码05或15 06或16
地址范围
(十六进制) (十进制) 0000-7FFF
0-32767
0000-7FFF
0-32767
0000-7FFF
0-32767
0000-7FFF
0-32767
按点类型读DOP DOP AOP AOP
按点类型写DIP AIP
Table 1.1: GPI02的读写操作
说明:
1. DOP-从DI或DO表读PLC数字状态,把该状态写到数字输出功能块(135或45号功能
码)
2. DIP-读应用组态数字功能块的输出,写到PLC数字点(DO表)
3. AIP-读应用组态模拟量功能块的输出,写到PLC的寄存器,AO表。
4. AOP-读PLC AO或AI表寄存器,写到模拟量输出功能块(137或30号功能码)
Modbus协议提供了设备间通讯的主从原则。如果控制器发送消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到消息,它将建立从设备回应格式并返回给发送的控制器。
针对这种主从原则,INFI90系统可以作为这种主从通讯方式的主站或者从站,同时分别提供了两种软件,实现和其他系统之间的接口。
贝利Infi90系统组态工具软件有Wintools和Composer,针对不同的组态软件,有不同的接口通讯软件(Gpi02.rtu for wintools & Gpi02.rtu for Composer)与之匹配。其实两个接口软件的原理和组态方式都相同,所不同的是:接口程序Gpi02.exe和接口CAD组态下装的方式。
CFG组态中应该包括以下块:Segment Control,Allocate,Invoke C。其中,Segment Control块号分配为1024,如果该块号改变,下面表中所列的功能块块号应该按照偏移量量改变。
具体的CFG组态如下:
Fig1.1 INFI90 System Configuration 1
Fig 1.2
四、做MODBUS接口通讯的一般步骤:
(一)、首先在谈合同时约定好协议为MODBUS协议.
(二)、由PLC厂家提供通讯所需的IO
清单
安全隐患排查清单下载最新工程量清单计量规则下载程序清单下载家私清单下载送货清单下载
,例子如下:
接口PLC侧应提供PLC设备信息及地址,通讯信息内存分配点表,接口设备
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
画面。
PLC设备信息包括:串行口设置包括DCE或DTE设置,通讯波特率,数据位数及停止位位数,奇偶校验,握手信号要求等。
通讯信息内存分配点表应包括以下条目:
1.存储地址
2.信号名称
3.信号中英文描述
4.信号流向(DCS -> PLC or PLC -> DCS)
5.信息位数及有无符号(模拟量)
6.最小值(模拟量)
7.最大值或量程范围(模拟量)
8.
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
单位(模拟量)
9.控制要求,指是否要求或允许DCS侧向PLC侧执行写操作,如果允许,则应给出详尽
的对控制过程的要求。例如:开关量写信号应为脉冲(或长电平)。
(三)、根据清单做RTU文件:
在我们使用的通讯软件GPI02目录下,用写字板打开*.RTU文件(比如TT.RTU), 根据第二步PLC厂家所给的通讯所需的IO清单,进行通讯点的添加,添加完成后存盘,然后按
照以下步骤进行:
1、双击GPI,再双击GPI02(类型为application),点回车键;
2、点F1(FILE&UTILITIES MENU),在FILENAME TO READ: 处填写TT.RTU(TT为我
们前面建立的RTU文件),然后点回车键ENTER,出现一个新窗口,点回车键,再点回车键;
3、点击F7键,F7为ADDRESS TRANSLATION,选择MODICON通讯协议;(注意这条必须做,否则
通讯不上)
4、出现MODICON后,点F2键,F2为FORM DOWNLOAD CONFIG;
5、出现GPI02.RTU----OPTIONS EDIT MENU,按照以下格式进行填写:
MAX PLC READ GROUP DATA SIZE(IN BYTE):224
1)MAX PLC WRITE GROUP DATA SIZE(IN BYTE):100
>>DEFINE COMMUNICATION LINE SPEED&PROTOCAL: D(A、B、C、D根据具体情况进行
填写)
D=[8,1,NO];<19200 BAUD IN MFP12>
2)DEFINE HOW ACTIVE PORT WILL BE SELECTED: A
A=AUTOMATIC; 点回车键;
6、出现Y、N or ESC to abort ? 选择Y;
7、出现DATA FILE FORMED OK! Continue To Download it(Y/N) ?
选择Y;
8、出现ENTER TARGET MODULE ADDRESS,信息内容包括: 环路号、MFP12所在的PCU的节
点号( 由INNIS21的地址决定)、MFP12的地址、通讯波特率; 举例如下:
LOOP: 1 ; PCU: 71; MODULE: 6; BAUDRATE:19200
CIU04 Y/N: YES ONLINE CONFIGURATION Y/N : YES
ALWAYS SPECIFY THE PRIMARY MODULE NUMBER,点回车键,出现Load function block
< . cfg > file also Y/N ? 选Y
点回车,再回车,再点回车键;
(这时在GPI目录下,会发现生成了新的GPI02.$$$文件;
9、打开Composer工程文件,做与MODBUS通讯相对应的逻辑,主要使用FC144
CALLOC(Allocate C block)、 FC143 INVKC( Invoke C BLOCK)、FC82 SEGCRM(GPI
Segment Control block) ,并设置相应的参数,注意Segment Control块号一般分配为
1024;再做数据处理逻辑, 接读模拟量数据使用FC137,读开关量数据使用FC138.赋块号
并执行编译,然后将MFP12工作模式设为Configure方式;
10、选中MFP12,点右键,选中属性Properties选项,点击Format,使用GPI2P2BS.CSP对
MFP12 进行格式化;
11、选中MFP12,在RUN Time\View Files下,点右键,出现LOAD C: 先打开
GPI2P2BS.MAP,再打开GPI2P2BS.LMS,再打开GPI2P2BS.CSP;
Load Data files: 选中第8步生成的GPI02.$$$文件,进行下装;
12、下装完成后,开始下装MFP12下面的逻辑,下装完成就可以进行通讯测试了.(注意接
读模拟量数据使用FC137,读开关量数据使用FC138).
五、做通讯时的常见问题和注意事项:
1.不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上有专门的各种转换
器卖,必须通过转换器才能连接;
2.串口调试时,准备一个好用的调试工具软件,如串口调试助手、串口精灵等,有事半功倍
之效果;
3.强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。
4.调试的时候如果和我方做仿真用MODSIM32,如果是想测试第三方的设备用MODSCAN32.有时
候用仿真软件能调通,但双方实际联调的时候就通不上,碰到这样的问题有可能有以下原因,转换器不匹配(可以把双方都统一成一种转换器来排除,奇偶校验位最好设为无),数据线的地线需要连接,需要加终端电阻等等,具体原因需要耐心检查.
5.通讯的正常与否可以观察Segment Control块号+20的状态,如果持续为绿色的1说明通讯
正常,为0说明通讯有问题.
6.有时候通讯时好时断,很不稳定,这种情况有可能是经常通讯超时的情况发生,可以观察
Segment Control块号+51,如果这个数值很大,并且持续增加,说明通讯超时很严重,这时候可以调整标准参数页的143号功能码的S6,增大这个数值可以改善超时的情况.也可能是由于有些数据地址不对,当读到这些地址的时候通讯就会中断,这种情况可以通过减少通讯的数据量来找出故障.
7.用COMPOSER下装的时候,要先把模件置为组态方式,并且只能通过ICI下装,不能用CPM.
注意事项:
1. Modbus是数据层面的通讯协议,定义的只是数据字节传递的格式,不涉及具体的传递方法,通讯路径可以是RS232,RS485,甚至TCP/IP网络。
2. Modbus是一个主从问答式的协议,总是由master发出一个request(既可以是读,也可以是写),相应的slave回一个respond,包含要读的数据,或是写指令的echo。
3. 关于地址,是一个比较容易混淆的地方。实质上是PLC内部有4块数据区域,其中两块是可读可写的(模拟量、开关量各一),两块是只读的(一样是模拟量、开关量各一),这样就有4种Function Code去分别读这4块数据(1、2、3、4),2种Function Code去单点(single)的写2块可写的数据区(5、6),还有2种Function Code去多点(Multiple)或叫做成块(Block)的去写(15、16)。
数据区域的命名各个厂家经常会不太一样,但归根结底只要明确了所用的Function Code就很清楚了。例如Holding Register 0、40001、%MW0实际上是一回事。注意最常见的表示为40001或10001的Modicon地址是从1开始的,而GPI的RTU地址是从0开始的,相差一位。
下面的表格可以用来表明它们之间的对应关系:
数字量输出表数值量输入表模拟量输出表模拟量输入表
描述DO DI AO AI
协议中名称Coil Digital Input Holding Register Input Register 表号/Modicaon地
址起始数字
0 1 4 3
读/写能力读和写读读和写读
读码01 02 03 04
写码05或15 06或16
地址范围
(十六进制) (十进制) 0000-7FFF
0-32767
0000-7FFF
0-32767
0000-7FFF
0-32767
0000-7FFF
0-32767
按点类型读DOP DOP AOP AOP
按点类型写DIP AIP
4. 对于PLC来说,一般会严格遵循读写的关系,但对于自行编程的,可能会更灵活一些,例如模拟量同时支持Function Code 3和4,也就是不管用FC3或FC4去读,slave都会把相同的数据送回来。或者用FC4去读的模拟量,本来应该是只读的,但也可以去写,这都属于协议的变通。
5. 关于量程变换,由于模拟量寄存器是16位的整数,范围是0-65535(无符号)或-32768-32767 (有符号),而且不能有小数点,如果数据超范围了,或用户需要小数点,可以采用长整数(4 byte,32位)或浮点数(float),但会比较麻烦。比较简单的处理方法是双方约定进行量程变换,一般有两种,一种是将量程的0%到100%转换对应0到65535,还有一种是对方乘上10或者100送过来,GPI再除以10或100,就能得到1位或2位的小数。