加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15915421161

SIEMENS西门子湖南省张家界市(授权)伺服电机一级代理商——西门子华中总代理

更新时间
2024-11-26 07:00:00
价格
请来电询价
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
联系电话
15903418770
联系手机
15915421161
联系人
张经理
立即询价

详细介绍

1.问题:S7-SCL程序在别人的计算机上打不开或无法编译?

问题:为什么我的S7-SCL 程序在自己的计算机上编译正常,在别人的计算机上却打不开或无法编译?

解答:应当确认其它计算机是否安装了S7-SCL 环境,而且要检查S7-SCL 环境版本,例如:S7-SCLV5.3 SP1 提供了新的函数(SEL,MAX,MIN,LIMIT,MUX,BYTE_TO_INT,INT_TO_BYTE 等等),旧版本无法识别这些函数。如果用户程序中使用了这些函数,在旧版本的S7-SCL 环境下无法通过编译。

2.问题:为什么我的程序与别人的程序完全一致,却通不过编译?

解答:除了前面问题所需注意的事项外,符号表是初学者经常忽略的因素,这里额外单独强调一下。用户在编写S7-SCL 程序源代码时,对符号进行良好的定义,可以使编程清晰易懂。而初学者经常仅仅复制其他人的源代码,却忘记复制符号表,以至于在S7-SCL 程序中经常出现不清楚的名称定义,从而导致编译错误。

3.问题:包含比较类型为WORD/DWORD的变量的 IF 语句不能被编译通过?

解答:当在 IF 指令内比较操作数时,如果变量声明为 WORD 和 DWORD 类型,S7-SCL 仅允许比较操作“=”和“<>”,而不允许比较操作“>”和“<”。作为一种补救措施,建议将变量类型声明为 DINT。 如果变量的类型不能声明为 DINT,在此比较之前则必须首先进行类型转换。

4.问题:当给一个双字类型变量分配了一个实型数值时,出现非法数据类型错误


解答:当给一个双字类型变量分配了一个实型数值时,出现"Invalid data type"消息,是由于数据类型不匹配造成的。注意仅当数据类型为BOOL, BYTE, WORD 和DWORD 时,允许对DB 块的juedui地址访问。

下图举例说明何时数据类型必须转换.


5.问题:在输出窗口中的错误消息与程序行数字不符

解答:当S7-SCL 程序行数超过 65535, S7-SCL 编译器把行计数器重新从1 开始计数。例如,在S7-SCL 源程序中,一个编程错误出现在第65537 行, 以下行数字将被输出:

"F: L 00001 error xyz”, 而不是 "F: L 65537 error xyz"

解决方法:双击S7-SCL 编译器输出窗口中的错误消息,光标将跳至不正确的行。如果编程错误不在所指示的行,你可以使用菜单命令"Edit > Go To > Line..."然后输入" 65536 + 显示错误数字"跳至有错误语句的行。

6.问题:"The FB is not available or the instance declaration is missing"

解答:此消息出现在当一个FC/FB/SFB/SFC 块在程序中被调用时,该块却不包含在块文件夹下。

解决方法1:手动复制相关的程序块到BLOCK 文件夹中然后重新编译S7-SCL。解决方法2:调用FC/FB/SFB/SFC 时,使用S7-SCL 菜单中的Insert>Block Call 向导,S7-SCL 将会自动将此FC/FB/SFB/SFC 复制到当前的BLOCK 目录中,从而避免以上情况出现。

7.问题:"Character strings have different lengths"

问题:"Character strings have different lengths"

解答:示例中包含FC1 和FC2 带有字符串变量"name_1" 与"name_2", 当FC1 被编译时,得到警告"Character strings have different lengths"。在运行期间,在赋值的右侧("name_1")可能是一个比左侧所允许的STRING 变量("name_2")具有更长长度的STRING 字符串。

解决方法:我们建议予左侧的变量"name_2"声明一个长度为254 字符的STRING 字符串。如果你编译具有这种声明的功能FC2,上述警告将不会出现。


注意:如果你声明长达254 字符的STRING 字符串,将会需要更大的本地装载存储空间。

8.问题:CPU消息"STOP due to unknown OP code"

解答:当你在S7-SCL 中使用转换功能"WORD_TO_BLOCK_DB(...)",并且编辑以下语句时该消息会被发出:

Display: = WORD_TO_INT (BYTE_TO_WORD (WORD_TO_BLOCK_DB (DBNo).DB [DBIndex]));

解决方法:我们建议以以下给出的两行语句来替代上面的语句:

tmp := WORD_TO_BLOCK_DB (DBNo).DB[DBIndex];

Display := WORD_TO_INT (BYTE_TO_WORD (tmp));

9.问题:在编译UDT 时出现"Syntax error with UNLINKED"

解答:如果一个UDT 在用"UNLINKED"声明之前已标识,该UDT 不会被编译通过。"UNLINKED"属性不可用于UDT。编译将会以错误消息"Syntax error with UNLINKED"结束。该规则也应用于STL 源程序声明。UDT 通常不装载到S7 CPU 中,而总是存储于"离线"的S7 用户程序。

相关知识:对于"UNLINKED"数据块属性,意味着DB 块有以下特性:

· 仅仅存储于装载存储器中

· 不占据任何RAM 空间。

· "UNLINKED"属性声明在数据块的头部

· 与程序没有关联关系


10.问题:在编译DB时出现"Syntax error with 2#1100_1100"

解答:如果你赋一个二进制数字作为初始值给一个数据块中BYTE 类型的变量,编译S7-SCL 源程序时将出现错误消息"Syntax error with 2#..."

例如: Var1: BYTE:= b#2#1100_1100;

在S7-SCL, 数据块由AWL 编译器生成。如果你在数据块准备部分和赋值部分同时初始化变量,你必须使用AWL 专用符号。因此在示例中的BYTE 类型的变量,仅允许指定十六进制数字作为初始值。

S7-SCL 符号 (例如B#2#1100_1100) 只可用在代码区,因为S7-SCL 编译器只在代码区被使用。

解决方法:将二进制数字改为十六进制数字作为初始值,

例如: Var1: BYTE: = b#16#cc;



相关产品

联系方式

  • 电  话:15903418770
  • 联系人:张经理
  • 手  机:15915421161
  • 微  信:15915421161