Найти n-е значение в значении в структурированном тексте
У меня есть опыт VB и C#, но не ST. Я пытаюсь найти значение n-й цифры в значении. т.е. 654321 n-е значение, когда n = 3, должно возвращаться 4. Возможно ли это сделать в ST?
1 ответ
Я предлагаю преобразовать число в STRING, а затем вы можете найти n-й символ из строки. Конечно, вы не сказали этого, если ваш номер 654321 является строковым или числовым значением, но это не имеет значения.
Следующий код занимает 3-й символ слева. Если вам нужно получить цифру справа, вы можете отредактировать код с помощью функций LEN() и т. Д.
VAR
TestNumber : DINT;
TestString : STRING;
NthDigitAsString : STRING(1);
NthDigit : BYTE;
END_VAR
TestNumber := 654321;
//Convert to string
TestString := DINT_TO_STRING(TestNumber);
//Find the 3rd character (counting from from left)
NthDigitAsString := MID(TestString, 1, 3);
//Convert the character to number (if necessary)
NthDigit := STRING_TO_BYTE(NthDigitAsString);
Это конечно длинная версия. Найдите однострочник ниже:
NthDigit := STRING_TO_BYTE(MID(DINT_TO_STRING(654321), 1, 3));