您现在所在的是:

PLC论坛

回帖:6个,阅读:12853 [上一页] [1] [下一页]
-1670
工控帮
文章数:38
年度积分:-1868
历史总积分:-1670
注册时间:2018/11/6
发站内信
发表于:2018/11/21 15:00:31
#0楼
很多朋友经常被变频器如何跟PLC通信所困扰,即使勉强与一种品牌通信
上,换一个品牌又不知如何去通信。为此我特意整理此文,希望对大家有帮助。
附件 01.jpg
PLC与变频器之间最常用的通信协议为Modbus RTU,最常用的通信接口RS485接口,想要熟练的进行通信,首先要对Modbus RTU协议和RS485接口具有充分的了解。
Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如RS485)和其它设备之间可以通信。
ModBus协议有2种传输模式,ASCII模式和RTU模式,在同一个通信网络中必须使用相同的传输模式,除此之外还必须具有相同的波特率、数据位、校验位、停止位等参数。

附件 02.jpg


波特率:每秒钟传输的bit位数量,表示传输速度快慢单位为bps或bit/s。波特率越大传输速度越快,抗干扰能力越差,距离也就越近。
数据位:传输数据格式为起始位+数据位+奇偶校验位+停止位,通常数据位位7或8位。
校验位:奇偶校验位是一种错误检测码,可设置为奇校验(Odd)、偶校验(Even)和无校验(None)。如果传输过程中包括校验位在内的奇数个数据位发生改变,那么奇偶校验位将出错表示传输过程有错误发生。
停止位:通常数据帧最后有一个或两个(无校验位)停止位,用于表征一帧数据结束。
Modbus协议是一种单主多从协议,同一网络中只允许有一个主站,其余都只能作为从站。只有主站才拥有主动话语权,从站只能被动的接收数据或对主站的请求做出应答。
两线制RS485接口:工作于半双工,所以编写通信程序时要轮番进行通信,即读和写操作要错开每次只能执行一条操作。数据信号采用差分传输,使用一对双绞线,一根为正,一根为负。
下面就以西门子S7-200 SMART与英威腾变频器通信为例讲解一下通信的方法。
我们通过通信控制变频器的启停和频率,再将转速和输出电压读取出来。
附件 分析.jpg
接线常采用如图1-1所示的链式连接法,在远端加上120Ω的终端电阻。
附件 03.jpg
图1-1

接下来就是编写通信程序:
1.首先应对端口进行初始化,如图1-2
附件 04.jpg

图1-2

附件 编写.jpg

附件 05.jpg
图1-3
附件 06.jpg

图1-4

3.编写修改频率的程序。同样的方法换算出控制频率的通信地址为16#BC42,程序如图1-5所示。
附件 07.jpg
图1-5

4.编写读取输出电压的程序。
输出电压和运用转速的通信地址如图1-6所示:
附件 08.jpg
图1-6

附件 00.jpg

附件 09.jpg
图1-7
5.编写读取运行转速程序,同理得出运行转速地址为16#64A86,程序如图1-8所示。

附件 10.jpg
图1-8
注意:由于RS485接口是工作于半双工模式,所以每步操作程序需要轮流执行(每次只执行一条操作),编写程序过程中用上一步的Done作为下一步的First条件。跟其它品牌的变频器或仪表通信方法类似,只需要查看通信手册找到对应的通信地址即可。
22931
gk_0 版主
文章数:7735
年度积分:712
历史总积分:22931
注册时间:2013/9/9
发站内信
2018论坛贡献奖
2017论坛贡献奖
2017国庆活动(二)
2016论坛贡献奖
2016国庆活动(三)
英威腾变频器(一)
S7-200 SMART(一)
寻找英威腾(三)
英威腾PLC体验(一)
2015春节活动
2013辞旧迎新
2013辞旧迎新
2013国庆活动
发表于:2018/11/21 20:00:20
#1楼
为什么算出10进制后,还要多此一举地再转换成16进制呢?
直接写入48193不是更方便?
22370
xuzhaokun
文章数:8777
年度积分:994
历史总积分:22370
注册时间:2013/5/6
发站内信
发表于:2018/11/21 23:50:07
#2楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
27959
guanyumou 版主
文章数:10552
年度积分:1142
历史总积分:27959
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2018/11/22 15:17:42
#3楼
以下是引用gk_02018/11/21 20:00:20的发言:
为什么算出10进制后,还要多此一举地再转换成16进制呢?
直接写入48193不是更方便?
我也觉得直接填48193比较好!清楚的表明48193是寄存器编号,对应的寄存器实际地址是8192,换算为16进制即为2000
楼主这样其实并没有清楚的说明寄存器编号和寄存器实际地址的关系!
20178
高雅的雅
文章数:15776
年度积分:-210
历史总积分:20178
注册时间:2015/5/12
发站内信
2018论坛解答高手
发表于:2018/11/22 15:56:14
#4楼
在通讯和模块设置参数方面,十六进制比十进制方便,基本可以直观看到字的bit
-1670
工控帮
文章数:38
年度积分:-1868
历史总积分:-1670
注册时间:2018/11/6
发站内信
发表于:2018/11/23 13:40:32
#5楼
回复 #1楼 gk_0
试过,但是有些设备不转是通讯不上的表情
65
copy4445
文章数:41
年度积分:65
历史总积分:65
注册时间:2019/1/12
发站内信
发表于:2019/1/12 23:00:04
#6楼
学习了
此帖发自论坛手机版

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

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

78.0005