vardrager так смотрите пример, открываете справку CodeSys и разбираетесь что есть что, а у же по непонятному задаете вопросы....
Вполне логичное поведение при изучении....
vardrager так смотрите пример, открываете справку CodeSys и разбираетесь что есть что, а у же по непонятному задаете вопросы....
Вполне логичное поведение при изучении....
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Уважаемый capzap я ВАС и не просил меня учить , я просил подсказать тех кто может это сделать. Если вы не можете мне ответить на мой вопрос по каким-либо своим причинам, то можете не отвечать на мои посты картинками которые я видел десятки, я подожду менее занятого человека
Вообще, capzap дело говорит.
В вопросах "как прочитать RTU через modbus-FLOAT, если ПЛК является Ethernet в master сети" есть 2 варианта:
1) Либо "умеющий" научит вопрошающего (что весьма тактично в конкретном случае делает capzap)
2) Либо "умеющий" напишет весь код от и до. Единственный смысл, если написать код интересно самому "умеющему". Чего интересного в передаче FLOAT'а? Много раз уже делали. Ничего нового. Берёшь документацию и делаешь в режиме "что вижу то пою".
С точки зрения "вопрошающего" правильно действовать так:
3) "вот проект, который пересылает FLOAT, но приходит значение на 2.5 меньше, чем отправляется"
или так:
4) "вот проект, отправляю WORD -- работает, а при отправке FLOAT перезагружается ПЛК
или так:
5) "вот проект, при отправке FLOAT открывается пожарный кран, и заливает ПЛК водой"
В общем, можете ждать у моря погоды (того, кто сделает №2), или подумайте над пунктами №1, 3, 4, 5
Последний раз редактировалось Владимир Ситников; 08.11.2016 в 13:35.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Уважаемый Владимир Ситников, по пункту 2 , "умеющий" уже написал код от и до, он как раз и есть в примере, на примере я разобрался что почем с переменной типа int , и если кто-нибудь меня спросит по данному примеру помощи я подскажу вот что:
COM_SERVICE - это блок "управления" портом.
Settings это "переменная" настроек порта, объявляется она в пользовательских типах , библиотека SYSLIBCOM, тип данных COMSETTINGS.
сами настройки копируются из примера
Settings.Port:=com_num; (*номер COM-порта*)
Settings.dwBaudRate:=9600; (*скорость*) скорость должна соответствовать скорости подключаемого прибора
Settings.byParity:=0; контроль четности 0-отсутствует, 1-нечетный 2- четный
Settings.dwTimeout:=0; таймаут обычно 0
Settings.byStopBits:=0; кол-во стоп битов устройства указывается в РЭ например для СМИ2 это 0-1 стоп бит (1- 1.5 стоп бита, 2- 2 стоп бита)
Settings.dwBufferSize:=0; Размер буфера устройства обычно 0
Settings.dwScan:=0; обычно 0
COM_TSK это управление портом OPEN_TSK - открыть порт, CLOSE_TSK - закрыть порт.
блок MB_WR_SNG_REG передает переменную int по сети modbus
mode- режим передачи либо MB_ASCII, либо MB_RTU
DevAddr - это адрес устройства в сети для СМИ2 это например 16
RegAddr - это номер регистра в который передаются данные указано в РЭ например для пердачи переменной INT указывается регистр 25
Value - это сама переменная которую надо передать
ComHandle - это переменная Settings.Port из настроек порта
TimeOut - это задержка ответа прибора указывается в РЭ к прибору например для СМИ2 это 45 мс
и это мне не сложно сделать . еслибы я получил такой ответ разобрался бы намного быстрее.
Мне не понятно дальнейшее в примере , как передать переменную float и я прошу разъяснить мне уже ГОТОВЫЙ пример ПОДРОБНО, а не филосовствовать на тему умеющих и вопрошающих
вобщем господа, кто захочет передавать данные типа REAL на индикатор СМИ2 в готовом примере с диска не правильно установлена последовательность передачи байтов, buffer [1].. [0]..[3]..[2] не правильно , правильно будет 3.2.1.0. тоесть просто надо поменять циферки 1 на 3, 0 на 2, 3 на 1, 2 на 0.