在 Twincat 3 HMI 中通过文本框设置时间变量

问题描述 投票:0回答:3

对于整数、浮点或字符串等变量,我使用 Write To Symbol 将变量写入 PLC,并使用属性窗口中 .onTextChanged 下的 HMI 文本框(参见下图)。 Write To Symbol Properties window

但它不适用于时间变量。 如何在不更改 PLC 代码的情况下完成这项工作?

time textbox plc twincat
3个回答
1
投票

尝试使用 TC Hmi 上的对象“数字输入”将变量写入 PLC,事件为“.onUserInteractionFinished”。它应该有效。

在此输入图片描述


0
投票

我以前从未使用过 javascript,但这就是我找到解决方案的地方。 我还使用了 .onUserInteractionFinished 而不是 .onTextChanged,如下图所示:

Properties Window

之后我写了这段javascript代码:

(function (TcHmi) {

    var CheckTextboxForNumber = function (Textbox) {
        //get content from the textbox
        var _text = Textbox.getText();
        //convert to time variable in 
        if (!_text.startsWith('PT')) {
            var _value = Number(_text);
            Textbox.setText('PT' + _value.toFixed(3) + 'S');
            return _value.toFixed(3);
        }
    };

    TcHmi.Functions.registerFunction('CheckTextboxForNumber', CheckTextboxForNumber);
})(TcHmi);

我将代码放在写入符号之前,并添加了舍入,因为舍入在第3位小数之后的舍入方式有所不同:当我在不舍入小数的情况下测试它时,从第4位开始,PLC将显示其他小数然后我在 HMI 文本框中输入。

我在“操作和条件”窗口中输入的内容如下图所示:

Writing variable to PLC

之后它就按预期工作了。


0
投票

在较新版本的 TwinCAT HMI 中(至少在版本 1.12.760.59 中),工具箱中有

Timespan Input
Timespan Picker
控件。看看他们。

不幸的是,您可能会发现与通过

Numeric input
控件设置(例如)INT 变量相比,使用这些控件可能仍然需要更多工作。我希望倍福将来能够改进这些控件。但是,现在,我相信这些控件仍然可以帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.