Как выполнить синхронизацию времени ПЛК-100 с ПК Win7 ???
Необходимо на плк время выставлять такое же как на ПК.
Как выполнить синхронизацию времени ПЛК-100 с ПК Win7 ???
Необходимо на плк время выставлять такое же как на ПК.
Здравствуйте!
Такой возможности нет, ПЛК 100 не поддерживает системную библиотеку SysLibRTC.lib
А если через определенные интервалы времени (10мин. например) производить установку времени в ПЛК по измеренному времени в opc-клиенте masterSCADA и переданному как обычная переменная (кол-во сек. с начала дня).
Возможно ли добиться точности хотяб в +-1с?
Как оценить время передачи переменной до контроллера?
напишите демон слейв устройства, который будет содержать три регистра, для часов, минут и секунд. Демон каждую секунду меняет значения регистров, а ПЛК когда нужно берет инфу с этих регистров
демон это программа работающая в фоновом режиме, определение не точное но смысл должен быть понятен. Вот выкладываю для мастера МодбасТСР слейв с адресом 2. Регистр №0 - часы, №1 - минуты и №3 - секунды.
import java.net.*
import java.util.*
import net.wimpi.modbus.*
import net.wimpi.modbus.net.*
import net.wimpi.modbus.io.*
import net.wimpi.modbus.msg.*
import net.wimpi.modbus.util.*
import net.wimpi.modbus.procimg.*
cal = new GregorianCalendar();
spi = new SimpleProcessImage();
def getSiPrIm() { return spi; }
def getGreg() { return cal; }
def mySlave() {
ModbusTCPListener listener = null;
getSiPrIm().addRegister(new SimpleRegister(0));
getSiPrIm().addRegister(new SimpleRegister(0));
getSiPrIm().addRegister(new SimpleRegister(0));
ModbusCoupler.getReference().setProcessImage(spi);
ModbusCoupler.getReference().setMaster(false);
ModbusCoupler.getReference().setUnitID(2);
listener = new ModbusTCPListener(3);
listener.setPort(Modbus.DEFAULT_PORT);
listener.start();
println listener.isListening()
}
tScript = new Thread(new Runnable() {
public void run() {
mySlave()
}
});
tScript.start();
tScript1 = new Thread(new Runnable() {
public void run() {
while(true) {
try{Thread.sleep(1000)}catch(Exception e){}
getGreg().setTime(new java.util.Date())
getSiPrIm().getRegister(0).setValue(getGreg().get( Calendar.HOUR_OF_DAY))
getSiPrIm().getRegister(1).setValue(getGreg().get( Calendar.MINUTE))
getSiPrIm().getRegister(2).setValue(getGreg().get( Calendar.SECOND))
}
}
});
tScript1.start();
Со стороны плк понял так:
в конфигурации создать modbus(slave) с адресом2 в нем перем. типа 2byte
Со стороны ПК ничего не понял.(
Код написан на Java? какой компилятор нужен?
в том варианте что я предложил, ПЛК в качестве мастера, вечером выложу более оптимальный вариант, когда плк в роли слейва, а прога на пк мастер, её поставить в список задачь винды(линукса) запускающихся по расписанию. На плк в слейве должно быть четыре регистра, это часы,минуты, секунды и некий флаг, по которому в программе плк устанавливать время. Мастер выдал обновленное время и флаг в положение true, после завершил свою работу, до следущего времени по расписанию. А в ПЛК, когда условие выполняется IF flag=TRUE THEN выполнить код, взяв регистры, в которых лежит время и сбросить флаг. Вообщем как то так
Да, если с ПК связь последовательная, то нужны настройки порта
Последний раз редактировалось capzap; 08.09.2011 в 13:29.
для мастера нужны как обычно IP-адрес, адрес ведомого устройства, порт и номера регистров. Я пишу на скриптах, поэтому если разобраться, всегда можно легко поправить