go语言rs485程序 go语言modbus
如何用RS485串口程序向多个设备读写数据
您是想烧写程序,还是想让不同设备间互相通讯首先设置某一个设备为主,然后对其他从机设备轮询的方式发送数据,也可以广播。也可以用二总线,有现成的绝对主站EV620/PB620和从站PB331,一个主站可以带256个从站,通讯距离3000米,任意拓扑,无极性接线
创新互联于2013年成立,先为宁国等服务建站,宁国等地企业,进行企业商务咨询服务。为宁国企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
项目
优势对比通讯距离(m)12003000内部优化的输出控制能力,使芯片具有更远的通讯距离通讯电平差分电压下行电压
上行电流环与M-BUS一样保证了通讯可靠性总线最高电压5V48V允许接入更高的线路电压,有利于更长线路的传输接线方法四线(含电源)二线(可供电)与M-BUS一样具备无极性二线通讯功能,施工接线方便是否具有极性极性无极性与M-BUS一样具备无极性供电讯功能,施工接线方便布线方式串联任意分支与M-BUS一样具备任意分支功能,非常有利于现场的施工布线,优势非常明显线缆要求屏蔽双绞线任何线缆与M-BUS一样具备无极性双绞线布线,与485相比节约大量的线材费用,同样在布线中接线方便,无错接可能节点供电能力 否能,功率大
单点1000mAM-BUS与PowerBus同样具备结 点供电能力,但PowerBus可以提供更大的驱动能力,这对从站电路的功耗设计提供的更大的选择空间,较大的供电能力也可为从站提供更多功能芯片静态电流损耗2.4mA0.55mA这是长距离接线时非常重要的指标,在总线大量挂接终端器时,芯片静态电流越低,就可在总线上挂接更多的终端设备,并可保证总线末端压降更小负载能力128512PowerBus具备可驱动更多结 点的能力主站集中控制器无单模块解决
无需外围电路由于PowerBus设计了专用的主站控制模块,使原本需要大量模数电路搭建的主站电路设计单模块解决,并集成电源管理
在很多的设计案例中,主站的设计成为系统可靠性的重要因素,PowerBus很好地解决了这一难题设计复杂度中易485需要设计复杂的隔离接口,且隔离成本昂贵。M-BUS主机极其复杂,而且昂贵。而PowerBus主机单模块解决,集成供电管理,集成近端短路保护。无外围器件。电源接入即用,通讯透明UART接口。
rs485的通信程序
RS485通讯程序的编程和RS232类似,对于你采用的是半双工通讯,那么就是接收时不能发送,
按照你的图纸,你发送的U4的2,3管脚接在什么地方了?这个脚是控制接收还是发送的管脚。
在这里你要规定通讯协议,RS485只是一个物理层协议。通讯程序和RS232通讯程序基本相同,只是要对U4的2,3连接的口进行置高为发送,低为接收。
关于RS485与单片机通讯的程序,数据返回不正常
如果是发送接收同时进行,你就要在把ES位的控制要加上看看
else
{
TI = 0;
if(UART1_Send_indexUART1_send_lenth)
{
ES=0;
SBUF=send_code[UART1_Send_index];
ES=1;
UART1_Send_index++;
}
追问:
试过了不可以啊
还有就是
delay_ms(10);
SBUF=send_code[UART1_Send_index];
UART1_Send_index++;
}
这一段,UART1_Send_index这个值不能从1一直加到8,加1之后程序运行到uart1_sent_over=0;
这个置零,UART1_Send_index这个回回到缺省值8,然后再回到0开始加啊
追答:
因为串口是SBUF一次只能送一个字节,发送一个写成这样看看
void SendBytes_UART_one(unsigned char dataNum)
{
UART1_send_lenth = dataNum;
UART1_Send_index = 0;
E485_Sent_E =1;
uart1_sending =1;
ES=0;
TI=0;
SBUF=dataNum;
while (!TI );
TI= 0 ;
ES=1 ;}
发送的写成
else
{
if(UART1_Send_indexUART1_send_lenth)
{
SBUF=send_code[UART1_Send_index];
UART1_Send_index++;
}
}
追问:
改过了,结果变成08狂发了……
追答:
这里再改下看看
void SendBytes_UART_one(unsigned char ch)
{
E485_Sent_E =1;
uart1_sending =1;
ES=0;
TI=0;
SBUF=ch;
while (!TI );
TI= 0 ;
ES=1 ;}
else
{
for (UART1_Send_index=0 ;UART1_Send_index8;UART1_Send_index++)
{
SendBytes_UART_one(send_code[UART1_Send_index]);
delay_ms(100);
}
}
RS232的modbus程序和RS485的modbus程序有什么区别?
协议分为硬件协议和软件协议。而通讯协议属于软件协议,它包含报头包围的格式,MODBUS是应用层的通讯协议,主要用于传送和接收文件包的格式。而RS232,RS485是物理层的串行接口,它可以支持几十种通讯协议,MODBUS只是其中的一种。MODBUS可分为 MODBUS RTU/ACSI, MODBUS +(也叫modbus PLUS)和modbus tcp/ip等。前两种是在串行链路上使用的通讯协议(串口通讯),后一种是在以太网口基于TCP/IP协议的MODBUS通讯协议。\x0d\x0a\x0d\x0a上面有朋友举车的例子,还拿这个例子来说吧,一个人从香港去澳门,人就是文件,香港是主机,澳门是从机。从香港去澳门可以走水路或航空,水路可以是RS232,RS485(二者之间RS485速度更快些没有太大的区别),航空可以是以太网。交通工具船和飞机可以分别看成应用层的MODBUSRTU/MODBUS PLUS和MODBUSTCP/IP.而在这里当然船也可以是轮船或汽艇,可以是RS485支持的其他通讯协议\x0d\x0a \x0d\x0ars232和rs485只负责吧路修好,连同后modbus就像车和船等交通工具,路修好了如果有码头就可以走船,如果有车站就可以走汽车,(一个是路一个是更高一层的交通工具)
当前名称:go语言rs485程序 go语言modbus
文章转载:http://scyanting.com/article/ddioegs.html