看起来你在尝试和你的西门子PLC闲聊的时候地址输错了。就好像你要发短信给朋友,但是不小心输错了号码一样,短信当然就发不出去了。
在你的代码中,"DB10.6.0"
这个看上去有点怪怪的,因为一般来说,地址应该是像 "DB1.DBW10"
这样的格式。DB10.6.0
这种格式通常是用来读写PLC中的某个特定的位,而不是整个字或者字节。而去掉 .6.0
只剩下 "DB10"
的话,就像告诉快递员只有小区名没有门牌号一样,他肯定不知道该送到哪儿去。
如果你想写个整数到DB10的话,你得告诉PLC你想写到哪个具体的位置(字节)。假如我们要写到从第6个字节开始的位置,应该是 "DB10.DBW6"
(如果是写字,也就是16位的整数)。
所以,修改一下地址,再试试看。如果你的PLC IP是 192.168.1.1
,那么代码应该像这样:
// 初始化PLC连接,别忘了改成你PLC的实际IP地址哦!
S7.Net.Plc plc = new S7.Net.Plc(S7.Net.CpuType.S71200, "192.168.1.1", 0, 1);
plc.OpenAsync().Wait(100); // 等待连接打开
// 把数字3写到DB10的第6个字节起的位置
plc.Write("DB10.DBW6", 3);
这就像是告诉快递员,你住在第1栋的601室。他就能准确地把包裹送到你手上了。
不过记得,要确定PLC上的DB10存在,并且你有权限向那写数据。如果你的PLC设置了保护,可能需要解锁或者调整一些设置才能写入数据。