您现在所在的是:

西门子SIEMENS

回帖:1个,阅读:2999 [上一页] [1] [下一页]
650
hao2120
文章数:9
年度积分:50
历史总积分:650
注册时间:2012/3/31
发站内信
发表于:2012/7/11 16:49:57
#0楼
打算用s7 200plc 通过自由口与三菱A700变频器通讯
在网上看了些资料找到了一篇于三菱F700通讯的其中有程序:
通信采用以下步骤:
       向变频器发送要求数据(变频器不会自动发送数据),经变频器等待时间后,从变频器向plc发送返回数据,等待变频器处理事件后,进行再处理。plc与变频器通信以ascii码(16进制)进行。plc对变频器进行运行状态监控、运行频率设置、启动、停止等操作。
下面用实例来介绍自由口模式下的通信,plc向变频器发送20hz频率
主程序:
       网络1:
       ld  sm0.1 //初始化
       movb 16#09, smb130  //端口1自由口模式,波特率9600,每个字符8位,无校验
       movb 16#b0, smb187 //写接收指令控制字,允许rcv,检测信息结束字符、空闲线起始条件
       movb 16#0d, smb189 //设置信息结束字符为16#0d(回车符)
       movw +5, smw190 //设置空闲线检测时间间隔为5ms
       movb 100, smb194 //设置最大字符数为100
       网络2:
       ld     sm0.0
       movb 16#0d, vb100 //发送数据字符数为13
       movb 16#05, vb101 //通讯要求
       movb 16#30, vb102 //变频器站号01
       movb 16#31, vb103
       movb 16#44, vb104 //频率写入命令代码
       movb 16#44, vb105
       movb 16#31, vb106 //等待时间1×10ms
       movb 16#32, vb107 //发送频率20hz
       movb 16#30, vb108
       movb 16#30, vb109
       movb 16#30, vb110
       movb 16#44, vb111 //求和校验码de
       movb 16#45, vb112
       movb 16#0d, vb113 //结束字符
       movb 0, mb10
       网络3:
       ld sm0.0
       atch int_0:int0, 26 //端口1发送完中断,连接到中断0
       atch int_2:int2, 24 //端口1接收完中断,连接到中断2
       eni  //允许中断
       网络4:
       ld sm0.0
       r sm187.7, 1 //禁止接收(避免接收发送冲突)
       rcv vb149, 1
       xmt vb100, 1  //开始发送
       中断程序0:
       网络1:
       ld sm0.0
       movb 5, smb35
       atch int_1:int1, 11 //定时中断到中断1
       中断程序1:
       网络1:
       ld sm0.0
       dtch 11
       s sm187.7, 1 //允许接收
       rcv vb149, 1 //开始接收
       中断程序2:
       网络1:
       ld sm0.0
       incb mb10 //每发送接收完一次mb10加1
       ab= mb10, 3               //当超过3次,退出不再发送
       creti
       网络2:
       ldb= smb186, 16#20 //接收无误条件下
       ab=  vb150, 16#06  //接收数据无错误,退出
       creti
       not  //否则,再发送
       r sm187.7, 1
       rcv vb149, 1
       xmt vb100, 1


想问下从变频器传回的数据有什么用,程序中传回的数据放到了VB149,在中断程序2中为什么每次传送接收完后
mb10要加1当超过3次,退出不再发送  还有 中断程序2 网络2里 ab=  vb150, 16#06  //接收数据无错误,退出
他是不是写错了应该是VB149把? #06是不是就是变频器传回来的值,,,,谢谢。
[此贴子已经被作者于2012/7/11 16:55:13编辑过]
5041
sbkkan
文章数:301
年度积分:50
历史总积分:5041
注册时间:2011/8/5
发站内信
发表于:2014/7/10 8:20:38
#1楼
   通讯控制就像两个人打电话,一个发指令一个接受后执行,你在看电视的时候应该可以看到,一个人下命令后接听的人会把命令重复一遍,这是确认过程!MODBUS通讯也是一样,按照协议,从站接受到后要回传相应的报文,给主站确认是否通讯正常。
    第二点问题,在接收缓冲区内的首字节的内容是接受到的字节数,而不是内容,第二个字节才是功能吗16#06。读取多字功能吗16#03,写入一字功能码16#06,写入多字功能吗16#10

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004