2个使用STL的问题

用STEP 7-Micro/WIN编程(CPU226)的时候发现两个问题:
 1. 我编写的代码,进行某种操作后代码可能会自动重新改掉。比如:
 LDW< VW100, 0
 MOVW 2, VW102
 MOVW 4, VW104
 NOT
 MOVW 22, VW102
 MOVW 44, VW104

 程序会被自动修改为:
 LDW< VW100, 0
 LPS
 MOVW 2, VW102
 MOVW 4, VW104
 NOT
 MOVW 22, VW102

 LPP
 NOT
 MOVW 44, VW104

 貌似每个NOT后的连续代码都会被自动展开为单条带NOT语句s,逻辑上是一致的。但语句一多,好多堆栈+NOT夹在代码中间,看的眼花。。。

 我的问题是,这个是如何造成的,是Micro/WIN的一个功能吗?我可以在哪边设置转换或者不转换。

 2.某些CALL指令返回的第一条未能执行
 比如:
 LDB= VW100, 1
 MOVW 2, VW102
 CALL SSS
 MOVW SSS_V, AQW0
 CRET

 正常情况下,CALL返回后的MOVW SSS_V, AIW0是会被执行到的,但某些情况下这句话貌似无效果:
 - 某些情况指:我所有代码中就一个地方这么用不行,这个地方的调用顺序是MAIN->SSS->AAA->BBB,正好CALL SSS的返回是从BBB的CRET到AAA的CRET出来。
 - 无效果指:我在模拟器上无效果,我还没有上机直接试

 我研究了半天发现,只要在CALL SSS和MOVWSS_V, AIW0之间插入一句指令,这个AIW0输出就有效了。比如:
 CALL SSS
 NOP 1 
 //或者用MOVW SSS_V, AQW0,
 //再或者用XORW VW999, VW999
 MOVW SSS_V, AQW0
 随便弄一句,模拟器上AQW0就会有输出。

 我的问题是:这是什么原因造成的呢?

 BTW:虽然就一个地方有问题,但我现在每个CALL返回后都只能来一句NOP 1。在没弄清楚这个问题之前,我现在只能这样来确保程序没问题。。。

 暂时就这2个问题,谢谢各位了

问题补充:
说明文字中的两个AIW0应该为AQW0

最佳答案

1、第一个问题,是因为你在STL下写,转成了LAD,再转回STL所致。STL可以写得很干净,但LAD转过来的,就啰嗦了。
 2、第二个问题不存在。如果后call被执行,后面的mov一定执行,没有例外。

提问者对于答案的评价:
应该是这样的

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc348801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午11:51
下一篇 2021年7月4日

相关推荐

  • intouch中写数据到200PLC中经常不成功

    1、Intouch v9.5与224 XP CN采用以太网通讯2、驱动用DASSDirect(DAServer)3、在Intouch建立1个标记名地址…

    SIMATIC S7-200 2020年11月1日
  • 关于S7200smart子程序上升沿一直导通

    我在子程序里用LW0=2的上升沿作为传送条件,可为什么我的上升沿是一直导通的,是什么原因,如何解??? 图片说明:    最佳答案 你这个子程序调用了几次?如果…

    2021年7月5日
  • 组态王的范围是多少?

    在PLC中定义了VB9999,为什么在组态王中的无法显示呢?是不是超出了范围。如果超出了,请问PLC对应的组态王的范围是多少? 是pLC 200的 最佳答案 在…

    SIMATIC S7-200 2021年7月4日
  • CPU224CN可以替代如下型号的CPU吗

    旧型号:6ES7 214-2AD21-0XB0 请问CPU224CN可以替代吗,程序是否通用?谢谢! 最佳答案 CPU22x的版本21和22有什么区别?&nbs…

    SIMATIC S7-200 2021年7月5日
  • tia v13如何将数据写到sql2008中

    本人刚接触这款软件,现在需要将tia v13中的数据写到sql2008数据库中,通过点击按钮实现,请大神赐教 问题补充:我用vb脚本编写的将tia v13的数据…

    2017年5月28日
  • 自由口通讯资讯

    我做了一个如下自由口通讯控制程序,当我点击I0.0启动发送控制数据时,能控制设备且能收到成功的反馈信息,可是当我点击I0.1再次发送关机命令时,设备没反应了(控制字节设置没问题,因…

    2017年11月27日
  • 关于堆栈中排入队列中的元素突然退出如何处理?

    我使用堆栈先入先出的功能对一批设备进行排队处理,先发送请求的先进性处理,后发送请求的后处理,但是工作中不可能没有意外,如果突然有一台设备中途退出,不再请求该如何处理? 最佳答案 根…

    SIMATIC S7-200 2021年7月5日
  • 关于CPU224的存储容量问题

    利用S7-200进行编写程序,下载到CPU224中老是报PLC程序块太大,存储区不够,请问一下从什么地方可以看到所编写的程序的大小?。。。如果在CPU上插上存储卡,再进行下载程序时…

    SIMATIC S7-200 2020年11月1日
  • 一台上位机最多可以装5611卡?

    我想问下各位:一台上位机上能否装2个5611卡呢?一个走MPI协议,一个走PROFIBUS协议,谢谢 最佳答案 不可以的,每台电脑仅支持1 块CP5611 卡。…

    SIMATIC S7-200 2020年11月1日
  • 关于WDR的使用

    我有个224XP的程序,里面的子程序有很多WDR,我想知道为什么在那些地方要使用WDR,究竟怎么使用WDR,本人基础较差,请各位大侠详细解答一下,谢谢! 最佳答案 不要轻易使用WD…

    SIMATIC S7-200 2021年7月5日

发表回复

登录后才能评论