6ES7231-0HC22-0XA8诚信经营
6ES7231-0HC22-0XA8诚信经营
一、 A5作为MODBUS从机
正航A5系列PLC(以下简称A5)有1~2个RS232/RS485通讯口,默认为MODBUS-RTU从机,可直接使用MODBUS-RTU协议访问。
A5通讯口的默认设置如下:
MODBUS地址:1;波特率:9600;数据位:8位;停止位:1位;校验位:无校验。
若您没有对A5的通讯进行任何设置,则可以直接按照上面所述的配置与A5进行通讯。
0x寄存器
1x寄存器
3x寄存器
4x寄存器
A5内部
寄存器
MODBUS
地址
A5内部
寄存器
MODBUS
地址
A5内部
寄存器
MODBUS
地址
A5内部
寄存器
MODBUS
地址
数字量输出
Q0.0
1
数字量输入
I0.0
1
模拟输入
AIW0
1
中间寄存器
VW0
1
Q0.1
2
I0.1
2
AIW2
2
VW2
2
…
…
…
…
…
…
…
…
Q0.7
8
I0.7
8
AIW14
8
VW14
8
Q1.0
9
I1.0
9
AIWX
对应X/2+1
VW16
9
Q1.1
10
I1.1
10
模拟输出
AQW0
9
VW18
10
Q1.2
11
I1.2
11
AQW2
10
VW20
11
Q…
18
I…
…
AQWX
对应X/2+9
V…
…
Q15.7
19
I15.7
128
VW1998
1000
QA.B
对应A*8+B+1
IA.B
对应A*8+B+1
VWX
对应
X/2+1
中间继电器
M0.0
129
M0.1
130
M…
…
M15.7
256
MA.B
对应A*8+B+129
使用MODBUS协议时,A5内部的地址与MODBUS协议规定的地址如上表所示。
二、 A5作为MODBUS主机
A5可以作为MODBUS主机访问其它MODBUS设备,当然也可以访问其它A5。
使用A5作为主机时,需要用到MODX指令及SMB95、SMB96和SMB97三个寄存器。
MODX指令的作用是发出用户指定的MODBUS命令,若收到从机发回的命令,则将收回的内容放置在用户制定的区域。
SMB95寄存器的0位表示MODBUS是否空闲,1位表示接收的命令是否校验正确,2位表示是否超时。
SMB96是用户设定的超时寄存器,以100ms为单位。若值为0,则没有超时设置。
SMB97表示从A5发出命令到目前为止过了多长时间,以100ms为单位。当SMB97> SMB96时,SMB95的2位置1,0位清0,结束本次MODBUS通讯。
使用A5作为MODBUS主机的具体用法及过程如下:
1、 创建一个参数表,包括MODBUS命令的主要内容
可以使用MOVB指令,也可以使用表指令来构建参数表。
参数表的个字节表示此参数表有几个字节(不包括本字节)。从第二个字节开始是MODBUS指令,具体可以参见MODBUS协议的内容。您可以不必做CRC校验,MODX指令会自动为您添加CRC校验字节。
下面是一个参数表的举例:
地址
值
含义解释
备注
VB0
6
本表中有6个字节
VB1
1
从机地址
参见MODBUS协议规定
VB2
3
MODBUS命令3(读4x寄存器)
VB3
0
开始地址的高位
VB4
10
开始地址的低位
VB5
0
个数的高位
VB6
8
个数的低位
参数表个字节表明本参数表有6个字节,从VB1~VB6。具体的值根据不同的命令会有所变化。
第2个字节开始都是由MODBUS协议规定的。本例中的MODBUS命令表示向地址为1的从机读取从10地址开始的8个保持寄存器(4x寄存器)。
具体的指令如下:
l 梯形图:
l 语句表
NETWORK 0
//首先创建一个表,MODBUS主机命令。
//本例中,创建了一个命令,访问地址为1的从机
//MODBUS命令为3(读中间寄存器),从地址10开始,8个寄存器。
LD SM0.1
MOVB 6,VB0
MOVB 1,VB1
MOVB 3,VB2
MOVB 0,VB3
MOVB 10,VB4
MOVB 0,VB5
MOVB 8,VB6
2、 设定通讯参数
为A5设定波特率、奇偶校验等通讯参数。需注意的是,当作为MODBUS主站时,是不需要设定地址的。具体设定方法请参见第三节。
3、 设定超时时间
当A5作为主机发送命令给从机后,等待从机回答。若一定时间没有回复,则主机可以认为从机接收错误或从机故障。等待时间可以由SMB96设置,时间单位为100ms,因此等待时间可以从0.1秒(100ms)至25.5秒调整。若SMB96=0,则没有超时限制。
l 梯形图:
l 语句表
NETWORK 1
//设定超时时间为2S(100ms为单位),如果2S内没有反馈,则失败
MOVB 20,SMB96
4、 使用MODX指令通讯
准备好通讯内容和设置好通讯后,就可以使用MODX指令进行通讯了。MODX指令包含三个参数:参数一表示使用哪个通讯口(目前A5系列只有0口支持MODBUS主机),参数二表示发送内容参数表,参数三表示接收内容放置位置。例如:
l 梯形图:
l 语句表
NETWORK 2
//每隔0.5秒,如果上次读取完成,再次读取。
//读取来的数据放在VB100开始的寄存器中
LD SM0.5
AN SM95.0
EU
MODX 0,VB0,VB100
上面的语句表示,A5从0号通讯口发送VB0开始的参数命令,并将接收到的从机回复内容放置在VB101开始的地址区域,而VB100表示接收到的字节个数。
5、 查询SMB95的状态以判断通讯结果
使用MODX指令后,您可以根据SMB95字节的内容来判断目前的通讯状态。
SM位
描述
SM95.0
当MODBUS功能空闲时,此位为0,等待从机回复时,此位为1
SM95.1
该位表示是否校验错误。当收到的从机回复校验错误时,此位=1
SM95.2
该位表示是否超时,1=超时
SM95.3
保留
SM95.4
保留
SM95.5
保留
SM95.6
保留
SM95.7
保留
SMB95寄存器的0位表示MODBUS是否空闲,1位表示接收的命令是否校验正确,2位表示是否超时。
若SM95.0=1,则说明从机还没有回复。若SM95.0=0,则说明从机已回复或已超时。
若SM95.1=1,则说明返回的信息校验错误。
若SM95.2=1,说明等待已超时。
若SMB95=0,说明从机已回复信息并校验正确。从机回复的信息内容已放置在VB100开始的表中。
6、 从机返回结果分析
当SMB95=0时,说明从机返回结果正确。假设VB100开始的内容如下:
地址
数值
VB100
19
VB101
1
VB102
3
VB103
16
VB104
0
VB105
0
VB106
0
VB107
0
VB108
0
VB109
0
VB110
0
VB111
0
VB112
0
VB113
0
VB114
0
VB115
0
VB116
0
VB117
0
VB118
0
VB119
0
VB120
228
VB121
89
VB100表示从机返回的数据有19字节(不包含CRC校验的后两个字节)。VB101表示从机地址为1,VB102表示MODBUS命令号为3,VB103表示数据长度16字节。VB104~VB119是16字节的数据长度,表示主机想读取的8个字(16字节)的数据值。VB120和VB121是从机返回的CRC校验值,您可以不必关心。
三、 调整通讯设置
通讯的波特率、数据位、停止位、校验位等设置可以在SMB30中设置,低两位表示协议类型可设置为“00”(从机),当A5执行MODX指令时,会自动将其设置为“10”(主机)。
四、 注意事项
l A5只支持MODBUS-RTU,不支持MODBUS-ASCII。若您需要使用MODBUS-ASCII,可以使用A5的自由口通讯模式来编程实现。
l MODBUS使用的是big endian模式,而A5使用的是little endian模式。所以当A5使用命令3读取另一台A5时,读取的字高字节和低字节是相反的。因此使用MODBUS命令3读取的对应关系如下图所示:
引言:在工业现场,计算机与设备之间的通信,一般都采用串行通信方式,通过计算机的串口,将串口线与设备的通讯口连接。根据现场控制要求,计算机与设备之间会有一定的距离。鉴于RS232接口标准的通信距离短,速率低的缺点,更多项目会采用RS485标准。RS485是从RS232标准中改进而来的,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,信号的“正”、“负”逻辑是通过两线之间电平的正负来确定的。在接线时,线的两端的接收器和发送器对应引脚相连。
软件简介
根据现场控制的要求,计算机要对在工业现场采集的参数实时显示,相应的发布控制指令完成对整个过程的控制。世纪星组态软件是在PC机上开发的智能人机接口软件,以Microsoft bbbbbb 98/NT/XP中文平台作为其操作系统。该软件充分利用了bbbbbbs图形功能完备、界面一致性好的特点,比以往的使用专用机开发的工业控制系统更有通用性,并且可以利用PC机丰富的软件资源进行二次开发。
硬件驱动设备
通信软件的核心是串口的通信驱动程序,利用VC++或VB等编程软件都可以实现串口通讯的底层协议的编制。在VC++中一般用如下方法可以进行串口通讯。一种是利用Microsoft公司提供的ActiveX控件Microsoft Communications Control。另一种是直接用VC++访问串口,直接利用API对串口操作,此方法较复杂,但有很大的灵活性。为了缩短软件的开发周期,可以利用第三方提供的关于串口通信的动态连接库(DLL)。将其连接或添加到自己要开发的程序中,就可以直接利用里面已编制好的函数来完成串口编程的操作;也可以选用组态软件的通讯协议以完成控制信号的传递。
硬件驱动是上位机远程控制的核心环节,要实现计算机与设备的串口通信,首先要打开计算机的串口并对其属性进行设置(即波特率、数据位、奇偶校验、停止位等参数的设置),此串口属性的设定要与设备的串口属性一致,否则将无法建立通信联系。其次,建立数据传输的格式时,不同的下位硬件的数据格式各不相同。实现通讯的两设备之间的数据传输格式必须严格一致,否则将不能对传入的数据进行识别,从而无法实现通讯。
软件设置
应用世纪星组态软件可以从复杂的通讯格式的编制中解脱出来。设备驱动程序和世纪星有机的结合在一起。来完成数据采集和实时控制。对于不同的硬件设备,利用世纪星的设备安装向导,配置相应的设备驱动程序即可。在世纪星的浏览器下。选择设备驱动,用户可以按照系统的提示,依次完成I/O设备驱动参数的设置。其操作步骤如下:
1)设备安装向导
双击设备安装向导,出现设备安装向导对话框,框中列出了工业生产中常用的一些硬件设备(如PLC、板卡、智能仪表、变频器等)。如图1所示:
图1
组态软件已经对这些常用的设备根据各自的通讯标准,制作了相应的驱动程序,使应用人员从繁琐的底层驱动程序的开发中解脱出来。
2)选择硬件设备
在列表中选择相应厂家生产的硬件设备。列表将以树型分支方式列出某类设备的各种型号。根据用户的实际需要选择适当的类型。注意,由于设备的类型不同,其通信协议也可能不同,如果设备类型与实际应用的类型不符,将会出现无法通信的现象。
3)设置通信参数
设备选择完后,点击下一步后进行通讯方式及参数等设置。在设置窗口中需要指定设备名称、通信的端口号、设备地址以及出现故障时尝试恢复的时间间隔和恢复时间的上限。设备名称实际上是所建立的驱动程序的对象名。与实体的硬件设备建立一一对应的联系。在上位机对多台下位设备控制时。上位机通过各个设备的设备名称来区分应该对哪个设备进行控制。通信端口的列表框内列出了32个串口(COMl~COM32),在进行选择时,端口号应与通讯线实际连接的串口一致。设备地址实质是为新建的设备指定一个编号,在RS485标准的串行通讯协议中有地址信息,其数据应在这里指定。在多串口参数设置窗口中,根据设备说明书,对波特率、数据位、校验位等进行设置。通过上述的过程,为上位机与设备的通讯连接已经做好了充分的准备。
4)变量定义
在开发系统的浏览器中双击变量词典,世纪星组态软件把变量分为“内存变量”、“I/O变量”和“系统变量”等。I/O变量的特点在于可以与I/O设备进行数据交换。为了使建立的变量中的值能和硬件设备数据寄存器中的值建立一一对应的关系,必须为该变量指定要连接的设备名,以及对应的寄存器。如果采集上来的I/O值与要显示的工程值存在一定的比例关系,则需要在建立变量时做一个线性转换。例如:I/O值为3500时,要显示的工程值如果为70,需得将I/O值比例缩小50倍,即:I/O小值除以小值等于50、I/O大值除以大值等于50。如图2所示:
图2
定义好变量之后,就可以在工程的画面中做一些变量连接和动画效果了。开发者可根据要求进一步丰富控制画面,从而达到直观、生动的效果。
结束:
本文详细介绍了世纪星组态软件如何实现上位机与硬件设备的连接。基于组态软件的远程监控系统使操作人员远离危险操作环境,避免人员伤亡和国家的财产损失。利用组态系统中的报警记录、历史数据记录、报表生成的功能,使工业生产在管理层面上更方便、快捷。组态软件的工业化运用有很大的发展前景,在工业控制中占有优势。