恭喜,你发布的帖子
发布于 2023-05-03 12:30:54
2楼
在仿真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,在添加配方前需要先判断配方表是否空表,如果是空表,则添加的记录作为首条记录,如果不是空表,则记录添加在原表最后一条后。
感谢您的指正,我们正在进一步完善程序,到时候会公布给大家。
请填写推广理由:
分享
只看
楼主