本技术涉及通信,尤其涉及一种地址分配方法、装置、设备及存储介质。
背景技术:
1、在电器系统总线式控制中,一主多从已成为目前比较流行的控制方式,当总线中的从机入网时,需要为其配置从机地址,一般从机地址的配置方式主要包括硬件设置、软件设置以及自动设置,硬件设置一般是指通过液晶显示屏、拨码开关或控制器编程确定;软件设置一般是通过主机对从机地址进行设置,再到现场安装应用;自动设置是指主机依赖通信协议采用主机扫描的方式对从机分配地址。
2、在现有技术中,主机以广播形式发送地址分配开始指令,所有从机接收到请求信息后并响应,从而完成地址自动分配,地址自动分配能够提升从机地址分配效率,但由于各种原因,例如信号干扰,数据传输错误等,可能会出现由于主机与从机之间传输信息失败而导致从机的地址分配失败。
技术实现思路
1、本技术提供一种地址分配方法,能够通过重发机制保证数据的稳定传输,从而解决了从机地址分配失败的问题。
2、第一方面,本技术实施例提供一种地址分配方法,应用于包括主机节点与多个从机节点的通信系统,所述主机节点与每个从机节点连接,包括:
3、主机节点启动自动分配功能后,确定从机节点的数目,并根据从机节点的数目设定自身的通信地址编号;
4、主机节点向每个从机节点发送广播指令;
5、每个从机节点接收广播指令,响应于广播指令,将自身的通信地址编号修改为第一预设值;
6、主机节点检测自身的通信地址编号是否大于0,若大于0,则向每个从机节点发送第一常规指令;其中,第一常规指令的内容为读取第一目标从机节点的cpuid操作码,第一目标从机节点的通信地址编号为第一预设值;
7、主机节点等待任意从机节点对第一常规指令的应答,若无应答,主机节点则向每个从机节点重新发送预设次数的第一常规指令;
8、每个从机节点接收第一常规指令,响应于第一常规指令,检测自身的通信地址编号是否为第一预设值,若是,则返回自身的cpuid操作码;
9、主机节点接收任意从机节点回复的cpuid操作码;
10、主机节点向每个从机节点发送第二常规指令;其中,第二常规指令的内容为对第二目标从机节点发送cpuid操作码和主机节点的通信地址编号,第二目标从机节点的通信地址编号为第二预设值;
11、主机节点等待任意从机节点对第二常规指令的应答,当每接收到一个从机节点对第二常规指令的应答时,则将自身的通信地址编号减1;
12、当主机节点不再接收到任意从机节点对第二常规指令的应答时,则向每个从机节点重新发送预设次数的第二常规指令;
13、每个从机节点接收第二常规指令,响应于第二常规指令,判断自身的cpuid操作码与第二常规指令中的cpuid操作码是否相同,若相同,则以第二目标从机节点的身份响应第二常规指令,并将自身的通信地址编号修改为第二常规指令中的通信地址编号。
14、第二方面,本技术实施例提供一种地址分配方法,应用于包括主机节点与多个从机节点的通信系统,所述主机节点与每个从机节点连接,包括:
15、主机节点启动自动分配功能后,确定从机节点的数目,并根据从机节点的数目设定自身的通信地址编号;
16、主机节点向每个从机节点发送广播指令;其中,每个从机节点接收广播指令,响应于广播指令,将自身的通信地址编号修改为第一预设值;
17、主机节点检测自身的通信地址编号是否大于0,若大于0,则向每个从机节点发送第一常规指令;其中,第一常规指令的内容为读取第一目标从机节点的cpuid操作码,第一目标从机节点的通信地址编号为第一预设值;
18、主机节点等待任意从机节点对第一常规指令的应答,若无应答,主机节点则向每个从机节点重新发送预设次数的第一常规指令;其中,每个从机节点接收第一常规指令,响应于第一常规指令,检测自身的通信地址编号是否为第一预设值,若是,则返回自身的cpuid操作码;
19、主机节点接收任意从机节点回复的cpuid操作码;
20、主机节点向每个从机节点发送第二常规指令;其中,第二常规指令的内容为对第二目标从机节点发送cpuid操作码和主机节点的通信地址编号,第二目标从机节点的通信地址编号为第二预设值;
21、主机节点等待任意从机节点对第二常规指令的应答,当每接收到一个从机节点对第二常规指令的应答时,则将自身的通信地址编号减1;
22、当主机节点不再接收到任意从机节点对第二常规指令的应答时,则向每个从机节点重新发送预设次数的第二常规指令;其中,每个从机节点接收第二常规指令,响应于第二常规指令,判断自身的cpuid操作码与第二常规指令中的cpuid操作码是否相同,若相同,则以第二目标从机节点的身份响应第二常规指令,并将自身的通信地址编号修改为第二常规指令中的通信地址编号。
23、在一种可能的实现方式中,若无应答,主机节点则重新发送预设次数的第一常规指令之后,还包括:若主机节点在预设次数内未接收到任意从机节点对第一常规指令的应答,则停止自动分配功能,并生成分配超时的日志。
24、在一种可能的实现方式中,地址分配方法还包括:主机节点基于预置的公式计算从机节点的地址分配进度,并以进度条形式实时显示。
25、第三方面,本技术实施例提供一种地址分配方法,应用于包括主机节点与多个从机节点的通信系统,主机节点与每个从机节点连接,包括:
26、从机节点接收主机节点发送的第一常规指令,响应于第一常规指令,检测自身的通信地址编号是否为第一预设值,若是,则返回自身的cpuid操作码;其中,主机节点接收任意从机节点回复的cpuid操作码,向每个从机节点发送第二常规指令,第二常规指令的内容为对第二目标从机节点发送cpuid操作码和主机节点的通信地址编号,第二目标从机节点的通信地址编号为第二预设值,主机节点等待任意从机节点对第二常规指令的应答,当每接收到一个从机节点对第二常规指令的应答时,则将自身的通信地址编号减1,当主机节点不再接收到任意从机节点对第二常规指令的应答时,则向每个从机节点重新发送预设次数的第二常规指令;
27、从机节点接收第二常规指令,响应于第二常规指令,判断自身的cpuid操作码与第二常规指令中的cpuid操作码是否相同;
28、若相同,则以第二目标从机节点的身份响应第二常规指令,并将自身的通信地址编号修改为第二常规指令中的通信地址编号。
29、在一种可能的实现方式中,从机节点接收主机节点发送的第一常规指令,响应于第一常规指令,检测自身的通信地址编号是否为第一预设值,若是,则返回自身的cpuid操作码包括:从机节点接收第一常规指令,响应于第一常规指令,检测自身的通信地址编号是否为所述第一预设值,若是,则激活应答倒计时,并在所述应答倒计时结束后返回自身的cpuid操作码。
30、在一种可能的实现方式中,激活应答倒计时包括:从机节点生成随机数;从机节点将随机数与预设的单位时间进行乘积运算,激活应答倒计时,其中,应答倒计时的延迟时长为所述乘积运算的结果。
31、在一种可能的实现方式中,通信系统中还包括总线,激活应答倒计时之后,还包括:从机节点检测总线,若在总线上检测到任意数据,则在应答倒计时结束后停止返回自身的cpuid操作码。
32、第四方面,本技术提供一种地址分配装置,包括:
33、第一地址设置模块,用于主机节点启动自动分配功能后,确定从机节点的数目,并根据从机节点的数目设定通信地址编号;
34、广播指令模块,用于主机节点向每个从机节点发送广播指令;其中,每个从机节点接收广播指令,响应于广播指令,将自身的通信地址编号修改为第一预设值;
35、广播地址接受模块,用于用于每个从机节点接收所述广播指令,响应于所述广播指令,将自身的通信地址编号修改为第一预设值;
36、第一指令发送模块,用于主机节点检测通信地址编号是否大于0,若大于0,则向每个从机节点发送第一常规指令;其中,第一常规指令的内容为读取第一目标从机节点的cpuid操作码,第一目标从机节点的通信地址编号为第一预设值;
37、指令返回模块,用于每个从机节点接收第一常规指令,响应于第一常规指令,检测自身的通信地址编号是否为第一预设值,若是,则返回自身的cpuid操作码;
38、第一指令等待模块,用于主机节点等待任意从机节点对第一常规指令的应答;
39、第一指令重发模块,用于若无应答,主机节点重新发送预设次数的第一常规指令;
40、第一指令接收模块,用于主机节点接收任意从机节点回复的cpuid操作码;
41、第二指令发送模块,用于主机节点向每个从机节点发送第二常规指令;其中,第二常规指令的内容为对第二目标从机节点发送cpuid操作码和主机节点的通信地址编号,第二目标从机节点的通信地址编号为第二预设值;
42、第二指令等待模块,用于主机节点等待任意从机节点对第二常规指令的应答,当每接收到一个从机节点对第二常规指令的应答时,则将自身的通信地址编号减1;
43、第二指令重发模块,用于当主机节点不再接收到任意从机节点对第二常规指令的应答时,则向每个从机节点重新发送预设次数的第二常规指令;
44、第二指令接收模块,用于每个从机节点接收第二常规指令,响应于第二常规指令,判断自身的cpuid操作码与第二常规指令中的cpuid操作码是否相同;
45、第二地址设置模块,用于若相同,从机节点则以第二目标从机节点的身份响应第二常规指令,并将自身的通信地址编号修改为第二常规指令中的通信地址编号。
46、第五方面,本技术提供了一种地址分配设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述地址分配设备执行上述的地址分配方法的各个步骤。
47、第六方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的地址分配方法的各个步骤。
48、基于本技术提供的方法,主机节点发送广播地址设置指令,从机结点响应指令将自身通信地址设置为预设值,主机节点向每个从机节点发送第一常规指令,从机节点响应指令延迟随机数时间返回自身的cpuid操作码,若主机节点未接收到cpuid操作码,则重复预置次数发送第一常规指令,主机节点接收cpuid操作码并向从机发送第二常规指令,若主机节点未接收到从机节点对于第二常规指令的响应,则重复预置次数发送第二常规指令,从机节点接收指令修改自身的通信地址编号,通过在地址分配过程中添加重发机制,从而降低主机在与从机通信过程中指令传输失败的概率,进而增强从机地址分配的可靠性。