OSDN Git Service

AD1
authortomohiro <tomohiro@DIP-ITO-W8-3301.am.yz.yamagata-u.ac.jp>
Wed, 19 Oct 2016 04:44:45 +0000 (13:44 +0900)
committertomohiro <tomohiro@DIP-ITO-W8-3301.am.yz.yamagata-u.ac.jp>
Wed, 19 Oct 2016 04:44:45 +0000 (13:44 +0900)
ITOManager4.3/README.txt
ITOManager4.3/application.xml
ITOManager4.3/src/main.js

index 0f1966a..d8b0f14 100644 (file)
@@ -1,20 +1,3 @@
-ITO manager 4.2は,PWMによる出力機能追加を目指したバージョンである\r
+ITO manager 4.3は,AD 1chだけの測定に特化したバージョン\r
 \r
-2016.8.19 PWMのBLLファイルを追加\r
-2016.8.19 PWMの出力デモコードを記述\r
-2016.8.20 矩形波と三角波のモジュールを追加\r
-2016.8.23 キノマクリエイト(Kinoma Create)とオシロスコープを使用してタイミングを調整\r
-\r
-○仕様\r
-・PWMの出力ピンは,28ピン,GNDは26ピン(シングルエンド)\r
-\r
-○結果\r
- PWMの出力は,3.3Vp-pであった.ピリオドの間隔は,80usであった.\r
-\r
- ○関連URL\r
- https://edu.yz.yamagata-u.ac.jp/Public/54299/c1/IoT/KinomaCreate/ITOmanager4.2/\r
\r
- 以前のバージョン\r
- 3.0: JS6ではなくxmlでコードを記述,Kinoma CreateのFirmwareのバージョンアップに伴い動作が不安定に4.0でJS6に移行した\r
- 4.0: xmlで記述したコードをJS6に移植\r
- 4.1: AD変換器のバグ修正に伴い大幅な修正
+2016.10.19 初期バージョンを作成\r
index a3d5304..e82f7a3 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<application xmlns="http://www.kinoma.com/kpr/application/1" id="itomanager4.2" program="src/main" title="ITOManager4.2">
+<application xmlns="http://www.kinoma.com/kpr/application/1" id="itomanager4.3" program="src/main" title="ITOManager4.3">
 
 </application>
index f0f817b..e33626b 100644 (file)
@@ -10,44 +10,25 @@ var temp=0;
 var counter=0;\r
 var nPeriodPWMCount = 0;\r
 var AD1=0;\r
-var AD2=0;\r
 var tAD1=0;\r
-var tAD2=0;\r
 var ttemp = 0;\r
 var cADC1=0;\r
-var cADC2=0;\r
 var ctemp=0;\r
 var bCompletedAD1 = 0;\r
-var bCompletedAD2 = 0;\r
-var bCompletedTemp = 0;\r
 var nEventID =0;\r
 var DIO1=0;\r
 var DIO2=0;\r
 var szCommand = "";\r
-var nADChannel = 1;\r
-var trianglevoltage = 0.0;\r
-var xPWMFreq = 0.0;\r
-var xPWMFreqPreSet = 0.1;\r
-var nPWMCount = 0;\r
-var xPWMBasisSinWaveValue = 0.0;\r
-var xPWMOutAmp = 3.3/2;\r
-var xPWMOutOffset =0.0;\r
-var nPWMMode = 1; //1:SineWave; 2:TriangleWave; 3:SquareWave\r
 \r
-var PWMPreset = new PWM();\r
-var PWMOut = new PWM();\r
+\r
 const deviceID = K4.deviceID;\r
 \r
 const nAnalogMeasureInterval = 50; //ms\r
 const nDataUploadInterval=30000; //ms\r
 const nGetCommandInterval=1000; //ms\r
 const nDisplayInterval=1000; //ms\r
-const nPWMInterval=40; //ms\r
-const xPWMOutMaxVoltage = 3.3; //V\r
-const xPWMOffsetVoltage = xPWMOutMaxVoltage/2; //V\r
 const nAccumAD1=4;\r
-const nAccumAD2=4;\r
-const nAccumTemp=4;\r
+\r
 //const protomode = "MieSAN";\r
 //const xAD1Gain = 1.99162; //-\r
 const protomode = "Basis";\r
@@ -60,13 +41,7 @@ const xErrorVoltageMin = 0.0; //V
 const xErrorTempMax = 100;//C\r
 const xErrorTempMin = -35;//C\r
 \r
