====== Analog Input and Temperature Sensing ======
Let's do temperature sensing and analog input using the [[https://comfiletech.com/categories/etc/field-i-o.html|MODPORT Field I/O Controller]].
{{ :comfilepi:codesys:modportchart.png?nolink |}}
As a demonstration, connect a potentiometer and a PT100 sensor.
{{ :comfilepi:codesys:pictureformodportanalog.jpg?nolink |}}
1. Add channels. See the [[https://comfiletech.com/content/etc/modport_manual_e.pdf|MODPORT user's manual]]
{{ :comfilepi:codesys:comfilemodportslaveaddress2.png?nolink |}}
{{ :comfilepi:codesys:addchforhadin.png?nolink |}}
{{ :comfilepi:codesys:thrt4adr.jpg?nolink |}}
{{ :comfilepi:codesys:thrt4adrsetting.png?nolink |}}
The final state should look like this
{{ :comfilepi:codesys:channelformodportadthin.png?nolink |}}
2. Add a POU for MODPORT access.
{{ :comfilepi:codesys:addpouformodport.png?nolink |}}
{{ :comfilepi:codesys:addpou.png?nolink |}}
{{ :comfilepi:codesys:finalstatepou.png?nolink |}}
3. Programming using the ST language.
{{ :comfilepi:codesys:pouprogramming.png?nolink |}}
PROGRAM MODPORT_PROC
VAR
HAD0_VALUE : DWORD;
TH0_VALUE : REAL;
TH_ORG : WORD;
END_VAR
HAD0_VALUE := %IW1 * 65536 + %IW2;
TH_ORG := %IW3;
IF (TH_ORG AND 16#8000) = 16#8000 THEN
TH_ORG := TH_ORG - 16#8000;
TH0_VALUE := TH_ORG/10;
TH0_VALUE := -TH0_VALUE;
ELSE
TH0_VALUE := TH_ORG/10;
END_IF
4. And create a simple visualization.
{{ :comfilepi:codesys:makesomvisu.png?nolink |}}
Check the result.