gpt4 book ai didi

c - 带 CC430F6137 的 ModBUS RTU

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:52 24 4
gpt4 key购买 nike

我写了一个代码,通过 ModBUS RTU 与 9600 波特率的主设备进行通信。我下载了一个模拟程序,它是 ModBUS Slave。我可以通过这种方式与PC通信。我可以用我的微 Controller 读取输入寄存器。我下载了另一个程序 ModBUS Poll 来读取 Krohne IFC050 输入寄存器。我得到了 Krohne IFC050 的寄存器值。但是,我需要使用 CC430F6137 从 Krohne IFC050 流量计获取输入寄存器值。我曾尝试使用相同的代码来读取 Krohne IFC050 的输入寄存器,但我做不到。我使用RS485接口(interface)进行通信。很多次我都换过RS485的端子。但是,没有回应。我无法使用微 Controller 从 Krohne 读取任何信息。

Krohne 奴隶 ID =1。该代码只是试图传达它不专业。在这里,我尝试获取设备信息。这是我的代码:

modbusMsg[0] = 0x01; modbusMsg[1] = 0x2B; modbusMsg[2] = 0x0E; modbusMsg[3] = 0x02; modbusMsg[4] = 0x00;

crc =0xFFFF;

CRC16(modbusMsg[0], &crc);
CRC16(modbusMsg[1], &crc);
CRC16(modbusMsg[2], &crc);
CRC16(modbusMsg[3], &crc);
CRC16(modbusMsg[4], &crc);

modbusMsg[5] =crc;
modbusMsg[6] =crc >>8;

RS485_EN_WRITE;
RS485_EN_READ;

writeCircBuf(&bufOUT, modbusMsg[0]);
if(!(UCA0IE & UCTXIE))
UCA0IE |= UCTXIE;
writeCircBuf(&bufOUT, modbusMsg[1]);
if(!(UCA0IE & UCTXIE))
UCA0IE |= UCTXIE;
writeCircBuf(&bufOUT, modbusMsg[2]);
if(!(UCA0IE & UCTXIE))
UCA0IE |= UCTXIE;
writeCircBuf(&bufOUT, modbusMsg[3]);
if(!(UCA0IE & UCTXIE))
UCA0IE |= UCTXIE;
writeCircBuf(&bufOUT, modbusMsg[4]);
if(!(UCA0IE & UCTXIE))
UCA0IE |= UCTXIE;
writeCircBuf(&bufOUT, modbusMsg[5]);
if(!(UCA0IE & UCTXIE))
UCA0IE |= UCTXIE;
writeCircBuf(&bufOUT, modbusMsg[6]);
if(!(UCA0IE & UCTXIE))
UCA0IE |= UCTXIE;

最佳答案

我已经解决了这个问题。这是多么简单的事情。如果有人遇到像我这样的问题,解决方案是检查您的 RS485 转换器启用引脚。当我更改 Data Enable 和 Read Enable 状态时,问题就解决了。

感谢您的评论,感谢所有的观众。

关于c - 带 CC430F6137 的 ModBUS RTU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com