
Я посмотрел код LaTex из этого поста:Блок-схемы с использованием Tikz
Мой вопрос в том, где я могу получить описание: ввода, суммы, блока,... Я хочу использовать умножение, но не могу нигде найти документацию по этим элементам.
EDIT: Я получил ответ, откуда взялись эти блоки, теперь я хотел бы спросить, есть ли какие-то готовые блоки, которые я могу импортировать. Мне действительно сложно рисовать в LaTex, и я не чувствую себя способным создавать свои собственные блоки.
\tikzset{
block/.style = {draw, fill=white, rectangle, minimum height=3em, minimum width=3em},
tmp/.style = {coordinate},
sum/.style= {draw, fill=white, circle, node distance=1cm},
input/.style = {coordinate},
output/.style= {coordinate},
pinstyle/.style = {pin edge={to-,thin,black}
}
}
\begin{tikzpicture}[auto, node distance=2cm,>=latex']
\node [input, name=rinput] (rinput) {};
\node [sum, right of=rinput] (sum1) {};
\node [block, right of=sum1] (controller) {$k_{p\beta}$};
\node [block, above of=controller,node distance=1.3cm] (up){$\frac{k_{i\beta}}{s}$};
\node [block, below of=controller,node distance=1.3cm] (rate) {$sk_{d\beta}$};
\node [sum, right of=controller,node distance=2cm] (sum2) {};
\node [block, above = 2cm of sum2](extra){$\frac{1}{\alpha_{\beta2}}$}; %
\node [block, right of=sum2,node distance=2cm] (system)
{$\frac{a_{\beta 2}}{s+a_{\beta 1}}$};
\node [output, right of=system, node distance=2cm] (output) {};
\node [tmp, below of=controller] (tmp1){$H(s)$};
\draw [->] (rinput) -- node{$R(s)$} (sum1);
\draw [->] (sum1) --node[name=z,anchor=north]{$E(s)$} (controller);
\draw [->] (controller) -- (sum2);
\draw [->] (sum2) -- node{$U(s)$} (system);
\draw [->] (system) -- node [name=y] {$Y(s)$}(output);
\draw [->] (z) |- (rate);
\draw [->] (rate) -| (sum2);
\draw [->] (z) |- (up);
\draw [->] (up) -| (sum2);
\draw [->] (y) |- (tmp1)-| node[pos=0.99] {$-$} (sum1);
\draw [->] (extra)--(sum2);
\draw [->] ($(0,1.5cm)+(extra)$)node[above]{$d_{\beta 2}$} -- (extra);
\end{tikzpicture}
решение1
Если я правильно понял ваш вопрос, вас на самом деле интересует не схема ПИ-регулятора, а то, как спроектировать некоторые элементы... Я постараюсь ответить в два этапа:
модернизируйте свой MWE с помощью синтаксиса, который предпочтительнее сейчас (если вы внимательно сравните оба решения, вы легко найдете различия)
предложить, как спроектировать некоторые «строительные блоки» для схем управления чертежами
Первая редакция вашего MWE:
\documentclass[border=3mm,
tikz]{standalone}
\usetikzlibrary{arrows,
calc,
quotes,
positioning,
babel} % <--- added for
\tikzset{
block/.style = {rectangle, draw, %fill=white,
minimum size=3em},
tmp/.style = {coordinate},
sum/.style = {circle, draw, minimum size=1ex, inner sep=1pt,
node contents={} },
dot/.style = {sum, fill=black, minimum size=2pt,
node contents={} },
input/.style = {coordinate},
output/.style = {coordinate},
pinstyle/.style = {pin edge={to-,thin,black}}
}
\begin{document}
\begin{tikzpicture}[auto,
node distance = 3mm and 13mm,
> = latex']
\coordinate (input) at (0,0);
\node (sum1) [sum, right=of input];
\node (input') [dot, right=of sum1];
\node (cntrl) [block, right=of input'] {$k_{p\beta}$};
\node (up) [block, above=of cntrl] {$\frac{k_{i\beta}}{s}$};
\node (rate) [block, below=of cntrl] {$sk_{d\beta}$};
\node (sum2) [sum, right=of cntrl];
\node (extra)[block,
above=of up.north -| sum2] {$\frac{1}{\alpha_{\beta2}}$}; %
\node (extra') [above=of extra] {$d_{\beta 2}$};
\node (system) [block, right=of sum2] {$\frac{a_{\beta 2}}{s+a_{\beta 1}}$};
\coordinate[right=of system] (output);
\node [tmp, below=of cntrl] (tmp1) {$H(s)$};
%
\draw[->] (input) to ["$R(s)$"] (sum1)
(sum1) edge["$E(s)$"] (input')
(input') edge (cntrl)
(cntrl) edge (sum2)
(sum2) edge["$U(s)$"] (system)
(system) edge["$Y(s)$"] (output)
(extra') edge (extra);
\draw[->] (input') |- (up);
\draw[->] (input') |- (rate);
\draw[->] (up) -| (sum2);
\draw[->] (rate) -| (sum2);
\draw (extra) -- (extra |- up);
\draw[->] ($(system.east)!0.5!(output)$) node[dot] -- + (0,-22mm) -| (sum1);
\end{tikzpicture}
\end{document}
Уже здесь вы можете наблюдать, как спроектированы sum
и dot
. Символы для суммирования, а также для умножения не стандартизированы (на самом деле, они стандартизированы, но используются редко ...). Поэтому вам нужно сначала решить, как вы хотите, чтобы они выглядели. Ниже приведены примеры тех символов, которые довольно распространены в обработке сигналов и в управлении.
\documentclass[border=1mm,
tikz,{standalone}
\usetikzlibrary{arrows,
calc,
quotes,
positioning,
babel}
\begin{document}
\begin{tikzpicture}[
shorten <>/.style = {shorten >=#1, shorten <=#1},
mlt-s/.style={fill=#1, % <-- symb. for multiplication, square
rectangle, draw, minimum size=6mm,
path picture={\draw[very thick,shorten <>=1.5mm]
(path picture bounding box.north west)edge(path picture bounding box.south east)
(path picture bounding box.south west) -- (path picture bounding box.north east);
},% end of node contents
node contents={}},
mlt-c/.style={fill=#1, % <-- symb. for multiplication, circle
circle, draw, minimum size=6mm,
path picture={\draw[very thick,shorten <>=2mm]
(path picture bounding box.north west)edge(path picture bounding box.south east)
(path picture bounding box.south west) -- (path picture bounding box.north east);
},% end of node contents
node contents={}},
sum/.style={fill=#1, % <-- symb. for summation
circle, draw, minimum size=6mm,
path picture={\draw[very thick,shorten <>=1mm]
(path picture bounding box.north)edge(path picture bounding box.south)
(path picture bounding box.west) -- (path picture bounding box.east);
},% end of node contents
node contents={}},
]
\node (a) [sum=gray!10];
\node (b) [mlt-s=gray!10,right=of a];
\node (c) [mlt-c=gray!20,right=of b];
\draw (a) -- (b);
\end{tikzpicture}
\end{document}
Использование этих символов показано на примере изображения. Примечание: поскольку эти символы не имеют текста, они спроектированы так, что пустой текст является частью определения узла, следовательно, пустые фигурные скобки не нужны. Это требует, чтобы имена узлов были до определения узла (см. код выше).
Редактировать:Использование библиотеки TikZ quotes
чувствительно к используемым пакетам babel. Для некоторых языков (словенский — один из них) измените catcode на кавычки. Для устранения этой проблемы разработана библиотека babel
. Поэтому для документов на языке, отличном от английского, разумной мерой предосторожности будет добавить ее, как это сейчас сделано в обоих приведенных выше кодах.