为什么SCL源编译成功后,在‘一致性检查’ 编译中仍然报错

n

1问题描述n

一个PLC站的FB,DB,FC,UDT是通过多个SCL源生成的,如下:n

n

为什么SCL源编译成功后,在‘一致性检查’ 编译中仍然报错

图1-1 多SCL源程序n

其中共享DB中用到了UDT类型,在编译时可选择先编译UDT的SCL源,再编译共享DB的SCL源,编译成功。n

而在‘一致性检查‘的编译中报措:n

为什么SCL源编译成功后,在‘一致性检查’ 编译中仍然报错

图1-2 编译错误信息n

错误信息:DB中数据类型为UDT的时间戳与逻辑块接口的时间戳不一致。n

2问题原因

在‘一致性检查‘的全部编译过程中,会将所有的源程序再编译一次,而编译的顺序取决于源文件名称:n

为什么SCL源编译成功后,在‘一致性检查’ 编译中仍然报错

图2-1 ‘一致性检查‘窗口中源文件排列n

造成先编译生成DB,后编译生成UDT,产生时间戳问题。n

3解决办法

为解决此问题,可按照需要修改SCL源文件的名称使UDT的SCL源文件排在DB的SCL源文件的前面。n

为什么SCL源编译成功后,在‘一致性检查’ 编译中仍然报错

图3-1 修改后的SCL源文件

‘一致性检查’窗口的编译顺序发生变化:

为什么SCL源编译成功后,在‘一致性检查’ 编译中仍然报错

图3-2 修改后的编译顺序

全部编译结果:无错误

为什么SCL源编译成功后,在‘一致性检查’ 编译中仍然报错

图3-3 编译无错误信息

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论