我正在研究C#和西门子PLC(S7-1200)之间的连接。我已经创建了一个数据块(a.k.a。数据库),我需要阅读并最终编写。与PLC的连接有效,但我无法从其数据块中读取任何内容。它总是给我以下错误:
不支持错误33028上下文。 Step7说:功能未实现或电报错误。
数据块的编号是311.我从第一个字节开始,我只放弃了1作为长度。
我也禁用了优化块访问,启用无法解决此问题。
if (0 == lndConnection.connectPLC())
{
Byte[] bytes = new Byte[1];
res = lndConnection.readBytes(libnodave.daveDB ,311,0, 1, bytes);
if (res == 0)
MessageBox.Show(lndConnection.getS32().ToString());
else
{
mInt = 0;
MessageBox.Show("error " + res + " " + libnodave.daveStrerror(res));
}
}
我希望有人可以帮我解决这个问题。
答案 0 :(得分:2)
Roatin Mart的答案: “S7-1200默认启用间接访问。检查是否禁用了优化块访问。”
答案 1 :(得分:2)
S7-1500实现了libnodave不支持的扩展通信协议。 虽然可以使用“旧”协议连接和读/写全局数据块块。
我已成功与1200和1500通信,但需要一些额外的设置plc-side。
S7-1200
S7-1500
屏幕截图的详细信息可在以下网址找到: http://snap7.sourceforge.net/snap7_client.html
希望它有所帮助! 干杯, 彼得