Шпион писался давно, в сентябре 2006-го, а последний раз пользовался год назад, поэтому уже кое-что подзабылось. Но будем вспоминать...
Для анализа причин сбоев станка я поставил себе задачу сначала записать процесс с минимально возможным временем выборки, в течении нескольких секунд (длительность рабочего цикла), по событию.
Минимально возможное время это, естественно, время цикла контроллера. Но, ввиду ограничений накладываемых каналом связи и операционной системой верхнего уровня, запись сразу в PC негодится для поставленной задачи. Следовательно писать надо в память самого же PLC, а потом всё что записано извлекать оптом в PC. Что и было сделано.
Запись данных в PLC.
Каждый цикл PLC пишется одно слово, в зависимости от конкретной задачи формируемое. Я его формировал из IO представляющих интерес. Но была небольшая трудность - каждая запись должна иметь хотя бы относительную метку времени. В S5 с его скромными ресурсами и возможностями запись метки времени реализовать с необходимым разрешением не представляется возможным. Поэтому я применил такую фишку - пишем сначала в одну DB, когда изменяется значение секунд меняем DB. Такой способ вполне применим если время цикла контролера не меньше 1/256 секунды. Для сравления, время цикла практически пустого 103-го, если загружен только минимум необходимый для измерения времени цикла, 1/410 секунды. В дальнейшем, по извлечении данных наверх относительная метка времени восстанавливается исходя из среднего количества записей в полносекундных DB. Первая DB не полносекундная, у меня, так как я привязал смену DB к часам реального времени контроллера. Но для простоты, при повторении, можно применить просто таймеры тогда и первая DB будет полносекундной. (кстати это расширит область применения на 90, 101 и 102 CPU у которых нет часов реального времени и практически без ухудшения точности).
Что касается камментариев к собственно шпиону это всё.
Извлечение данных из PLC в PC.
Извлечение большого количества данных из PLC, в пригодном для дальнейшей машинной обработки виде, всегда представляет некоторую труднось, так, например, при помощи широко известной в узких кругах WinCC сделать это вообще невозможно. (кто будет утверждать обратное пусть зашарит проект) Я сделал это при помощи Fastrak ControlShop. Немного изменив пример поставляемый вместе с этим софтом. Тут хочу выразить огромное спасибо
ppp (это никнэйм такой) за проделанную работу по популяризации качественных программных
продуктов.
В последствии для S7 я, для аналогичной цели, применил
Indusoft60, тоже вообщем-то неплохо получилось.
В
архиве есть S5 файл, файл символов к нему и xls-файл с макросом.
Дерзайте!