西门子储存卡代理6ES7954-8LL03-0AA0西门子储存卡代理6ES7954-8LL03-0AA0
交换机分销商,西门子交换机代理商,西门子交换机一级代理商,西门子交换机代理商,西门子S7-1200系列代理商,西门子S7-1200CPU代理商,西门子S7-1200CPU代理商,西门子S7-1500CPU代理商,西门子S7-1500CPU代理商,西门子模块代理商,西门子模块一级代理商,西门子模块总代理商,西门子模块分销商,西门子模块代理商
6ES7511-1AK02-0AB0 | CPU 1511-1 PN,150 KB 程序,1 MB 数据;60 ns;集成 2x PN 接口 |
6ES7512-1CK01-0AB0 | CPU 1512C-1 PN, 250 KB程序,1 MB数据;48 ns;集成2x PN接口;集成 32 DI/32 DO, 5 AI/2 AO, 6 HSC@100kHz |
6ES7511-1CK01-0AB0 | CPU 1511C-1 PN, 175 KB程序,1 MB数据;60 ns;集成2x PN接口;集成 16 DI/16 DO, 5 AI/2 AO, 6 HSC@100kHz |
MBUS_MSG指令在子程序中调用出现问题,不能正常工作
佳答案
请lz提供错误代码。
首先看done是否为1,之后查看错误代码error 。
多两种错误,代码3为从占没反应,掉电、响应延时过长等。代码6为你同时运行了多条modbus读写指令,每条读写指令应该以上条msg指令的done作为触发。
S7-300块传送
下诉程序中。初始的读写指针如果是要一个变量MW0.MW2的话应该怎么写??? 程序我试验了下,把P#0.0改成MW0的话,如果MW0为0,程序正常,如果MW0不为0的话程序运行就出错了。。
L P#0.0 //初始读指针
LAR1
L P#0.0 //初始写指针
LAR2
L 100 // 100个字的循环计数为初值
M001: T MB 10 //计数值 送入MB 10
OPN DB 0 //打开DB0
L DBW [AR1,P#0.0] //按读指针指示的地址读数据
OPN DB 1 //打开DB1
T DBW [AR2,P#0.0] //按写指针指示的地址写数据
+AR1 P#2.0 //读指针指向下一数据地址
+AR2 P#2.0 //写指针指向下一数据地址
L MB 10 //取循环计数值
LOOP M001 //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。
佳答案
那是因为你MW0里保存的地址的格式不对。在用AR1寻址时,低3位是用来表示位地址的。所以你要改成如下(MW0的值可以为1,2,3...n)
L MW0
SLD 3
LAR1
L MW2
SLD 3
LAR2
或者
MW0 = P#0.0, P#1.0....P#n.0
L MW0
LAR1
L MW2
LAR2
- 扬州PLC模块6GK7543-1AX00-0XE0 2023-11-04
- 模块总代理6ES7132-6BF01-0AA0 2023-11-04
- 西门子模块代理6ES7511-1FL03-0AB0 2023-11-04
- 甘肃西门子模块一级代理商 2023-11-04
- 陕西西门子CPU代理商 2023-11-04
- 成都西门子S7-1200代理商 2023-11-04
- 陕西西门子PLC模块总代理 2023-11-04
- 拉萨PLC模块总代理 2023-11-04
- 四川西门子S7-1200代理商 2023-11-04
- 拉萨西门子1200CPU代理商 2023-11-04