回复:同一个端口不同的协议怎么完成通讯

迷失中原

  • 帖子

    466
  • 精华

    5
  • 被关注

    47

论坛等级:侠圣

注册时间:2013-01-18

钻石 钻石 如何晋级?

发布于 2013-09-14 18:38:01

10楼

quote:以下是引用zzp123在2013-09-14 05:59:26的发言:
我现在的程序运行一段时间就死掉,不是道哪里的问题啊,全部自由口通讯,变频器调用一个中断,仪表调用另一个中断,连个独立的初始化,运行10分钟左右数据就不动了


你牛,能整死机。
你变频一个中断,仪表一个中断什么意思?
一般发送、接收各一个中断就可以了,至于不同的仪表通讯,可以用个计数器,不同的数值可以进行不同区域的数据发送和接收。
一般思路是这样的:
1、初始化通讯数据,包括自由口参数、中断初始化;可以用50ms定时中断连接XMT。发送完数据可以立即接收,但是接收完数据后,一般要有一个缓冲时间后,再发送数据。
2、初始化调用定时中断,启动XMT发送数据,假设用VB0计数;
3、发送完成中断中,分离定时中断;启动RCV接收;同时置位完成 标志位,用以计时。若计时超过1000MS,认为接收超时,此时分离接收中断,并复位数据发送完成标志位,同时启动定时中断。
4、接收完成中断中,启动定时中断;并复位数据发送完成标志位。启动下一次数据发送。
5、关于VB0计数,主要用来区分不同的仪表发送和接收区,且发送区已经可以通过数据快写好报文了。比如VB0=1,XMT的发送地址是VB200,接收地址是VB300;VB0=1,则发送区和接收区分别是VB210和VB310;以此累推……假设十个仪表,需要发送十个数据,则VB0=10的时候,地址对应VB290和VB390。此时注意的是,VB0=10后,在程序再一次发送数据的时候,要先将VB0恢复为0,重新下一轮计数。

说的有点麻烦,不过思路看懂了的话,应该还是很好用的。我已经用了很多程序了,包括CPU224与仪表、变频器和PLC的通讯,都正常。
老手一看就懂,新手可以仔细看下,具体步骤就不说了。思路,才是编程的灵魂!
生命不息,奋斗不止!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。