Ответы в темах
-
АвторЗаписи
-
KoliaMor
УчастникАвтоматизация производства, на схеме RapidSCADA дублируется мнемосхема HMI.
KoliaMor
УчастникДелал исключительно для удобства работы, у меня сейчас в схеме более 100 объектов, многие накладываются друг на друга. Я их поделил на слои, на каждый слой сделал фон (трафарет) и расставил объекты по трафарету. В итоге объекты на исходных слоях не перекрывают друг друга, и если понадобятся изменения, будет проще их сделать.
Так же слои можно использовать если на нескольких схемах требуется вывод что-то типа меню или панели состояний одинаковой для всех схем.
KoliaMor
УчастникПримеры из папки Test (Test1,2,3 — входные файлы, Test — выходной)
KoliaMor
УчастникНемного с темой напутал..
KoliaMor
УчастникСпасибо
KoliaMor
УчастникKoliaMor
УчастникТаймер, по аналогии TON, TOF. Только на выходе выдает время включения. Отдельный вход сброса TimRst().
// Tim int[] TimNum = new int[1]; long[] TimST = new long[1]; long[] TimAcc = new long[1]; bool[] TimFlag = new bool[1]; public double Tim(double TimIn, int mode) { bool Tim_in = TimIn > 0; int res = Array.IndexOf(TimNum, CnlNum); if (res == -1) { res = TimNum.Length; Array.Resize(ref TimNum, res+1); Array.Resize(ref TimST, res+1); Array.Resize(ref TimAcc, res+1); Array.Resize(ref TimFlag, res+1); TimNum[res] = CnlNum; } if (!Tim_in) { TimFlag[res] = false; TimST[res] = 0L; if((mode&1)==0) TimAcc[res] = 0L; } else { if (!TimFlag[res]) { TimFlag[res] = true; TimST[res] = Ticks(); } else { TimAcc[res] += Ticks() - TimST[res]; TimST[res] = Ticks(); } } if((mode&2)==0) { long Ret = ((mode&4)==0) ? TimAcc[res] : TimAcc[res]/1000; double Div = Math.Pow(10, (mode&0x70)>>4); return Convert.ToDouble(Ret)/Div; } else { DateTime RetTim = new DateTime(2018, 1, 1, 0, 0, 0); return EncodeDate(RetTim.AddMilliseconds(TimAcc[res])); } } public double TimRst(double InRst,int Chanel) { int res = Array.IndexOf(TimNum, Chanel); if (res != -1) { if(InRst!=0)TimAcc[res] = 0L; } return 0; } // Example : // 130, ДТИ, Фл = Tim(Val(101),0x05), Фт = D // 101 - включение // 131, ДТИ, Фл = TimRst(Val(102),130) // 102 - сброс (для (mode&1) > 0) // mode bits: // 0: 0 - без сохранения, 1 - с сохранением, сброс по Фл.TimRst -> при пропадании входа // 1: 0 - вывод double, 1 - вывод TimeData в формате double // 2: 0 - вывод double в мсек, 1 - вывод double в сек // 3: не используется // 4-6: делитель числа double: 0 - на 1, 1 на 10, 2 на 100 и т.д. до 10^7 // 7: не используется // Example : Tim(Val(101),0x30) - вывод времени в мс в формате D.DDD, время не сохраняется-
Ответ изменён 8 лет, 5 месяцев назад пользователем
KoliaMor.
KoliaMor
УчастникEncodeDate(DateTime.Now), Формат: Дата и Время
KoliaMor
УчастникПонятно, Спасибо.
KoliaMor
УчастникКак отобразить текст полностью на схеме?
KoliaMor
Участникhttps://cloud.mail.ru/public/J9YQ/C9fZudxwd
В последней строке введено 1234567890, а отображает только 12345678
-
Ответ изменён 8 лет, 6 месяцев назад пользователем
KoliaMor.
KoliaMor
УчастникДля динамического текста
-
Ответ изменён 8 лет, 5 месяцев назад пользователем
-
АвторЗаписи