Проверьте свой сгенерированный код при помощи cosimulation. Сгенерированный код и испытательный стенд работают на Codesys основанный на программном обеспечении программируемый логический контроллер (мягкий PLC). Simulink ™ модель использует Коммуникационную Унифицированную архитектуру Открытой платформы (UA OPC), чтобы связаться с и получить cosimulated данные от мягкого PLC. Модель Simulink проверяет сгенерированный код путем сравнения результатов симуляции модели с cosimulated мягкими результатами PLC.
В вашей системе вы, должно быть, установили:
Codesys V3.5. SP16 + IDE или закрашенная фигура Codesys V3.5 SP16 1 + IDE
OPC Toolbox ™
Simulink PLC Coder ™
simple_cosim
модель составлена из SimpleSubsystem
блокируйтесь и Система MATLAB (PLCCOSIM)
блок. В процессе моделирования модель сравнивает значения от SimpleSubsystem
блокируйтесь к значениям от мягких plc, которые получены при помощи Системы MATLAB (PLCCOSIM)
блок.
SimpleSubsystem
блок содержит простую обратную связь.
Система MATLAB
блок настраивается, чтобы запустить PLCCOSIM.m
файл. Файл содержит код, чтобы настроить коммуникации UA OPC и получить cosimulated данные от мягкого PLC.
type PLCCOSIM.m
classdef PLCCOSIM < matlab.System % PLCCOSIM Add summary here % % This template includes the minimum set of functions required % to define a System object with discrete state. % Public, tunable properties properties end properties(DiscreteState) CycleNum; end % Pre-computed constants properties(Access = private) UAObj; DeviceNode; Cycle_U; Cycle_Y; TestCycleNum; PreviousCycleNum; end methods(Access = protected) function setupImpl(obj) % Perform one-time calculations, such as computing constants % init opc UA server connection obj.UAObj = opcua('opc.tcp://localhost:4840'); connect(obj.UAObj); obj.DeviceNode = findNodeByName(obj.UAObj.Namespace,'DeviceSet','-once'); obj.Cycle_U = findNodeByName(obj.DeviceNode,'cycle_U'); obj.Cycle_Y = findNodeByName(obj.DeviceNode,'cycle_Y'); obj.TestCycleNum = findNodeByName(obj.DeviceNode,'testCycleNum'); obj.PreviousCycleNum = findNodeByName(obj.DeviceNode,'previousCycleNum'); end function y = stepImpl(obj,u) % Implement algorithm. Calculate y as a function of input u and % discrete states. obj.CycleNum = obj.CycleNum+1; writeValue(obj.UAObj, obj.Cycle_U, u); writeValue(obj.UAObj, obj.TestCycleNum, obj.CycleNum); valueUpdated = false; for rct = 1:100 previousCycleNumValue = readValue(obj.UAObj, obj.PreviousCycleNum); if previousCycleNumValue == obj.CycleNum valueUpdated = true; y = readValue(obj.UAObj, obj.Cycle_Y); break end pause(0.001) end if ~valueUpdated error('not get the value for cycle number %d', obj.CycleNum); end end function resetImpl(obj) % Initialize / reset discrete-state properties obj.CycleNum = 0; writeValue(obj.UAObj, obj.TestCycleNum, obj.CycleNum); writeValue(obj.UAObj, obj.PreviousCycleNum, obj.CycleNum); end function out = getOutputSizeImpl(obj) out = propagatedInputSize(obj,1); end function out = getOutputDataTypeImpl(obj) out = propagatedInputDataType(obj,1); end function c1 = isOutputComplexImpl(obj) c1 = false; end function c1 = isOutputFixedSizeImpl(obj) c1 = true; end function s = getDiscreteStateImpl(obj) s = obj.CycleNum; end end end
Файл проекта Codesys запускает сгенерированный код на мягком PLC. Если у вас есть Codesys V3.5. SP16 + IDE, используйте plc-cosim_v3sp16.project
как проект
файл. Если у вас есть Codesys V3.5. Закрашенная фигура SP16 1 + IDE, используйте plc-cosim_v3sp16patch1.project
как проект
файл.
В системном лотке Windows ® выберите CODESYS Control Win SysTray-x64, щелкните правой кнопкой и выберите Start PLC.
Откройте файл проекта на основе Целевой версии IDE Codesys.
Дважды кликните CODESYS_Control_Win_V3_x64
и выберите Scan Network.
Во вкладке Scan Network выберите свое устройство в Избранном Окне устройств. Нажать ОК.
Выберите Build> Build.
6. Выберите Online> Login.
7. Выберите Debug> Start.
Мягкий PLC теперь запускает сгенерированный код.
Симулируйте Simulink ™ модель и проверьте, что сгенерированный код путем сравнения результатов имитационной модели с мягким PLC results.The мягкие результаты PLC получен при помощи связи UA OPC.
Откройте simple_cosim.slx
файл
для
Simulink
модель.
% open_system('simple_cosim')
2. Симулируйте модель. Проверьте сгенерированный код путем сравнения результатов симуляции модели с мягким PLC cosimulation результаты.