1、内置多种通讯协议:Haiwell PLC各种型号的主机都内置Modbus RTU/ASCII协议、自由通讯协议以及海为公司的HaiwellBus高速通讯协议;
2、通讯端口可扩展:Haiwell PLC各种型号的主机均自带2个通讯口(一个为RS-232,另一个为RS-485),用通讯扩展模块可扩展至5个通讯口,每个通讯端口均可用于用于编程和联网,通讯端口相互独立,均可作为主站也可作产从站;
3、极为便利的通讯指令系统:使您无论使用何种通讯协议都只需一条通讯指令便可完成复杂的通讯功能,编程简单而程序简洁,无须再为通讯端口冲突、发送接收控制、通讯中断处理等问题烦恼,可以在程序中混合使用各种协议轻松完成您所需的各种数据交换。
1、海为PLC与北京驰润达GP60 模块的连接如下图:
2、电话号码的表示
数据包中用6个8位二进制字节表示电话号码,每个字节中高4位和低4位均用BCD码表示1位十进制的电话号码,这样每个字节可表示两位电话号码,6个字节共可表示12位电话号码,因现行的电话号码均为11位,而6字节能表示12位十进制的BCD数,所以在传输数据表示电话号码时要将电话号码的前面补0以凑足12位。
假设电话号码是13501237654,转换成6字节BCD 码后变为 01H│35H│01H│23H│76H│54H。
3、读取短信命令:$AAR(CR)
功能:读模块收到的数据。
语法结构:$AAR<CR>
$ ——定义符(24H)
R ——读数据标识符(52H)
AA——2 位16 进制数的模块地址:从00 到FF。长度2 字节。
(CR) ——(0DH)
响应:
有效响应:!AA(long) (data) (cr)
无效响应:?AA (cr)
没有响应:语法错误/通信失败/地址错误
!——有效响应的定义符(21H)
?——无效响应的定义符(3FH)
AA——2 位16 进制数的模块地址,长度2 字节。
(long) ——单字节数据的长度最长为FFH。00H 表示无数据。
(data)——以字节为单位的数据,数据的长度由(long)决定,内容:字头D7H + 1字节数据长度UDL + 6字节源电话号码STA + 数据UD + 6字节发送时间DATE
UDL: 接收到的除包头D7H 以外总的数据长度。包括STA,UD 和它本身的字节长度,因STA和UDL的字节长度一般是固定的,即固定为 1+6=7 个字节,所以其长度可由如下公式计算UDL 数值=1+6+UD 长度。接收方收到的时间字节DATE不包含在内
SOA:发送方的电话号码,即源地址。
UD: 发送方发送的有效数据。其总长度小等于140 个字节。
DATE:短信中心收到短信的时间,也就是发送方发送短信的时间。共6个字节的BCD 码,依次是年、月、日、时、分、秒。UDL 的数值并不包含这6 个字节。
(cr) ——(0DH)
例:假设读取地址是00的G100模块中的短信,模块中的短信内容为“1111”(31H│31H│31H│31H,共4个字节),发送方的电话号码(源地址)是13912070425,发送时间是2003-08-12 13:21:21。
发送指令:$00R(cr)——24H│00H│00H│52H│0DH
模块返回:
21H│00H│00H│12H│D7H│0BH│01H│39H│12H│07H│04H│25H│31H│31H│31H│31H│03H│08H│12H│13H│21H│21H│0DH
4、发送短信命令:$AAW(long) (data)
功能:发送短信。
语法结构:$AAW(long)(data)(cr)
$ ——定义符(24H)
AA——2 位16 进制数的模块地址:从00 到FF。长度2 字节。
W ——写数据标识符(57H)
(long) ——单字节数据的长度最长为FFH。00H 表示询问发送缓冲区是否空见9.5。
(data)——以字节为电位的数据,数据的长度由(long)决定,内容:字头D7H + 1字节数据长度UDL + 6字节目的电话号码STA + 数据UD
UDL:要发送的除包头D7H 以外总的数据长度。包括STA,UD 和它本身的字节长度,因STA 和 UDL 的字节长度一般是固定的,即固定为1+6=7 个字节,所以其长度可由如下公式计算UDL 数值=1+6+UD 长度。
STA:接收方的电话号码,即目的地址。号码需要进行格式转换。
UD: 您需要发送的有效数据。其总长度小等于140 个字节。
(cr) ——(0DH)
响应:无
例:假设通过地址是00的G100模块发送短信“OK”(00H│4FH│00H│4BH共4个字节),接收方的电话号码(目的地址)是13912070425
发送数据串如下:
24H│00H│00H│57H│0DH│D7H│0BH│01H│39H│12H│07H│04H│25H│00H│4FH│00H│0BH│0DH
三、海为PLC与北京驰润达GP60 模块通讯程序
因为北京驰润达GP60 模块采用厂商自主通讯协议,所以海为PLC采用自由协议与其通讯,为了方便理解,将要发送是数据串按字节存放在寄存器中,以低字节模式发送即使用COMM.LB指令。
例如完成每100mS读一次短信,如果收到正确的短信“0000”或“1111”则回复一条短信:
读短信命令放在“初始寄存器表”中(寄存器V1000-V1004),随程序一起下载到PLC中。
V1000:24H V1001:00H V1002:00H V1003:52H V1004:0DH
发短信命令放在“初始寄存器表”中(寄存器V1100-V1117),随程序一起下载到PLC中。
V1100:24H V1101:00H V1102:00H V1103:57H V1104:0DH
V1105:D7H V1106:0BH V1107:01H V1108:39H V1109:12H
V1110:07H V1111:04H V1112:25H V1113:00H 1114:4FH
V1115:00H V1116:0BH V1117:0DH
要比较的短信内容存在寄存器V1200-V1203中,如果短信内容等于“1111”或“0000”则回复短信“OK”。
短信内容“1111”:V1200:3131H V1201:3131H
短信内容“0000”:V1202:3030H V1203:3030H
程序图如下:
COMM自由通讯指令自带通讯协议格式定义端子Protocol,可以通过双击COMM指令,以配置方式输入,如下图: