跳到主要内容

卡片PLC通讯扩展模块

卡片通讯模块使用说明

一、产品型号列表与外观尺寸

型号功率(DC24V)外形尺寸
A01RSDC24V - 0.1A MAX25x95x65

1.通道指示灯6.模块锁紧卡扣
2.PWR电源指示灯、LINK模块通讯指示灯7.模块连接定位孔
3.端子定义8.模块扩展口
4.可拔插端子9.35mmDIN导轨
5.导轨卡扣

二、指示灯说明

  1. xxPWR:xx 电源指示灯,绿色。常亮 - 电源正常;不亮 - 电源异常。

  2. xxLINK:xx 状态指示灯。三色(红色、黄色、绿色),如下表:

  3. xxCOM 指示灯数字 0:xx 指示通讯口 0 为 RS232 或者 RS485 通讯方式,作主设备(Master)时发命令闪烁,作从设备(Slave) 则回复数据时闪烁。

三、产品环境规格

项目环境规格
温度/湿度工作温度:0 - +55 ℃ 储存温度:-25 - +70 ℃ 湿度:5 - 95%RH,无凝露
抗振动能力10 - 57Hz振幅0.075mm,57Hz - 150Hz加速度1G,X、Y、Z三轴方向各10次
抗冲击能力15G,持续11ms,X、Y、Z三轴方向各6次
抗干扰能力DC EFT:±2500V,浪涌:±1000V
使用环境防尘、防潮、防腐蚀、免受电击及外力冲击等环境

四、端子配线图

五、A01RS 接线图

六、扩展模块的安装

在安装时,请安装在封闭式之配电箱内,其周围应保持一定的空间(如右图所示),以确保 PLC 能良好地进行散热。

导轨安装方式:使用标准 35mm 导轨。

扩展模块的连接方法 上一个模块(主机或扩展模块)右侧下部的并行接口插入下一个模块左侧下部的并行接口并用两侧小卡勾扣住,此模块右侧的并行接口作为下一个扩展模块用。如此 依次连接所有的扩展模块。

通讯模块 A01RS 应用实例

一、模块供电

通过并口挂在主机后面,由并口供电,无需外部供电。

二、适用主机

AT、AH 系列都可以扩展通讯扩展模块,最大可以扩展 3 个 A01RS 模块。

三、硬件配置与通讯端口号

PLC 主机自带两个通讯口,分别为以太网口;COM2 RS485 口,端子排上 A+ B-端子。通讯扩展模块 A01RS,既可以做 232 使用,也可以做 485 使用,无需程序定义。主要看外部接线即可,接 485 端口则做 485 使用,接 232 则做 232 使用,但只能 2 选 1 使用。

扩展通讯模块时,最靠近主机的通讯口为 COM3、其次 COM4 最后 COM5,通讯模块在扩展模块中的位置可以任意,通讯口编号可以在硬件配置中查看,如下图所示:

四、通讯协议

内置 Modbus RTU/ASCII 协议、自由通讯协议以及海为公司的 Haiwellbus 高速通讯协议(每个口都支持以上协议)。一个通讯口可以同时走不同波特率、不同资料格式、不同通讯协议,以下组网示意图两个 485 网络均可正常高效通讯。

五、Haiwellbus 通讯示例介绍

1. 两台海为 PLC 主机之间通讯

本例演示两台 PLC 主机之间通讯,已知主、从机 PLC 通讯口波特率 19200 资料格式 N 8 2 RTU,从机站号 2。

主机读取 2#从机数据:例如从机的 X0 读取放到主机 M0;从机的 X3 读取到主机的 M11 等,具体如下:

主机写 2#从机数据:例如主机的 V0 写到从机 V100;主机 V50 写到从机的 V102 等,具体如下:

