====== 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.
Download the project file : {{ :comfilepi:codesys:modport_adc.zip |}} [[comfilepi:codesys:index|CODESYS with the ComfilePi]]