注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控博客苑 -- 天奇工控 -- 用CP340与丹佛斯软启动器通讯的实例

中国工控网搜索:

陈先生

     学历:大学专科
     职称:工程师
     年龄:53岁
       新闻信息(0/0)
       工作图片(2)
       技术论文(2/2)
       交流论坛(0/0)
       留言信箱(0)
       浏览人次:4147

用CP340与丹佛斯软启动器通讯的实例

发表评论(1)    作者:天奇工控    发布时间:2013年2月27日  

    这是一个PROFIBUS-DP网络下的一个分站,用的是S7-300PLC的CPU313C-2DP,
   
    控制着六台300KW的排海泵,排海泵的电机用丹佛斯软启动器拖动。根据业主方面的要求,现要将四台(还有两台泵没有安装)软启动的运行电流读到PLC,然后上传到主站PLC,最后由中控室的监控计算机机制成表格和曲线。
   
    要读丹佛斯软启动器的电流有多种方法,最经济最省事也最精确的方法就是用通讯方式。
   
    丹佛斯软启动器型号为MCD3000,支持MODBUS的ASCII协议。这样硬件方面只要在PLC上加一个CP340的通讯模块,拉一条屏蔽双绞线接到四台软启动器的RS485通讯端子上,然后为四台软启动器设置不同的通讯地址如4、5、6、7就可以了。剩下的工作就只要编程了。
   
    需要说明的是,在系统中加上CP340模块后,要在电脑上安装CP340的驱动,然后在STEP7里进行硬件组态。具体操作可看CP340手册,里面都有详细的说明和例子。在这里我们只讨论程序的编写。
   
    在这个系统中,PLC就是主站,丹佛斯软启动器就是从站。这里有必要介绍一下通讯过程。
   
    在ASCII协议下,主站和从站之间是采用一问一答的方式通讯,即当主站发送一个从站的地址,比如4#从站地址,4#从站就向主站返回一个值,表示收到信号。这时主站再发送请求命令(比如要读取电流数据),于是从站向主站发送电流数据。从站和从站之间是不能通讯的。打个比方吧,主站就好比是个花心的男人,从站则象是水性杨花的女人。当男人向第一个女人挤眉弄眼时,这个女人便也向他暗送秋波,于是他们开始交往起来。接着男人又去勾引其他女人,只要她们是同一类型的女人,便都会上他的钩。他最多可以勾引128个这样的女人,哈哈,够利害的吧。当然,他也可能会碰到正派的女人或是和他闹分手的时候,那就是通讯出故障了。
   
    再有,主站每次只能和一个从站通讯,不能在同一时刻和多个从站通讯,为了通讯有序进行,我就让主站每隔一秒钟轮流和一个从站通讯。为了方便阅读和理解,我把程序转换成梯形图。
   
    首先,要做一个一秒钟的脉冲,如图,每隔一秒钟M7.0就动作一次。
   
   
   
   
   
    利用M7.0来计数,累计的数放在DB3.DBW122里面。并初始化通讯参数寄存器DB3.DBW120和DB3.DBW150。
   
   
   
    因为只有四个从站,当DB3.DBW122的值大于3时,必需让它返回到0。于是DB3.DBW122的值从0到3的周而复始的变化。
   
   
   
   
   
   
   
   
   
   
   
    以上几步是每计一个数时就驱动一个中继,下面是每个中继闭合时就向相应的从站发送报文。报文格式必须要符合软启动器的通讯格式。MCD3000支持标准的MODBUS ASCII协议。首先,主站向从站发送地址:“EOT nn LRC ENQ” 转换成16进制数就是“04 nn LRC 05”。nn是从站的通讯地址,比如4#从站,那就是04。LRC为校验码,这种校验码算法也很简单,先把所有报文的数字相加,把相加的得数取反码,再求其补码,最后将补码转换成ASCII的16进制数。因为从站数不多,我笨人用笨办法,用笔算出校验码直接填上去。DB3.DBW120表示要发送从DB3.DBW100到DB3.DBW105这6个字节的数。后面的依此类推。
   
    例如发送4#从站地址:04 30 34 39 38 05 ,把这6个字节分别放到DB3.DBW100到DB3.DBW105里。
   
   
   
   
   
   
   
   
   
    当地址报文发出去后,如果线路没有问题和从站地址正确的话,相应的从站响应,就会返回“ACK”, 转换成十六进制数就是06。如果通讯有问题,就会返回“NAK”,转换成十六进制数就是0F。如下图,返回的值就在DB3.DBW150里,我把DB3.DBW150的值挪到DB3.DBW124来,是在调试的时候DB3.DBW150的值变化太快,我根本看不出通讯成功还是不成功,因此也就多些一举了。如果DB3.DBW124等于6,则说明通讯成功,哈哈,美女上钩了,于是得寸进尺开始下一步的请求——读取电流数据。M7.3是发送读取电流的报文的中继,这里延时0.2秒是为了让屏幕上的曲线更平滑。M7.4则是通讯功能块FB3的触发脉冲。
   
   
   
    当M7.3动作时,就开始发送请求读取电流的报文了,共7个字节。
   
   
   
    调用FB2和FB3功能块,功能块的引脚定义在手册上都有说明,在此不啰嗦了。FB3是发送功能块,上面所说的报文就是通过它发送出去。
   
   
   
    FB2是接收功能块,从站返回的数就在以DB3.DBB150为首的几个字节里。字节的长度取决于返回来的数据的长度。
   
   
   
    返回的数据报文为:STX 千位 百位 十位 个位 ETX
   
    第一个字节DB3.DBW150为STX,即02,第二个字节为电流的千位数,因250KW的电机的电流一般不会超过1000A,故略去。真正要在屏幕上显示的数是从DB3.DBW152开始。因读上来的是十六进制形式的ASCII数,如此时电流为562,则读取的数分别为:35 36 32。要通过如下计算后变成十进制的数存入DB3.DBW194里。
   
   
   
    在第一台泵运行运行状态下,每当DB3.DBW122等于0时,M21.0动作一下,第一台电机的实时电流数值经运算后存入到DB3.DBW194里,接着又把这个数移到DB3.DBW52中。每当DB3.DBW122等于1时,M21.1动作一下,第二台电机的实时电流数值经运算后存入到DB3.DBW194里,接着又把这个数移到DB3.DBW54中。
   
   
   
    同样,第三台和第四台电机的实时电流数值最后分别放入DB3.DBW56 和DB3.DBW58中。
   
   
   
    最后,别忘了,当某台泵停止时,要把相应的寄存器清零。好了,开始调试。
   
   
   
   
   
   
    虽然程序写完后理论上没有错,不过,在调试的过程中我还是遇到了很多麻烦,几经修修改改才写成这个样子。然而最大的麻烦是总是有一个或两个从站通讯不上,并且站号还不确定。比如刚开始是和7#从站通讯不上,等我查来查去,硬件软件都鼓捣一阵,7#通上了,4#又断了。再鼓捣一阵,4#、5#通了,6#、7#又断了。搞了好几天,就是没有四个全通上的。这才只有四个站啊,要真连上128站怎么办了得?我都快失去信心了。实在百思不得其解,便检查一下线是怎么接的。一查还真发现了问题,原来接线电工把软启动器这一端是用电缆的屏蔽层接地,而CP340的串口这一端则是用黄绿双色线接地。线路被严重干扰,哪能正常通讯啊,于是叫他们赶紧把所有接地线都改成双色线,一试,OK,全部通上,大功告成。
   
    更多信息请进 http://user.qzone.qq.com/290355167/infocenter#!app=2&via=QZ.HashRefresh&pos=1335585697
 

 评论仅代表评论人个人看法,不表明博客主人及中国工控网同意其观点或其描述 共1条评论  共1页  第1页  

 评论人署名:绿色园林001 评论时间:2015/1/7 10:04:00

我要发表评论 

    好

共1条评论 共1页  第1页  

    发表评论

登陆网站发表评论

用户名:

密码:

注册 | 忘了密码
     相关风采图片:
     相关技术论文:

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