技术论坛

 回复:USS通讯的问题

返回主题列表
作者 主题
伊默
至圣

经验值:19231
发帖数:4256
精华帖:118
楼主    2006-04-25 13:15:32
主题:USS通讯的问题 精华帖 
S7-226CN + 两台MM440用自由口协议通讯,PLC里的程序是我自己写的(没有用TOOLBOX里USS库文件). 3PKW+2PZD .通讯基本正常,唯一的问题就是: 在变频上电后接收第一次通讯指令时并不能启动. 比如在变频器上电后,第一次通讯时,我发送控制字16#047F,主设定值5000,意思是让变频器以50.00HZ正转运行,结果变频器BOP板上显示50.00HZ闪烁(意思是主设定值生效了),而变频器并不启动. 在经过第一次通讯后,就全部正常了,比如再发送同样的指令,则变频器以50.00HZ运行.... 问过一些人,有说这是MM440的问题,不知道到底能不能确定? 不知道谁有这方面的经验,麻烦给解释一下,谢谢!
I can do it
Zane
至圣

经验值:85161
发帖数:21047
精华帖:399
    2006-04-26 00:13:45
精华帖  主题:回复:USS通讯的问题
是这样的,第一次上电或故障复位后,必须要有047E到047F的变化,MM4才可以启动,为了解决这个问题,你不能采用事件触发通讯的机制,而是应该采用轮循通讯的机制,做一个报文映像区,把OFF1、OFF2、OFF3等控制字各位映像到报文缓冲区,反之状态字也是如此。
Zane 注册自动化系统工程师 Always save before download
伊默
至圣

经验值:19231
发帖数:4256
精华帖:118
    2006-05-01 19:10:13
精华帖  主题:回复:USS通讯的问题
我不知道你们说的轮询机制具体是什么样的,呵,但是我用的方法应该是确何安全的:
1、通讯过程由四个中断控制: 发送完成中断、发送超时中断、接收完成中断、接收超时中断。
2、在发送的时候使能发送完成中断和发送超时中断, 若发送超时则再一次发送,连续三次发送超时,则报警,同时切断变频器输入侧电源。
3、在发送完成中断子程序内(说明发送顺利完成),禁止发送超时中断, 同时开始接收指令,使能接收完成中断、使能接收超时中断。
4、若接收超时,则返回到主程序中再一次发送原来的控制字,并接收( 意思是把该通讯指令重来一次,同理,连续三次接收超时,则报警,同时切断变频器输入侧电源。
5、若发送顺利完成,且接收也顺利完成,则在主程序中判断:启始字符是否为16#02?变频器站地址是否相一致?接收到的字符全数是否刚好是一帧的字符数?BCC校验是否正确? 以上任何一项不一致,则也要和第4项一样重新发送,接收一次; 若连续三次以上,则报警,同时切断变频器输入侧电源。

主程序当中做了一个表,只有触发了相应的动作,才会写相应的指令到这个表中,当这个表非空,才会执行通讯程序,否则不执行,这样则节省了主程序的扫描时间。 比如我规定16#02为正转运行,I0.0为外部触发正转命令。 则在主程序中写入
LD I0.0
EU
ATT 16#0302 VW200 //16#03表示变频器站地址为3,16#02表示需要的操作为正转运行。
然后程序在每个扫描周期都是检测VW202=0 ? 若VW202<>0,则说明有通讯指令需要执行,这时用LIFO/FIFO读出VW200表里面的指令,再根据自己规定的动作类型写PZD区,之后进行上面的通讯操作。
I can do it
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。