恭喜,你发布的帖子
发布于 2026-03-18 10:33:41
2楼
以上指令是时间戳相关指令,计数器没有指令,只能读取组态的映像区。计数值如何清零或者加载预设值看了说明书多遍 都没有相关表述 把说明书发给AI分析也找不到。AI 小西回复
6ES7 138-6CG00-0BA0(TM TIMER DIDQ 10×24V)模块本身不提供内置的“预设值”比较功能或专用寄存器用于直接设置预设值以触发中断或输出。该模块的核心功能是高速计数、时间戳采集、过采样和 PWM 信号生成,其行为由硬件组态决定,而非通过运行时写入特定变量来实现预设值比较 [1] [2]。
因此,您提到的“通过修改变量(如 DB.DBDx)动态更改预设值”并非该模块固有的功能,而是需要在用户程序中自行编程实现的逻辑。具体步骤如下:
读取当前计数值:在 TIA Portal 中组态模块后,其计数值会映射到输入过程映像区(PII)。例如,通道 1 的当前计数值可能位于 ID100(32位有符号整数)。您可以在程序中使用 MOV 指令将 ID100 的值复制到一个数据块变量中,如 DB1.DBD10。
定义预设值变量:在数据块(如 DB1)中创建一个变量(例如 Preset_Value,数据类型为 DInt),用于存储您希望比较的预设值。
实现比较逻辑:在您的程序(如 OB1)中,使用比较指令(如 ==D 或 >=D)将从过程映像读取的当前计数值(DB1.DBD10)与您定义的预设值变量(DB1.DBD14)进行比较。
执行相应动作:根据比较结果,控制输出点或置位标志位。例如,当 DB1.DBD10 >= DB1.DBD14 时,激活一个输出 Q0.0。
动态更改预设值:您可以在程序的任何地方(例如,响应另一个输入信号或来自 HMI 的指令)使用 MOV 指令将一个新值写入 DB1.DBD14(即 Preset_Value 变量)。这个新值将在下一次循环中被用于比较。
总结:
该模块没有说明书未说明的“隐藏”预设值变量。
“动态更改预设值”是通过在用户程序中修改一个自定义的 DInt 类型变量(如 DB1.DBD14)来实现的。
模块本身不提供“当前值等于预设值”时的硬件中断。如需中断功能,必须在程序中轮询比较结果,并调用中断例程,但这会引入程序扫描周期的延迟。
此方法是使用 SIMATIC S7-1500 系列高速计数模块(如 TM TIMER)实现预设值比较的标准编程实践。
通过现有文件看,计数器只计数,不支持改变计数值
请填写推广理由:
分享
只看
楼主