xx 编程思路 xx:在海为 PLC 编程软件中,新建 Haiwellbus 读通讯表,特别的浮点数和 32 位数据连续占用两个地址,如果主机要写浮点数或者 32 位数据到从机,则需要填入连续两个寄存器,比如 V11V12 写到 V80V81,如下:

在海为 PLC 编程软件中,新建 Haiwellbus 写通讯表,如下:

表格建立好之后,调用 HWRD、HWWR 指令,在指令的 slave 端子填入从站地址,本例从站 PLC 地址为 2,在 Table 直接输入表格名字,或者双击该端子选择建立好的表格。Port 就是通讯端口号,如上述第二点介绍,2 表示主机的 COM2 485 通讯口。这样就可以写好读写从机通讯程序了,如下:

2. 从机通讯断线报警程序示例介绍

通过通讯指令 Out 端子判断通讯误码情况,Out 端子一直有电表示通讯非常好没有误码;Out 端子一直没电表示通讯没有成功,只要检查从机参数设置和联网接线;Out 端子闪烁表示通讯有误码,通讯的偶尔误码没关系,可能是通讯受到干扰,所以可以检查外部是否使用屏蔽双绞线,多个从站需要“手拉手”方式,或者加海为公司的通讯隔离器 S01GL。以下为从机通讯断线报警程序示例:

通讯断线时间可以根据实际设置,上述当 M5 超过 5 秒还是为 OFF 状态则 T0 线圈指示通讯断线报警。

六、Modbus 通讯示例介绍

本例,主机带一个通讯扩展模块 A01RS,通讯口 3,该通讯口接一个海为 H08RC 热电阻模块和一台变频器。

1. 与 H08RC 热电阻远程 IO 模块通讯

H08RC 模块带 RS485 接口,可做远程 IO 使用,支持 Modbus RTU/ASCII 协议,通讯参数 19200 N 8 2 RTU,站号 1#,由编程软件在线帮助-硬件手册-扩展模块参数中可知,8 个温度值存放的 Modbus 起始地址为 10 - 17H,也就是 10 进制的 16 - 23。

2. 读写变频器频率示例

变频器,9600 E 7 1 ASCII,站号 2#。要求读写变频器频率,由变频器手册可知,设定频率的参数地址为 2001H,十进制 8193,运行频率的参数地址为 2103H,十进制 8451。则写程序如下:

Port=3,表示本例扩展的 A01RS 通讯口。8193 可以快速输入,比如把鼠标放在 Write 端子,直接输入 0x2001 即可。

七、自由协议典型应用

串行通讯 COMM 指令,分为高低字节模式以及低字节模式。按照发送与接收又可以实现只发送、只接收以及发送命令后等待数据接收。具体指令使用说明可参考软件在线帮助。自由通讯,本质是要看懂通讯协议,以下介绍 COMM 指令的典型应用。

1. Tn=0,Rn > 0,只接收数据

只接收数据,例如跟称重仪表通讯,已知称重仪表是 485 接口,波特率 9600 资料格式 E 7 1 ASCII,称重仪表一般有两种模式,查询模式与连续发送模式。连续发送模式,就是仪表间歇的往通讯口发送当前重量,所以 PLC 这侧只要负责接收数据即可。

已知该称重仪表每次都往通讯口发送 18 个字节数据,这 18 个字节分别代表的具体含义如下:

字节顺序ASCII符号16进制数含义
1 - 2OL4FH 4CH超量程
ST53H 54H静荷
US55H 53H动荷
32CH分隔符
4 - 5NT4EH 54H净重
GS47H 53H毛重
62CH分隔符
7+2BH正号
-2DH负号
8 - 140 - 9

30H-39H


20H


2EH

数据
“ ” 空格
. 小数点
15 - 16Kg4BH 67H公斤
“T ”54H 20H
17CR0DH回车
18LF0AH换行

