回复:应用探讨——SCL 编程语言使用探讨

坤之剑

  • 帖子

    315
  • 精华

    3
  • 被关注

    22

论坛等级:侠圣

注册时间:2010-06-01

普通 普通 如何晋级?

发布于 2013-08-28 18:50:31

73楼

如果考虑执行效率的话还是STL吧,另外提醒一下大家在SCL编译生成的调试信息的数量大小,并不止取决于本块代码量的大小,还取决于本块所使用数据块数据量的大小。
举个例子吧:
FC1操作DB1的数据:
TYPE UDT1
STRUCT
Names:STRING[20];
Quality:REAL;
Visble:BOOL;
ClearName:BOOL;
END_STRUCT
END_TYPE

TYPE UDT2
STRUCT
RecipeName:STRING[26];
RecipeNumber:STRING[12];
Material1:UDT1;
Material2:UDT1;
Material3:UDT1;
Material4:UDT1;
Material5:UDT1;
Material6:UDT1;
Material7:UDT1;
Material8:UDT1;
Material9:UDT1;
Material10:UDT1;
Material11:UDT1;
Material12:UDT1;
Material13:UDT1;
Material14:UDT1;
Material15:UDT1;
Material16:UDT1;
Material17:UDT1;
Material18:UDT1;
Material19:UDT1;
Material20:UDT1;
END_STRUCT
END_TYPE

DATA_BLOCK DB1
STRUCT
RationSet:REAL;
RecipeManufacture:UDT2;
EmpetyRecipeName:STRING[26];
EmpetyRecipeNumber:STRING[12];
EmpetyMaterialName:STRING[20];

RecipeManager:STRUCT
RecipeName:STRING[26];
Up:STRUCT
Upload:BOOL;
UnExist:BOOL;
UploadComplete:BOOL;
END_STRUCT;
Down:STRUCT
DownLoad:BOOL;
UnExist:BOOL;
ChangeRecipeName:BOOL;
DownloadComplete:BOOL;
END_STRUCT;
Next:STRUCT
NextRecipe:BOOL;
END_STRUCT;
New:STRUCT
Create:BOOL;
Exist:BOOL;
RoomEnough:BOOL;
CreateComplete:BOOL;
END_STRUCT;
END_STRUCT;
ClearNames:STRUCT
TargetRecipeName:BOOL;
TargetRecipeNumber:BOOL;
SelectRecipeName:BOOL;
END_STRUCT;
TargetRecipeData:UDT2;
//SourceRecipeData:ARRAY[1..50] OF UDT2;
SourceRecipeData1:UDT2;
SourceRecipeData2:UDT2;
SourceRecipeData3:UDT2;
SourceRecipeData4:UDT2;
SourceRecipeData5:UDT2;
SourceRecipeData6:UDT2;
SourceRecipeData7:UDT2;
SourceRecipeData8:UDT2;
SourceRecipeData9:UDT2;
SourceRecipeData10:UDT2;
SourceRecipeData11:UDT2;
SourceRecipeData12:UDT2;
SourceRecipeData13:UDT2;
SourceRecipeData14:UDT2;
SourceRecipeData15:UDT2;
SourceRecipeData16:UDT2;
SourceRecipeData17:UDT2;
SourceRecipeData18:UDT2;
SourceRecipeData19:UDT2;
SourceRecipeData20:UDT2;
SourceRecipeData21:UDT2;
SourceRecipeData22:UDT2;
SourceRecipeData23:UDT2;
SourceRecipeData24:UDT2;
SourceRecipeData25:UDT2;
SourceRecipeData26:UDT2;

SourceRecipeData27:UDT2;
SourceRecipeData28:UDT2;
SourceRecipeData29:UDT2;
SourceRecipeData30:UDT2;
SourceRecipeData31:UDT2;
SourceRecipeData32:UDT2;
SourceRecipeData33:UDT2;
SourceRecipeData34:UDT2;
SourceRecipeData35:UDT2;
SourceRecipeData36:UDT2;
SourceRecipeData37:UDT2;
SourceRecipeData38:UDT2;
SourceRecipeData39:UDT2;
SourceRecipeData40:UDT2;
// SourceRecipeData41:UDT2;
// SourceRecipeData42:UDT2;
//SourceRecipeData43:UDT2;
// SourceRecipeData44:UDT2;
// SourceRecipeData45:UDT2;
//SourceRecipeData46:UDT2;
//SourceRecipeData47:UDT2;
// SourceRecipeData48:UDT2;
// SourceRecipeData49:UDT2;
// SourceRecipeData50:UDT2;

END_STRUCT
BEGIN
END_DATA_BLOCK

1、在FC如果引用了DB1的数据,当SourceRecipeData超过40条,哪怕FC只有一句语句,在编译时生成调试信息时都会报生成编译信息超过64KB的错误,大家有兴趣的可以试一下。
2、SourceRecipeData:ARRAY[1..50] OF UDT2相比SourceRecipeData50:UDT2;同样数据量并不会报错。
3、可见数组与UDT在编译时所占资源还有很大区别的,监视以下两种情况下CPU工作存储器的已分配数据量有很大差距。
SCL的编译机制哪位大侠如有知道的还请赐教。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54711条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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