回复:添加配方仿真失败引起的探讨

Siemens_PLC编程精英训练营

西门子1847工业学习平台

  • 帖子

    1108
  • 精华

    0
  • 被关注

    15

论坛等级:侠圣

注册时间:2018-09-30

钻石 钻石 如何晋级?

发布于 2023-05-03 12:30:54

2楼

展开查看
以下是引用6TZZZZ9在2023-05-02 20:56:53的发言 >0楼

在仿真AddRecipe功能块时发现:

如果配方表是一个空表,则在执行添加新配方是PLC会报错停机,见下图。

原因应该是由于#temp_x是0, #temp_i是-1,所以#temp_j := #recipeList.RecipeList[#temp_i].Next;就报错了吧?

    #recipeList.RecipeList[#temp_x] := #recipeAdded;

    #temp_i := #temp_x - 1;

    #temp_j := #recipeList.RecipeList[#temp_i].Next;

另外,如果配方表里只有一个配方记录时,它的prev、next应该也都是-1吧,这和无效记录一样的了,这两个问题,请问老师和同学们有什么好的解决办法吗?





这两个问题确实都存在,解决的方法可以对首条配方记录做特殊定义,比如说prev=0,在添加配方前需要先判断配方表是否空表,如果是空表,则添加的记录作为首条记录,如果不是空表,则记录添加在原表最后一条后。

感谢您的指正,我们正在进一步完善程序,到时候会公布给大家。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

PLC编程精英训练营

共有1548条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。