假设称重仪现在的净重是 1.23Kg,因此称重仪表会按照上述格式向 PLC 发送 18 字节数据,数据是以 16 进制数:53 54 2C 4E 54 2C 2B 20 20 20 31 2E 32 33 4B 67 0D 0A,其中表示重量的数据是 2B 20 20 20 31 2E 32 33 表示的是 1.23Kg。2B 是“+”号,20 是空格,2E 为小数点,30 - 39H,是字符 0 - 9。所以我们只要用 COMM 指令把这 18 字节接收回来,并且解析出我们要的重量即可。这样我们写得下面 COMM 指令:

当 PLC 运行的时候,扫描到 COMM 指令,因为 Tn=0,不需要发送命令,所以 COMM 指令将按照 protocol 定义的波特率和资料格式,处于接收状态,此时当称重仪表发出 53 54 2C 4E 54 2C 2B 20 20 20 31 2E 32 33 4B 67 0D 0A 数据时,COMM 指令将接收到数据,并且存放在 V200 为起始的寄存器中,数据存放时,先存放在寄存器的低字节,再存放寄存器的高字节如下:

......  0A0D 674B 3332 2E31 2020 202B 2C54 4E2C 5453
...... V208 V207 V206 V205 V204 V203 V202 V201 V200

由上述可知,我们要的数据在 V203 - 206,这四个寄存器中,共 8 个字节。接下来数据解析,海为有一条非常便捷的字符转浮点数指令,即 CTOF。所以我们写程序如下,并通过通讯仿真器仿真运行可得结果:

点击仿真,在调试菜单里打开通讯仿真,在应答区把数据填入,点击应答即可仿真通讯程序,如果电脑串口有实际联接仪表设备,则可以勾选“使用实际串口”,这样软件就可以跟实际仪表进行联合仿真,非常方便。最终仿真程序如下:

2. Tn > 0,Rn=0,只发送数据

例如当 PLC 中寄存器 V300 的数值分别为不同的值时,就往串口发送不同的数据内容,比如:

V300=1,则发送 V1000 - 1002 这 6 个字节数据到通讯口;

V300=2,则发送 V1010 - 1013 这 8 个字节数据到通讯口;

3. Tn > 0,Rn>0,例如与宇电仪表通讯 AIBUS

AI 仪表采用 16 进制数据格式来表示各种指令代码及数据。AI 仪表标准的通讯指令只有两条,一条为读指令,一条为写指令。如下:

读:地址代号+52H(82)+要读的参数代号+0+0+校验码

写:地址代号+43H(67)+要写的参数代号+写入数低字节+写入数高字节+校验码

返回数据:无论是读还是写,仪表都返回以下 10 个字节数据:

测量值 PV+给定值 SV+输出值 MV 及报警状态+所读/写参数值+校验码

本例仪表地址为 1,波特率 9600 资料格式 N 8 1,当要读取当前温度时,假设当前温度 254.1℃(2541=0x9ED),则发送和回复的数据如下(发送和回复的为什么是以下数据,请参考 AI 仪表手册协议部分):

发送:

81 81 52 00 00 00 53 00

回复:

ED 09 00 00 00 60 00 00 EE 69

一般的,读命令都是固定的。海为提供了一个非常方便的初始化数据表格:初始寄存器值表,我们把要发送的命令读填入初始寄存器值表,本例起始地址 V1020,长度为 4,共 8 个字节,如下:

......  00 53    00 00     00 52    81 81
...... V1023 V1022 V1021 V1020

COMM 指令有两种模式一种是高低字节模式,先发送起始地址的低字节数据,再发送高字节,依此类推。另一种是低字节模式 COMM.LIB 可双击 COMM 指令进行设置,只发送寄存器的低字节数据。本例采用高低字节模式,即先发送 V1020 的低字节 81H,再发送高字节 81H,发送 V1021 低字节 52H,再 V1021 的高字节 00H....以此类推。

以下为“读 AI 仪表命令”初始寄存器值表:

接着根据仪表规定,我们写 COMM 指令,并仿真执行如下:

