PDA

Просмотр полной версии : ПЛК63 + modbus проблема



Dmitriy_1974
16.02.2012, 13:47
Добрый день,
возникла проблема при работе ПЛК63 с модулями МВ110-8ДФ и МУ110-16Р
На столе всё работало, пока не выставили в цех. Изначально был modbus_rtu скорость обмена 115200 (снижали не помогло) начал теряться один из блоков при отключении других начинал работать. Подумал издержки протокола - перевёл на modbus_ascii (из-за уникального признака начала пакета) вообще перестал работать опрос МУ110-16Р (с МВ110-8ДФ проблем нет). Подключал монитор на порт - слушал modbus - всё в порядке, на осциллографе также временные промежутки между пакетами в норме. Проект прилагаю, посмотрите что не так? Это черновой рабочий проект.

ASo
16.02.2012, 14:05
Подробно не разбирался, но на взгляд вам нужно устанавливать Enable в False после первого вызова FB в каждом выборе CASE, давая блоку поработать. В True устанавливать после завершения (Complete=True), успешного или не успешного.

Dmitriy_1974
16.02.2012, 14:22
в общем так и было
оригинал выглядел так (см. вложение)

Dmitriy_1974
17.02.2012, 11:43
Консультанты owen, посмотрите пожалуйста исходник, что не так
не работает MB_WR_REGS при использования modbus_ascii (идут ошибки). С RTU - на столе работает, в реальных условиях нет (идут ошибки).

capzap
17.02.2012, 12:23
вот
16: WriteDate10(Enable:=enabl, в этой строчке присваемая переменная, точно всегда бывает true? К примеру в моем коде, я присвоение делаю с помощью MB_WR_REGS.Enable:=COM_SERVICE.Ready, а после гашу её таким способом MB_WR_REGS.Enable:=FALSE

ЗЫ если операция приема пакета корректно не завершилась, то Ваша enabl вроде остается навсегда в FALSE или я не прав

Dmitriy_1974
17.02.2012, 13:32
Насколько я понял
16: WriteDate10(Enable:=enabl,
не обязательно enabl должна всегда быть true (хотя пробывал и так и так) -
опрос МВ110-8ДФ проходит без проблем, проблемы только при записи в МУ110-16Р (команда 10H), причём ошибок при ascii значительно больше чем при rtu

самое интересное, что на ПЛК100 - этот код прекрасно работает без ошибок и с ASCII и с RTU (код прилагаю)
код 1.txt и 2.txt работают одинаково
в ПЛК100 работают оба кода