IBF70字符协议命令集:
模块的出厂初始设置,如下所示:
地址代码为01
波特率9600 bps
禁止校验和
如果使用 RS-485网络,必须分配一个的地址代码,地址代码取值为16进制数在00和FF之间,由于新模块的地址代码都是一样的,他们的地址将会和其他模块矛盾,所以当你组建系统时,你必须重新配置每一个IBF70模块地址。可以在接好IBF70模块电源线和RS485通讯线后,通过配置命令来修改IBF70模块的地址。波特率,校验和状态也需要根据用户的要求而调整。而在修改波特率,校验和状态之前,必须让模块先进入缺省状态,否则无法修改。
让模块进入缺省状态的方法:
IBF70模块边上都有一个INIT的开关,在模块的侧面位置。将INIT开关拨到INIT位置,再接通电源,此时模块进入缺省状态。在这个状态时,模块的配置如下:
地址代码为00
波特率9600 bps
禁止校验和
这时,可以通过配置命令来修改IBF70模块的波特率,校验和状态等参数。在不确定某个模块的具体配置时,也可以将INIT开关拨到INIT位置,使模块进入缺省状态,再对模块进行重新配置。
注: 正常使用时请将INIT开关拨到NORMAL位置。
字符协议命令由一系列字符组成,如首码、地址ID,变量、可选校验和字节和一个用以显示命令结束符(cr)。主机除了带通配符地址“**”的同步的命令之外,一次只指挥一个IBF70模块。
命令格式:(Leading Code)(Addr)(Command)[data][checksum](cr)
(Leading code) 首码是命令中的**个字母。所有命令都需要一个命令首码,如%,$,#,@,...等。 1- 字符
(Addr) 模块的地址代码, 如果下面没有*,取值范围从 00~FF (十六进制)。 2- 字符
(Command) 显示的是命令代码或变量值。 变量长度
[data] 一些输出命令需要的数据。 变量长度
[checksum] 括号中的Checksum(校验和)显示的是可选参数,只有在启用校验和时,才需要此选项。 2- 字符
(cr) 识别用的一个控制代码符,(cr)作为回车结束符,它的值为0x0D。 1- 字符
当启用校验和(checksum)时,就需要[Checksum]。它占2-字符。命令和应答都必须附加校验和特性。校验和用来检查所有输入命令,来帮助你发现主机到模块命令错误和模块到主机响应的错误。校验和字符放置在命令或响应字符之后,回车符之前。
计算方法:两个字符,十六进制数,为之前所发所有字符的ASCII码数值之和,然后与十六进制数0xFF相与所得。
应用举例:禁止校验和(checksum)
用户命令 $002(cr)
模块应答 !00020600 (cr)
启用校验和(checksum)
用户命令 $002B6 (cr)
模块应答 !00020600 A9 (cr)
‘$’ = 0x24 ‘0’ = 0x30 ‘2’ = 0x32
B6=(0x24+0x30+0x30+0x32) AND 0xFF
‘!’ = 0x21 ‘0’ = 0x30 ‘2’ = 0x32 ‘6’ = 0x36
A9=(0x21+0x30+0x30+0x30+0x32+0x30+0x36+0x30+0x30) AND 0xFF
命令的应答 :
应答信息取决于各种各样的命令。应答也由几个字符组成,包括首代码,变量和结束标识符。应答信号的首代码有两种, ‘!’或 ‘>’表示有效的命令而‘?’ 则代表无效。通过检查应答信息,可以监测命令是否有效
注意:1、在一些情况下,许多命令用相同的命令格式。要确保你用的地址在一个命令中是正确的,假如你用错误的地址,而这个地址代表着另一个模块,那么命令会在另一个模块生效,因此产生错误。
2、必须用大写字母输入命令。
3、(cr)代表键盘上的回车符,不要直接写出来,应该是敲一下回车键(Enter键)。
1、读取开关状态命令
说 明:从模块中读回所有输出通道开关量状态和输入通道开关量状态。
命令格式:$AA6(cr)
参数说明:$ 分界符。十六进制为24H
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! (dataOutput) (dataInput)00(cr) 命令有效。
?AA(cr) 命令无效或非法操作。
参数说明:! 分界符。十六进制为21H
(dataOutput) 代表读取到的输出开关状态,两个16进制数,
0 | 0 | 0 | 0 | DO3 | DO2 | DO1 | DO0 |
Bit7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit2 | Bit 1 | Bit 0 |
dataOutput |
**个数为0
*二个数代表3~0通道
位值为 0:
输出继电器断开
位值为 1:
输出继电器接通
十六进制为每个字符的ASCII码。
(dataInput) 代表读取到的开关状态,两个16进制数,
0 | 0 | 0 | 0 | DI3 | DI2 | DI1 | DI0 |
Bit7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit2 | Bit 1 | Bit 0 |
dataInput |
**个数为0
*二个数代表3~0通道
位值为 0:输入为低电平
位值为 1:输入为高电平。
十六进制为每个字符的ASCII码。
? 分界符,表示命令无效。
AA 代表输入模块地址
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如格式错误或通讯错误或地址不存在,模块不响应。
如果你使用的串口通讯软件输入不了回车键字符,请切换到十六进制格式进行通讯。
应用举例: 用户命令(字符格式) $016(cr)
(十六进制格式) 243031360D
模块应答(字符格式) !020100 (cr)
(十六进制格式):213032303130300D
说 明:读取到输出的数据是02,转成2进制是0000 0010,那么地址01H模块上输出开关状态是:
通道0:继电器断开 通道1:继电器接通 通道2:继电器断开 通道3:继电器断开
读取到输入的数据是01,转成2进制是0000 0001,那么地址01H模块上输入开关状态是:
通道0:高电平 通道1:低电平 通道2:低电平 通道3:低电平