请教pc机485问题? 点击:1986 | 回复:2



老吴1

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 1回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2001年7月29日
发表于:2001-07-31 10:12:00
楼主
各位大侠,有一pc机和单片机的485通讯问题要请教: pc机通过485卡和几个单片机系统通讯,单片机系统给出的通讯协议为11位数据格式:1位停止位+8位数据+1位标志位+1位停止。小弟搞过几天工控,记得在51系列的单片机中用一个寄存器的一位可以产生这个标志位用于标记发送的是地址还是数据,可在pc机上如何产生那?485卡是moxa的产品,我还没有仔细研究它的驱动,可我想应该和串口一样的用法,请问如何发送这种11位的数据格式?我的应用平台为linux,开发语言是标准C。谢谢!最好发到我的信箱:tupelo@sina.com



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2001-07-30 23:05:00
1楼
介绍一个办法你可以先实验一下。 首先将PC机的通讯数据格式设置为以下格式: 1停止位+8数据位+1校验位+1起始位。 然后根据单片机方面区分地址和数据的协议来设置PC机发送的地址幀的内容,使其在发送的地址站号和单片机子站地址相同的情况下校验位的内容恰好符合单片机的地址标志要求。 例如单片机一方已经规定标志位为“1”表示地址,标志位为“0”表示数据。PC机一方选择偶校验,在发送子站地址07H(00000111B)时校验位标志必定为“1”。正好符合单片机一方要求。 要注意: [1]单片机一方确认地址后要及时改变串行口控制寄存器SCON的多机控制位设置以便及时接收后面的数据幀。 [2]双方要合理的选择子站的地址。简单的1、2、3、4……排列恐怕是不行的。

老吴1

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 1回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2001年7月29日
发表于:2001-07-31 10:12:00
2楼
谢谢老灰猫回复。 回信对我十分有用,但还是不能很好的解决问题。可能上次我说得不是很清楚,现详述如下: 单片机系统是其他厂商开发的一个云台解码器,用于控制摄像云台的动作,我无法对其程序进行修改。说明书上给出的pc机与云台解码器的通信协议如下: 1 PC机向解码器发送信息,解码器仅接收信息; 2 发送信息顺序:地址码,命令码 3 通信格式:1bit(起始位)+8bit(数据位)+1bit(标志位)+1bit(停止位),发送地址位时,标志位为1,发送地址位时,标志位为0; 您提出的用奇偶校验位代替标志位的方法我也考虑到了,除了麻烦外,主要问题是要在地址码发送完毕后改变串口的发送方式(奇偶校验方式),以配合命令码的发送,因为我没法修改解码器的程序,而解码器能接收的命令格式是已经设计好了的。不知这样(在两个发送字节中改变发送方式)会不会引起发送正确与否得问题。另外,还有一个报警解码器,它是要向pc机发送状态信息的,用的也是这种格式,我就不知道如何接收了!

热门招聘
相关主题

官方公众号

智造工程师