当 PLC 运行的时候,扫描到 COMM 指令,因为 Tn=8>0,则 COMM 指令按照 protocol 定义的波特率和资料格式往通讯口 2 发送命令:81 81 52 00 00 00 53 00,发送完成判断 Rn=10>0,则转入接收状态。当接收到命令后,则回复数据:ED 09 00 00 00 60 00 00 EE 69,PLC 接收到的数据则放在 V50 为起始的寄存器中,先存在 V50 的低字节,然后 V50 高字节,V51 低字节,V51 高字节......以此类推,当接收到数据 Rn=10 个时,OUT 端子为 ON,标识本次通讯成功。

......  69EE 0000 6000 0000 09ED
...... V54 V53 V52 V51 V50

接收到的数据排列如上所示,16 进制的 09ED 也就是 10 进制数 2541,一位小数精度,也就是实际 254.1℃。

八、通讯超时时间、通讯指令执行间隔、通讯口字符接收超时时间系统寄存器与应用介绍

xx 通讯超时时间 xx,单位 ms,默认 200,即 200ms,表示 PLC 往通讯口发送命令后,等待从机响应回复数据的时间。通讯超时用于 PLC 做主站的时候,PLC 做从站无需用到这个通讯系统寄存器。

系统寄存器注释读/写停电保持默认值
SV45COM1和以太网通讯超时时间 单位msR/W200
SV47COM2通讯超时时间 单位ms
SV55COM3通讯超时时间 单位ms
SV57COM4通讯超时时间 单位ms
SV59COM5通讯超时时间 单位ms

该值一般默认即可,一般用在有的从机仪器仪表响应数据慢的情况,比如从机仪表接收到 PLC 命令后,要过 0.5 秒才回复数据,此时就需要把这个通讯超时时间加大。如果需要加大通讯超时时间,有两种设置方法:

  1. 可以在 PLC 程序中,用 MOV 赋值指令,对系统寄存器进行赋值,例如 COM2 通讯超时时间设置:

  1. PLC 联机后,在菜单栏-PLC 下拉选项-设置 PLC 通讯参数里可以设置通讯超时时间,如下图:

串口调试工具可以记录数据从发送到回复的间隔时间。所以建议 PLC 和仪器仪表通讯之前,可以先用串口调试工具跟仪器仪表通讯上,这样我们就可以确认该仪表的站号,波特率,资料格式,欲读写的 Modbus 地址,响应时间等,最后写 PLC 通讯指令就水到渠成了。例如下图 16ms:

xx 通讯指令执行间隔 xx,该间隔时间默认为 0,PLC 一条通讯指令执行完成后就立即执行下一条,有的设备不允许或者接收不了这么快的通讯频率,就得设置通讯间隔,设置通讯间隔用 MOV 指令赋值即可。

系统寄存器注释读/写停电保持默认值
SV141COM1通讯指令执行间隔时间 单位msR/W0
SV833COM2通讯指令执行间隔时间 单位ms
SV834COM3通讯指令执行间隔时间 单位ms
SV835COM4通讯指令执行间隔时间 单位ms
SV836COM5通讯指令执行间隔时间 单位ms
注意

S 系列所有的通讯口的通讯时间都由 SV141 来设置,C、T、H、N 四个系列可以单独设置。

通讯指令执行间隔用于 PLC 做主站的时候,PLC 做从站无需用到这个通讯系统寄存器。

xx 通讯口字符接收超时时间 xx,在与仪表设备通讯过程中还会出现一种情况,就是有的仪表通讯字符与字符之间的间隔不是标准的间隔,或者一帧数据较长分多次返回,字符帧之间间隔较大,这样会使得 PLC 接收不到完整的数据帧,指令会判断通讯失败。针对这个情况,海为灵活便利的开放出了一个系统寄存器用来设置通讯口字符接收超时时间,此时就可以设置这个字符接收超时时间。

