浔之漫智控技术(上海)有限公司总部
主营西门子模块 , PLC模块 , 变频器模块 , 触摸屏模块
西门子储存卡代理6ES7954-8LL03-0AA0

西门子储存卡代理6ES7954-8LL03-0AA0西门子储存卡代理6ES7954-8LL03-0AA0

交换机分销商,西门子交换机代理商,西门子交换机一级代理商,西门子交换机代理商,西门子S7-1200系列代理商,西门子S7-1200CPU代理商,西门子S7-1200CPU代理商,西门子S7-1500CPU代理商,西门子S7-1500CPU代理商,西门子模块代理商,西门子模块一级代理商,西门子模块总代理商,西门子模块分销商,西门子模块代理商

6ES7511-1AK02-0AB0CPU 1511-1 PN,150 KB 程序,1 MB 数据;60 ns;集成 2x PN 接口
6ES7512-1CK01-0AB0CPU 1512C-1 PN,  250 KB程序,1 MB数据;48 ns;集成2x PN接口;集成 32 DI/32 DO, 5 AI/2 AO, 6 HSC@100kHz
6ES7511-1CK01-0AB0CPU 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作为触发。微信截图_20221004093934.png

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


发布时间:2023-11-04
展开全文
优质商家推荐 拨打电话