PDA

Просмотр полной версии : Конвертация TIME_TO_INT



Виктор Р
11.11.2016, 14:32
Здравствуйте, такой вопрос. Работаю с СПК107, использую Codesys 3.5 patch 5, столкнулся с такой проблемой, что при попытке конвертировать переменную типа TIME в переменную типа WORD или наоборот компилятор выдаёт ошибку: "Невозможно конвертировать тип "TIME" в тип "INT"". Поискал по темам причины и не смотря на то, что функция вроде бы как встроенная, я проверил библиотеку Standart - подключена, в других библиотеках конвертеров этих переменных нет, в ассистенте ввода проверил синтаксис, ошибок не допустил, не могу понять из-за чего может возникать ошибка, подскажите пожалуйста.

Евгений Кислов
11.11.2016, 14:35
Покажите соответствующий кусок кода, пожалуйста (а также объявление переменных, которые в нем участвуют).

Виктор Р
13.11.2016, 09:36
Ну вот, как-то так. Я не пробовал присваивать переменным какие-то значения, просто объявил их и решил посмотреть какие конвертации я смогу сделать. Например, перевести int в word получается, int в time - нет, int в wstring - тоже нет. 27559 27560

Нужна мне эта функция, чтобы сравнить введённое с использованием num клавиатуры значение с системным временем, грубо говоря: ввели 13 и 50, сравнили с системным временем, если по времени 13:50 - выполняем код. Может я заморачиваюсь и есть способы попроще

capzap
13.11.2016, 09:39
Ну вот, как-то так. Я не пробовал присваивать переменным какие-то значения, просто объявил их и решил посмотреть какие конвертации я смогу сделать. Например, перевести int в word получается, int в time - нет, int в wstring - тоже нет. 27559 27560

так Вы бы сравнили переменные в окне объявлений, Hour Вы объявили как инт, а пытаетесь присвоить результат преобразования из ИНТ в Ворд, причем саму в себя на 333 рисунке, аналогично hhh из ggg все должно быть наоборот

Виктор Р
13.11.2016, 12:30
Разобрался, спасибо. Банальная ошибка была

Yakut
24.05.2023, 21:07
О, тоже столкнулся с подобным.
В языке LD всё работает, а в ST никак не могу разобраться с синтаксисом.

Может кто подскажет?

capzap
24.05.2023, 21:24
Видимо пробелов много в не нужных местах

Yakut
24.05.2023, 21:44
Видимо пробелов много в не нужных местах
Спасибо тебе, добрый человек!

kondor3000
25.05.2023, 10:00
О, тоже столкнулся с подобным.
В языке LD всё работает, а в ST никак не могу разобраться с синтаксисом.

Может кто подскажет?
Не понятен смысл конвертации TIME_TO_INT, время не может быть отрицательным, а INT может. Когда нибудь такой подход выйдет боком.
Всего на 33 секунде можно получить отрицательное время, и даже зависание ПЛК, если оно где то используется в расчётах 67982
Гораздо правильней использовать DWORD или в крайнем случае WORD, если время небольшое ( до 17 часов).