系统寄存器注释读/写停电保持默认值
SV851COM1通讯口字符接收超时时间 单位msR/W0
SV852COM2通讯口字符接收超时时间 单位ms
SV853COM3通讯口字符接收超时时间 单位ms
SV854COM4通讯口字符接收超时时间 单位ms
SV855COM5通讯口字符接收超时时间 单位ms

设置通讯口字符接收超时时间用 MOV 指令赋值即可。

注意

C、T、H、N 四个系列可以单独设置,S 系列不支持设置通讯该参数。

通讯口字符接收超时时间用于 PLC 做主站的时候,PLC 做从站无需用到这个通讯系统寄存器。。

九、PLC 做从站时,不需要写任何通讯程序,支持各种人机界面和组态软件

CPU 主机带以太网口加 2 个串口,可扩展至以太网口加 5 个串口,每个通讯口都可以进行编程和联网,都可作为主站或从站。支持 1:N、N:1、N:N 联网方式,支持各种人机界面和组态软件,可与任何带通讯功能的第三方设备(如变频器、仪表、条码阅读器等)联网。图为 PLC 做从站时 N:1 组网方式。

PLC 做从站不用写任何程序,默认参数 19200 N 8 2 RTU,站号 1。对于组态软件以及触摸屏,内置海为驱动的可直接选择海为驱动,如果没有海为驱动可以选择莫迪康的 Modbus 驱动。海为对应的 Modbus 通讯代码表如下图所示:

  1. Haiwell(海为)PLC 位元件表(相当于 Modbus 地址类型 0、1,支持 Modbus 功能码 1、2、5、15)
元件名称元件范围读写属性modbus通讯地址说明
16进制10进制
X开关量输入X0 - X1023只读0x0000 - 0x03FF0 - 1023
Y开关量输出Y0 - Y1023可读/写0x0600 - 0x09FF1536 - 2559
M内部继电器M0 - M12287可读/写0x0C00 - 0x3BFF3072 - 15359
T计时器(线圈)T0 - T1023可读/写0x3C00 - 0x3FFF15360 - 16383
C计数器(线圈)C0 - C255可读/写0x4000 - 0x40FF16384 - 16639
SM系统状态位SM0 - SM215可读部分可写0x4200 - 0x42D716896 - 17111
S步进继电器S0 - S2047可读/写0x7000 - 0x77FF28672 - 30719
  1. Haiwell(海为)PLC 寄存器元件表(相当于 Modbus 地址类型 3、4,支持 Modbus 功能码 3、4、6、16)
元件名称元件范围读写属性modbus通讯地址说明
16进制10进制
CR扩展模块参数CR0 - CR255可读/部分可写0x00 - 0xFF0 - 255Modbus访问扩展模块参数时用
AI模拟量输入AI0 - AI255可读0x0000 - 0x00FF0 - 255
AQ模拟量输出AQ0 - AQ255可读/写0x0100 - 0x01FF256 - 511
V内部寄存器V0 - V14847可读/写0x0200 - 0x3BFF512 - 15359
TV计时器(当前值)TV0 - TV1023可读/写0x3C00 - 0x3FFF15360 - 16383
CV计数器(当前值)CV0 - CV255可读/写0x4000 - 0x40FF16384 - 16639仅CV48 - CV79为32位寄存器
SV系统寄存器SV0 - SV900可读部分可写0x4400 - 0x478417408 - 18308
  1. 说明: Haiwell(海为)PLC 采用标准 Modbus 协议(支持 RTU 和 ASCII 格式),能与所有支持 Modbus 协议的 HMI 和组态软件连接通讯。

Haiwell(海为)PLC 的 Modbus 地址号从 0 开始,有些 HMI 或组态软件则从 1 开始,如果 HMI 或组态软件的 Modbus 地址从 0 开始则直接使用通讯地址,如 M0 为 0x3072,V0 为 4x0512;如果 HMI 或组态软件的 Modbus 地址从 1 开始则需将元件地址号加 1,如 M0 为 0x3073[3072+1],V0 为 4x0513[512+1]。地址的首位是 Modbus 协议的元件类型(0/1 为位元件,3/4 为寄存器元件,类型 0/4 表示可读写,类型 1/3 表示只读)后面的其余数位才是元件地址号。

