信捷XC1-16R-E用485口连接两个温控表,通讯只能读到第一台,第二台无响应
信捷XC1-16R-E扩展了一个BD板(型号为XC-485-BD),用RS485总线连接两台宇电温控表(型号AI-518),表1的通讯地址设为01,表2设为02。程序里用ADPRW指令轮询读取当前温度,先读01号表,再读02号表。现在问题是:能正常读到01号表的温度数据,但轮到读02号表时,ADPRW指令的完成标志位一直不置ON,程序卡住。已核对表2的通讯参数(波特率9600,8,1,无校验)和表1一致,地址也设成02了,总线两端也加了120Ω终端电阻,线缆用双绞线长度约15米。
✓ 最佳回答
1. 先把两台温控表对调物理位置,即把原来接表2的线接到表1的位置,看是否能读到,若只能读到物理上第一台(近PLC端)的表,则说明问题不在地址而在RS485收发器带载能力或线序上。2. 信捷XC-485-BD板上的A/B端子定义要确认,很多情况下A对应D+,B对应D-,但宇电温控表端子标识是A+和B-,请用万用表测一下确保同极性相连,反接会导致第二台设备因极性错误而收发异常。3. 检查程序里ADPRW指令是否在读取01号表完成后没有清除其完成标志或错误标志就直接发起下一轮,导致指令冲突。正确的做法是用M8123(通讯错误标志)、M8122(发送允许)和完成标志的复位逻辑,确保在发起对02号表的读写前,先复位上一轮的完成标志和错误标志。4. 在编程软件里查看特殊寄存器D8120,确认通讯格式设置(如H0087对应9600,8,1,无校验),并确认D8120设置了RS485模式(bit15)。5. 若以上均正常,则可能温控表2的收发芯片已损坏,用一台PC通过USB转485直接连接表2,用串口调试工具发读指令验证表2是否能响应。