Как в скрипте можно получить количество строк в списке?
Вид для печати
Как в скрипте можно получить количество строк в списке?
А для чего вам это нужно? В примере "Сохранение и загрузка набора команд", окончание файла проверяется операцией
line!=null
Мне нужно получать кол-во записей в списке для автоматической нумерации.Т.е. если в списке 3 записи и если мы добавляем еще, то параметр № увеличился бы на 1, а не начинался заново.
Код будет примерно такой:
using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using System.Linq;
using System.Windows.Forms;
using MasterSCADALib;
using System.IO;
using MasterSCADA.Documents;
using System.Collections.Generic;
using System.Text;
using InSAT.Library;
public partial class ФБ : ScriptBase
{
public override void Execute()
{
var FilePathName = HostFB.TreeItemHlp.Parent.FolderPath+"Список строк\\file.txt"; //путь к файлу
if (!File.Exists(FilePathName)) //проверка существования файла
{
Количество=0; //файла нет - количество строк=0
return;
}
Количество = File.ReadAllLines(FilePathName).Length; //получаем количество строк
}
}
Но возможно вам нужно добавить код, который бы выполнял такую проверку не каждый цикл, а только когда вы добавляете строки.
А как можно вытащить событие при открытии окна или закрытии.Т.е. количество подсчитывалось только при открытии окна?
В смысле выполнять подсчет когда будет открываться окно?
Можно отслеживать состояние окна при помощи ФБ "Управление документом". Можно также открывать окно при помощи действий команды или события, и одновременно с этим выполнять чтение файла.
Хотел бы поинтересоваться, есть ли какие нибудь учебные пособия для изучения C# в MasterScada.Я как понимаю в мастерскаде свои классы и методы, свойства объектов. Где можно почитать про классы, которые создавались для мастерскады. Я как понимаю эта строка
var file = new StreamWriter(FilePathName, true,Encoding.GetEncoding("windows-1251")) создает объект класса. Тогда какие классы отвечают за другие компоненты, созданные в мастерскаде?
Специальной документации нет. Есть справка "Объектная модель MasterSCADA".
В остальном - используйте обычные учебники по C#.
Это стандартный класс для работы с файлом
http://msdn.microsoft.com/ru-ru/libr...eamwriter.aspx
А как тогда добавить строку в Список из Палитры?
Я только начинаю во всем этом разбираться, и есть несколько вопросов:
1) Есть контролер, к нему подключается opc сервер, я так понимаю в программе контролера нужно указать какие переменные он может передавать через опц сервер?
2) Опц сервер устанавливается на ПК?
3) Где должна быть установлена скада система для работы с этим опц сервером?
4) Вот я разработал, программу для управления контролером через скада, как будет выглядеть эта программа? скада система скомпилирует программу( обычный ехе файл?) или запуск из среды разработки будет?
Смотря какой контроллер.
Если работать с ОВЕН ПЛК через ОРС codesys, то в настройках проекта указывается какие переменные доступны.
В контроллерах сегнетикс, например, каким то переменным проекта присваиваются Modbus регистры.
Да, ОРС сервер - это программа которая устанавливается на компьютер.
http://www.insat.ru/products/?category=14
Обычно SCADA и ОРС устанавливают на одном компьютере. Но можно установить ОРС на другом компьютере и работать с ним в удаленном режиме (потребуется настроить DCOM на компьютерах).
Это будет проект MasterSCADA. Вы запускаете этот проект и он запускается в режим исполнения, т.е. режим разработки можно пропустить и перейти сразу в режим исполнения.
А как тогда добавить строку в Список из Палитры?
Не совсем понятно что вы имеете ввиду.
Вы имеете ввиду "Список строк"? А причем здесь тогда палитра?
В палитре мнемосхемы есть элемент Список(Не выпадающий список). как сюда добавить программно строку?
В него программно строку добавить нельзя. В данный контрол строки добавляются только в режиме разработки
Значит строку можно добавить только в Список строк(Выпадающий списко)?
Да, в ВФБ "Список строк"
5) С помощью скада системы возможно изменять параметры контроллера? например при определенной температуре контролер должен что то открыть, вот эту температуру можно задавать с помощью системы?
6) Если контроллер настроен для работы со скадой, то в случае отключения пк с системой и опц сервером, контроллер продолжит работать в заданном режиме?
7) Возможно-ли настроить контролер, что бы он работал в автоматическом режиме, если пк отключен, а если включен, то в ручном ?
Да, можно. При помощи команды посылаете на ОРС переменную поддерживающую запись значение, и контролер его принимает.
Да.
В принципе можно. Посылаете от скады сигнал, что она работает. Контроллер его анализирует - и в зависимости от этого использует ручной или автоматический режим.
Но обычно скаду все таки не выключают, а в каком режиме контроллеру работать - в ручном или автоматическом, задает операторов со скады
В принципе скада нужна только для того, что бы пользователь смог изменить пару настроек контролера с пк, или для этого есть способ проще, чем скада?Цитата:
В принципе можно. Посылаете от скады сигнал, что она работает. Контроллер его анализирует - и в зависимости от этого использует ручной или автоматический режим.
Но обычно скаду все таки не выключают, а в каком режиме контроллеру работать - в ручном или автоматическом, задает операторов со скады
Если нужно изменить пару настроек - то можно использовать панель.
Если же нужна диспетчеризация - с графиками, отчетами, большими архивами, то нужна SCADA
Здравствуйте, а на контроллер ПЛК100 OPC - сервер можете скинуть?? Конфигуацию его??
Для связи с ПЛК100 можно использовать ОРС Codesys - его спрашивайте у ОВЕНа, а можно использовать Modbus.
Для связи с Modbus можно использовать наш Modbus Universal MasterOPC Server. Однако готовой конфигурации к нему контроллера ПЛК100 нет и быть не может - потому что структуру Modbus переменных создает сам пользователь в Plc Configuration.
О том как создавать Modbus структуру в Plc Configuration есть в примерах на сайте ОВЕН. Ну а как сделать конфигурацию к нашему ОРС можно посмотреть в наших видеопримерах:
http://www.masteropc.ru/prices/info.php?pid=6944
Как в редакторе формул проверить пустая ли строка или нет?
Вы имеете ввиду модуль "Расчет" или "Скрипт C#"?
Модуль "Расчет" со строками вообще не работает.
В скрипте C# выполняется операция
if (Переменная==string.Empty)
{
//действия если строка пустая
}
Проверить есть ли значение на входе скрипта можно при помощи операции
if (Вход.HasValue==true)
{
//действия если значение есть
}
Проверить есть ли значение на входе скрипта можно при помощи операции
if (Вход.HasValue==true)
{
//действия если значение есть
}[/QUOTE]
это тоже касается C#?В программе ST подобное сделать можно?
Я что то не очень пойму, "наш" и plcconfiguraion??? Это же форум по оборудованию ОВЕН, или еще ИнСАТ включается??Поясните мне.., А где удобнее всего использовать Modbus universal или PLCconfiguration??
у меня такой вопрос. Есть контрол текст в палитре мнемосхемы.Вытаскиваю его на мнемосхему.В динамизация входных значений в пункт текст перетаскиваю команду.И когда я прописываю строку в команде это отображается в тексте на мнемосхеме. Почему можно понять, что текст.Просто мне надо сделать так.Если текст пустой, то записываем туда командой, если не пустой, тогда не прописываем.
Данный раздел посвящен MasterSCADA, и на вопросы здесь отвечает техподдержка ИнСАТ.
Modbus Universal MasterOPC используется если требуется работать про протоколу Modbus.
Обычно по протоколу Modbus RTU или ASCII работают если нет возможности использовать Ethernet, а следовательно использовать OPC Codesys.
Либо если контроллер подключают в большую сеть предприятия, где ОРС Codesys часто глючит - в этом случае лучше использовать Modbus TCP.
Задача состоит в следующем.Создал мнемосхему у объекта, поместил на нее контрол "Текст" из палитры мнемосхемы. У контрола "Текст" есть динамизация входных и выходных значений. В динамизации входных значений есть пункт Текст.Этот пункт я привязал к команде, которая имеет тип строковый.В отладке, когда прописываешь какое нибудь слово в команде, это слово отображается на мнемосхеме. Но перед тем как присвоить команде слово, мне надо проверить пустая ли строка в "Тексте".
Т.е. мне надо перед тем как присвоить значение "Тексту на мнемосхеме", мне надо проверить а пустое ли оно, если нет, то присваивание не происходит.
Пробовал использовать пункт "Текст" в динамизации выходных значений, что-то не получилось...
Проверяйте при помощи ФБ "Разбор строки", то что возвращает контрол. Если длина строки= нулю, то при помощи события выполняйте присваивание.
Пример в приложении.
Как команде присвоить значение программно?
Через действия "События" - не устраивает?
Прикрепил файл проект. Не подскажите что я делаю не так.Что я хотел сделать Окно объекта Цикл.Жму создать->открывается окно параметров.Задаю параметры жму записать.Если в таблице цикл пустая, то записывается.Если не пустая проверяется следующая.И пока не найдет пустой строки.
столкнулся с проблемой: при попытке открытия проекта с помощью ярлыка (открытие проекта в режиме исполнения) выдает ошибку. "ошибка при запуске режима исполнения"
При обычном запуске проекта все работает.
Для уточнения: версия 3.2 винда7
что значит отключить uac?
Значит ошиблись при прописывании параметров ярлыка.
Посмотрите раздел справки "Работа в режиме исполнения - Запуск проекта из командной строки и по ярлыку". Там есть пример.
Это значит что нужно выполнить следующие действия:
* Зайти в панель управления/ система и безопасность/ центр поддержки/ изменение параметров контроля учётных записей
* Выбрать "Никогда не уведомлять", т.е. отключить UAC
* Перезагрузить компьютер
Начиная с версии 3.4 этого делать не нужно.
Я по этой справке и делал.
Кстати вместе со скадой шли демонстрациооные проекты, и они тоже не запускаются. может проблема в настройках программы?
Спасибо за помощь.
А вы это под администратором делаете?