PLC在此不允许使用常量,有没有人知道怎么办,谢谢了。。十分感谢


我曾经遇到过类似的问题,在PLC编程时碰到“不允许使用常量”的提示,这种情况大多是因为编程环境对常量的使用规则有限制。下面为你分析问题并提供几种解决方案。
从提问内容看,你在使用定时器指令(如TON)时,直接在PT(预设时间)参数中写入了常量值(像T#100MS),而当前PLC的编程环境可能不允许在指令参数中直接使用硬编码常量,需要通过变量、符号表等间接方式赋值。
许多PLC支持在符号表中预先定义常量,之后在程序里直接引用符号名称,这样既能保证程序可读性,又能规避直接使用常量的限制。
操作步骤:
代码片段:
// 符号表定义
符号名称 数据类型 值 注释
TIMER_100MS INT 100 100ms定时值
// 程序段中的定时器指令
TON(
IN := %M0.1, // 定时器使能输入
PT := TIMER_100MS, // 引用符号表定义的常量
Q := %M0.2, // 定时器输出
ET := ??? // 剩余时间
)
若PLC不允许直接使用常量,可先定义一个变量存储常量值,然后在程序中使用该变量。此方法灵活,便于后期修改参数。
操作步骤:
代码片段:
// 变量声明(ST语言示例)
VAR
TimerValue : INT := 100; // 定义变量并初始化
TimerEnable : BOOL; // 定时器使能信号
TimerOutput : BOOL; // 定时器输出
END_VAR
// 程序段中的定时器指令
TON(
IN := TimerEnable, // 使能信号来自变量
PT := TimerValue, // 使用变量作为预设时间
Q := TimerOutput,
ET := ???
)
若在功能块(FB)或函数(FC)中使用定时器,可通过输入参数传递预设时间值,外部调用时传入常量或变量。
操作步骤:
代码片段:
// 功能块声明(ST语言示例)
FUNCTION_BLOCK Timer_FB
VAR_INPUT
PT_Input : INT; // 输入参数,预设时间
Enable : BOOL; // 使能信号
END_VAR
VAR_OUTPUT
TimerQ : BOOL; // 定时器输出
END_VAR
// 功能块内部逻辑
TON(
IN := Enable,
PT := PT_Input, // 使用输入参数作为预设时间
Q := TimerQ,
ET := ???
);
推荐理由:
代码示例补充(以西门子LAD语言为例):
// 符号表(全局符号)
名称 地址 数据类型 值 注释
TIMER_100MS %MW0 INT 100 100ms定时值
Network 1:
// 定时器指令引用符号表常量
TON
(
IN := M0.1,
PT := TIMER_100MS, // 直接使用符号名称
Q => M0.2,
ET => MW2
)
以上是针对该问题的分析和解决方案,符号表定义常量是比较通用且规范的做法,建议优先尝试。如果在操作中遇到具体问题(如PLC品牌对应的软件操作差异),可以继续留言说明,我会进一步帮你调整方案。请楼主采纳,若还有其他疑问随时告诉我!