十、PLC 做从机如何判断通讯失败思路与程序解析

PLC 做主站与仪器仪表通讯的通讯断线报警程序在上述《Haiwellbus 通讯示例介绍:两台海为 PLC 主机之间通讯》示例中已经介绍,那么 PLC 做从站时与上位机通讯,如果此时通讯线断了,或者上位机参数修改了,此时作为从机的 PLC 该如何检查到通讯断线呢?如下思路:

上位机不断写 M900 为 OFF 给 PLC,程序每一秒把 M900 置位。T0 为上位机通讯失败报警,如果 M900 延时 3 秒有电就表示上位机没有写 M900 为 OFF,这样就可以判断上位机与 PLC 通讯失败了。

十一、校验码计算器使用介绍

如果你想用串口调试工具或者上位机读取海为 PLC 中 V100 的数据,需要发送什么数据命令呢?

根据前面介绍我们知道,海为 PLC 内置 Modbus 通讯协议,海为编程软件提供一个非常方便的工具,即校验码计算器 ,该工具能有效快速的计算出发送的命令帧。打开海为编程软件 - 工具 - 校验码计算器,弹出如下窗口:

我们选择功能码,设置元件类型,元件号,从机 PLC 站号等,点击生成,就可以得到命令:01 03 02 64 00 01 C4 6D,也就是上位机发送上述命令即可读取到 PLC 中 V100 的数值。

校验码计算器同时还可以进行进制转化,对数据进行校验,算出该串数据的 CRC、LRC、SUM 等校验码,对于做通讯的工程师来说,该工具是一个非常方便的编程助手。

12、PLC 通讯口做主站、从站支持的波特率、资料格式通讯指令说明

12.1 PLC 通讯口做主站

AC、AT、AH 系列主机通讯口支持

AC/AT/AH主机通讯口波特率1200、2400、4800、9600、19200、38400、57600、115200
资料格式N,8,2 RTU、E,8,1 RTU、O,8,1 RTU、N,7,2 ASCII、E,7,1 ASCII、O,7,1 ASCII、N,8, 1 RTU
通讯指令MODR / MODW / HWWR / HWRD / COMM / RCV / XMT
说明:主机通讯口,即COM1:RS232(圆口); COM2:RS485(A+、B-端子)。

A01RS 通讯扩展模块支持

A01RS通讯扩展模块支持波特率1200、2400、4800、9600、19200、38400、57600、115200
资料格式N,8,2 RTU、E,8,1 RTU、O,8,1 RTU、N,7,2 ASCII、E,7,1 ASCII、O,7,1 ASCII、N,8, 1 RTU
通讯指令MODR / MODW / HWWR / HWRD / COMM / XMT

12.2 PLC 通讯口做从站

AC、AT、AH 系列主机通讯口支持

AC/AT/AH主机通讯口波特率1200、2400、4800、9600、19200、38400、57600、115200
资料格式N,8,2 RTU、E,8,1 RTU、O,8,1 RTU、N,7,2 ASCII、E,7,1 ASCII、O,7,1 ASCII、N,8, 1 RTU
说明:缺省19200,N,8,2 RTU,一般使用默认,无需修改。

A01RS 通讯扩展模块支持

A01RS通讯扩展模块支持波特率1200、2400、4800、9600、19200、38400、57600、115200
资料格式N,8,2 RTU、E,8,1 RTU、O,8,1 RTU、N,7,2 ASCII、E,7,1 ASCII、O,7,1 ASCII、N,8, 1 RTU
说明:缺省19200,N,8,2 RTU,一般使用默认,无需修改.