Как выполнить файловый ввод / вывод в CODESYS (IEC 61131-3)?
Я использую устройство автоматизации (оснащенное CODESYS) для вычисления выходного значения функционального блока. Чтобы убедиться, что функция работает должным образом, мы хотели бы сравнить это выходное значение с выходным результатом другого функционального блока, который мы не записали.
Чтобы сообщить результат этого сравнения, мы хотели бы, чтобы два упомянутых выше значения были нарисованы в форме графика. Поэтому нам нужно иметь временную строку этих двух данных (в формате csv или в любом другом формате). Я провел небольшое исследование в Google, а также взглянул на этот вопрос. Похоже, не так много информации о том, как выполнять файловый ввод / вывод с использованием CODESYS.
Мне интересно, имел ли кто-либо подобный опыт (выполнение синхронного файлового ввода-вывода для генерации данных CSV).
Любая идея высоко ценится. Благодарю.
2 ответа
Смотрите библиотеку FILE: https://help.codesys.com/webapp/Examples;product=CAA_FILE;version=3.5.11.0
В основном, что вы должны сделать, это:
- Например, создайте буфер данных для ваших CSV-строк.
LineArray : ARRAY[1..100] OF STRING[255].
Сохраните измеренные значения в строковый буфер с некоторым интервалом. использование
CONCAT
а такжеREAL_TO_STRING
создать действительную линию CSV.В то же время, откройте файл с
FILE.Open
функциональный блокИспользуйте дескриптор открытого файла для записи данных в файл (
FILE.Write
) из буфера. Не забудьте переместить буфер после записи, например, с помощью MemCpy.После того, как все строки написаны, используйте
FILE.Close
,
Этот вопрос недавно был задан в серии учебных пособий доктора Ализаде по Codesys. Вот ссылка на него. Это в основном сужается, чем использование функциональности трассировки Codesys.