-PWMPreset.xFrequency = 0.0;\r
-PWMPreset.xAmp = 0;\r
-PWMPreset.nPWMMode = 1;\r
-PWMPreset.xOffsetVoltage = 0.0;\r
 \r
-PWMSet(PWMPreset, PWMOut);\r
-PWMFreqSet(PWMPreset.xFrequency);\r
 \r
 log("DeiveID: " +deviceID +"\n");\r
 \r
@@ -92,11 +67,11 @@ mainCon.add(labelDevID);
 mainCon.add(labelControlMode);\r
 application.add(mainCon);\r
 \r
-// analogpins 37 -> 52, 38->51, 39->54\r
+// analogpins 37 -> 52\r
 \r
 Pins.invoke("setPinMux", {\r
     leftVoltage: 3.3, rightVoltage: 3.3,\r
-    leftPins: [3, 3, 0, 3, 0, 0, 0, 2],\r
+    leftPins: [0, 3, 0, 0, 0, 0, 0, 2],\r
     rightPins: [0, 0, 0, 0, 0, 0, 0, 0]\r
 });\r
 \r
@@ -108,18 +83,6 @@ Pins.invoke("setPinMux", {
                                                        AD1: { pin: 52 }\r
                                        }\r
                                        },\r
-                                       analogSensor2: {\r
-                                               require: "AD2",\r
-                                               pins: {\r
-                                                       AD2: { pin: 51 }\r
-                                       }\r
-                                       },\r
-                                       analogTemp: {\r
-                                               require: "LM61BIZ",\r
-                                               pins: {\r
-                                                       temperature1: { pin: 54 }\r
-                                       }\r
-                               },\r
                        DIO: {\r
                                        require: "DIO",\r
                                        pins: {\r
@@ -127,12 +90,6 @@ Pins.invoke("setPinMux", {
                                                DIO2: { pin: 6 }\r
                                        }\r
                        },\r
-                       pwmSensor: {\r
-                                               require: "PWM",\r
-                                       pins: {\r
-                                       pwm: { pin: 28 }\r
-                                               }\r
-                               },\r
                                ground: {\r
                                        pin: 58, type: "Ground"\r
                                        }\r
@@ -140,13 +97,7 @@ Pins.invoke("setPinMux", {
                                        , function(success) {\r
                                                 if (success){\r
                                                 log("Successed to Pin configure\n");\r
-                                               //Pins.repeat("/analogTemp/read", 50, value => TemperatureValueChanged(value));\r
-                                               //Pins.repeat("/analogSensor1/read", 3, value => Analog1ValueChanged(value));\r
-                                               //Pins.repeat("/analogSensor2/read", 3, value => Analog2ValueChanged(value));\r
-                                               //Pins.share("ws", {zeroconf: true, name: "analog-temperature"});\r
-                                               application.invoke(new Message("/AnalogMeasureTimer"));\r
-                                               application.invoke(new Message("/PWMTimer"));\r
-                                               //                   Pins.invoke("/pwmSensor/write", 0.5); // you should only pass in one number for an LED\r
+                                               Pins.repeat("/analogSensor1/read", 3, value => Analog1ValueChanged(value));\r
                                                 }else{\r
                                                 \r
                                                  log("Failed to configure\n");\r
@@ -161,22 +112,6 @@ Pins.invoke("setPinMux", {
                \r
 //--sub routine --                             \r
        \r
-function TemperatureValueChanged(value){\r
-               let xtemp1 = value.temperature1;\r
-               if (xtemp1 < xErrorTempMax && xtemp1 > xErrorTempMin) {\r
-                       ttemp = (ttemp * ctemp + xtemp1)/(ctemp+1);\r
-                       ctemp=ctemp+1;\r
-               }\r
-               if (ctemp==nAccumTemp){\r
-                       temp= ttemp;\r
-                       ctemp =0;\r
-                       log("temperature:"+temp.toFixed(3) + ' C AD1:'+AD1.toFixed(3)+'V AD2:'+AD2.toFixed(3)+'V\n');\r
-                       if ( bCompletedTemp==0){\r
-                               bCompletedTemp = 1;\r
-                               application.invoke(new Message("/KinomaDataUpload"));\r
-                        }\r
-               }                                       \r
-}\r
 \r
 function Analog1ValueChanged(value){\r
        let voltage = value.AD1;\r
@@ -192,128 +127,12 @@ function Analog1ValueChanged(value){
                        application.invoke(new Message("/KinomaDataUpload"));\r
         }\r
        }\r
-//     log("AD1:"+AD1.toFixed(3) + 'V AD2:'+AD2.toFixed(3) +'\n');\r
-}\r
-function Analog2ValueChanged(value){\r
-       let voltage = value.AD2;\r
-       if (voltage <= xErrorVoltageMax && voltage >= xErrorVoltageMin) {\r
-               tAD2 = (tAD2 * cADC2 +voltage)/(cADC2+1);\r
-               cADC2 = cADC2+1;\r
-       }\r
-       if (cADC2==nAccumAD2){\r
-               AD2= tAD2;\r
-               cADC2 = 0;\r
-               if ( bCompletedAD2==0){\r
-                       bCompletedAD2 = 1;\r
-                       application.invoke(new Message("/KinomaDataUpload"));\r
-               }\r
-       }\r
-//     log('AD2:'+AD2.toFixed(3) +'\n');\r
+//     log("AD1:"+AD1.toFixed(3) + 'V\n');\r
 }\r
 \r
-function PWMSet(value1, value2){\r
-       value2 = value1;\r
-}\r
-\r
-function PWMFreqSet(value){\r
-       xPWMFreq = value;\r
-               nPeriodPWMCount = Math.round(1.0/value/(nPWMInterval/1000));\r
-}\r
-\r
-\r
-function PWMOut(value){\r
-       let voltage=0.0;\r
-       if(nPWMMode ==1 ){\r
-       //Sinewave\r
-               voltage = value*xPWMOutAmp + xPWMOutOffset;\r
-       //      log("Founction Voltage:"+voltage);\r
-       }\r
-       \r
-       if(nPWMMode ==3 || nPWMMode == 2){\r
-       //SquareWave Generate ; duty 50% only\r
-               let sqvoltage\r
-               if (value >=0 && nPWMCount <= nPeriodPWMCount*0.5 ){\r
-                       sqvoltage = 1;\r
-               }else{\r
-                       sqvoltage =-1;\r
-               } \r
-               if(nPWMMode == 3){\r
-               //SquearWave\r
-                       voltage = sqvoltage*xPWMOutAmp + xPWMOutOffset;\r
-               }\r
-               if(nPWMMode == 2){\r
-               //TriangleWave\r
-                       trianglevoltage = trianglevoltage + sqvoltage*xPWMOutAmp*4/nPeriodPWMCount;\r
-                       //log("tr vol:"+trianglevoltage);\r
-                       voltage = trianglevoltage + xPWMOutOffset  - xPWMOutAmp;\r
-               }\r
-       }\r
-\r
-               \r
-       let pwmVoltage = voltage + xPWMOffsetVoltage;\r
-       //log("PWM Voltage:"+pwmVoltage);\r
-       let xPwmValue = pwmVoltage/3.3;\r
-       //log("PWM Value:"+xPwmValue);\r
-       Pins.invoke("/pwmSensor/write", xPwmValue); \r
-}\r
 \r
 \r
 //--handler--\r
-Handler.bind("/AnalogMeasureTimer", {\r
-    onInvoke: function(handler, message){\r
-    log("TimeAnalog \n");\r
-    if (nADChannel==1){\r
-               Pins.invoke("/analogTemp/read", value => TemperatureValueChanged(value));\r
-               \r
-               Pins.invoke("setPinMux", {\r
-                leftVoltage: 3.3, rightVoltage: 3.3,\r
-                 leftPins: [3, 0, 0, 0, 0, 0, 0, 2],\r
-                 rightPins: [0, 0, 0, 0, 0, 0, 0, 0]\r
-               });\r
-       }\r
-       if (nADChannel==2){\r
-               Pins.invoke("/analogSensor1/read", value => Analog1ValueChanged(value));\r
-               \r
-               Pins.invoke("setPinMux", {\r
-                leftVoltage: 3.3, rightVoltage: 3.3,\r
-                 leftPins: [0, 0, 0, 3, 0, 0, 0, 2],\r
-                 rightPins: [0, 0, 0, 0, 0, 0, 0, 0]\r
-               });\r
-       }\r
-       if (nADChannel==3){\r
-                Pins.invoke("/analogSensor2/read", value => Analog2ValueChanged(value));\r
-                \r
-                Pins.invoke("setPinMux", {\r
-                leftVoltage: 3.3, rightVoltage: 3.3,\r
-                 leftPins: [0, 3, 0, 0, 0, 0, 0, 2],\r
-                 rightPins: [0, 0, 0, 0, 0, 0, 0, 0]\r
-               });\r
-       }\r
-        nADChannel = nADChannel +1;\r
-     if (nADChannel > 3){\r
-       nADChannel = 1;\r
-     } \r
-     counter=counter+1;\r
-   handler.invoke( new Message("/delayAnalog?duration=" +nAnalogMeasureInterval ));\r
-    },\r
-    onComplete: function(handler, message){\r
-     log("Time2 \n");\r
-     //    handler.invoke( new Message("/delay?duration=" +nDataUploadInterval ));\r
-    }\r
-});\r
-\r
-Handler.bind("/delayAnalog", {\r
-    onInvoke: function(handler, message){\r
-       let query = parseQuery( message.query );\r
-               let duration = query.duration;\r
-        handler.wait(duration); \r
-    },\r
-    onComplete: function(handler, message){\r
-        handler.invoke(new Message("/AnalogMeasureTimer"));\r
-    }\r
-});\r
-\r
-\r
 \r
 Handler.bind("/UploadTimer", {\r
     onInvoke: function(handler, message){\r
@@ -363,7 +182,7 @@ Handler.bind("/delayCommand", {
 \r
 Handler.bind("/DisplayTimer", {\r
     onInvoke: function(handler, message){\r
-    label1.string = "Temperature:"+temp.toFixed(1) + ' C AD1:'+AD1.toFixed(3)+' V AD2:'+AD2.toFixed(3)+' V';\r
+    label1.string = "AD1:"+AD1.toFixed(3)+' V';\r
      label2.string = "Counter:"+counter;\r
      label3.string = "DIO1: " + DIO1 + "  DIO2: " + DIO2;\r
     handler.invoke( new Message("/delayDisplay?duration=" +nDisplayInterval ));\r
@@ -389,11 +208,9 @@ Handler.bind("/delayDisplay", {
 \r
 Handler.bind("/KinomaDataUpload", {\r
                        onInvoke: function(handler, message){\r
-                       if (bCompletedAD1 == 1 && bCompletedAD2 == 1 && bCompletedTemp == 1){\r
+                       if (bCompletedAD1 == 1 ){\r
                                var uri = "http://a.yamagata-u.ac.jp/amenity/network/M2M/KinomaDataReciever.aspx?DeviceID="+deviceID;\r
                                uri = uri + "&AI1=" + AD1;\r
-                               uri = uri + "&AI2=" + AD2;\r
-                               uri = uri + "&AI3=" + temp;\r
                                uri = uri + "&pm=" + protomode;\r
                                uri = uri + "&EventID=" + nEventID;\r
                                handler.invoke( new Message( uri ), Message.TEXT );\r
@@ -456,34 +273,3 @@ Handler.bind("/KinomaGetCommand", {
        }\r
 );\r
        \r
-Handler.bind("/PWMTimer", {\r
-    onInvoke: function(handler, message){\r
-       xPWMBasisSinWaveValue = Math.sin(nPWMCount/nPeriodPWMCount*Math.PI*2);\r
-//     log(nPWMCount +" : "+ xPWMBasisSinWaveValue)\r
-    nPWMCount = nPWMCount +1;\r
-    PWMOut(xPWMBasisSinWaveValue);\r
-    \r
-    if (nPWMCount >= nPeriodPWMCount) {\r
-       //Reset Counter\r
-       nPWMCount = 0;\r
-       trianglevoltage = 0.0;  \r
-    }\r
-    handler.invoke( new Message("/delayPWM?duration=" +(nPWMInterval-8) ));\r
-       log("TimerPWM " + nPWMCount + "\n");\r
-\r
-    },\r
-    onComplete: function(handler, message){\r
-\r
-    }\r
-});\r
-\r
-Handler.bind("/delayPWM", {\r
-    onInvoke: function(handler, message){\r
-       let query = parseQuery( message.query );\r
-               let duration = query.duration;\r
-        handler.wait(duration); \r
-    },\r
-    onComplete: function(handler, message){\r
-        handler.invoke(new Message("/PWMTimer"));\r
-    }\r
-});
\ No newline at end of file