VC编程控制,用pc至变频器组件一对一通讯。PC设置了波特率9600,端口(com1);变频器设置了参数P0700=4,
p1000=4,
p2010=6(9600),
p2011=0(从站地址),
p2012=2,
p2013=4.
VC中用MScomm控件编程,''开始"按钮初始化串口,并设定初始频率启动电机,代码如下:
if(m_Comm.GetPortOpen())
m_Comm.SetPortOpen(FALSE);
m_Comm.SetCommPort(1); //选择com1
if( !m_Comm.GetPortOpen())
m_Comm.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port");
m_Comm.SetSettings
("9600,n,8,1"); m_Comm.SetInputMode (1); //1:表示以二进制方式检取数据
m_Comm.SetRThreshold(1);
m_Comm.SetInputLen(0);
m_Comm.GetInput();
CByteArray data;
data.RemoveAll();
data.SetSize(16);
data.SetAt(0,0x02); //起始符
data.SetAt(1,0x0e); //LGE字符长度 14
data.SetAt(2,0x00); // 从站地址 0 或 1
data.SetAt(3,0x00); //PKE 参数识别ID 高字节
data.SetAt(4,0x00); //参数识别ID 低字节
data.SetAt(5,0x00); // IND 索引值
data.SetAt(6,0x00); //
data.SetAt(7,0x00); // PKW1 高
data.SetAt(8,0x00); // 低
data.SetAt(9,0x00); //PKW2 高位
data.SetAt(10,0x00); // 低位
data.SetAt(11,0x04); //PZD1 高位 正向运行设定047F
data.SetAt(12,0x7f); // 低位
data.SetAt(13,0x19); //PZD2 高位
data.SetAt(14,0x99); // 低位
data.SetAt(15,data.GetAt(0)); // BCC 校验位
int i;
for(i=1;i<15;i++) {
data.SetAt(15,data.GetAt(15)^data.GetAt(i));
}
m_Comm.SetOutput(COleVariant(data));
不知哪里的问题,链接变频器后没反应,请高手指点一下。急!
问题补充:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
您提供的网址我会仔细看一下的。
已经发现是控件属性设置的问题,可以实现自发自收。但还没与变频器连接上,不知哪里问题(报文数据格式?报文内容?)?
轮询机制我不懂,也没找到相关的资料。能否提供一段例程?同时我发现你是这方面专家,经常参与我的问题。再次谢谢您的热心帮助。我是学生,最近急于完成这部分的通讯工作,网上提问回复太慢,您能否提供一个便捷的联系方式比如QQ等,万分感谢!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
最佳答案
不能这么编写。
1、USS是轮询机制,要按轮询机制来写。
2、首次发送的控制字内容应该是047E。要等待应答FA31。
参考一下:http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=10&a_id=76842&s_id=&num=51#anch
提问者对于答案的评价:
1,USS轮询机制不是很懂
2,与变频器通讯还要软件控件属性设置,变频器参数设置。还没最终解决问题。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc207324.html