Baca INT 64 bit di SCADA?

seperti kita ketahui, kebanyakan SCADA belum support tipe data Integer 64 bit (max value: 9,223,372,036,854,775,807), lalu gimana kalau kita mau baca dari device yang menyediakan data ini? contohnya pada power meter Schneider untuk data KWH

berikut trik nya:

  1. Siapkan 1 variable Real / floating 32bit – sebagai contoh kita kasih nama Energy)
  2. Siapkan 4 variable INT (16bit) dimana nilai tersebut  didapat dari register modbus PM yaitu 43204, 43205, 43206, 43207) – sebagai contoh kita kasih nama RAW_1 dan RAW_2, RAW_3, dan RAW_4

Energy = (raw_4 * 281474976710656) + (raw_3 * 4294967296) + (raw_2 *  65536) + raw_1

Komunikasi DATA [1] – Analogi Dasar

Komunikasi Data

apa itu komunikasi data? sebelum membahas komunikasi data, mari kita pahami dulu apa itu komunikasi. Komunikasi adalah proses menyampaikan informasi/pesan dari satu titik ke titik lainnya, atau dari satu orang ke orang lainnya, atau dari satu tempat ke tempat lainnya.

  • Manusia berkomunikasi dengan cara berbicara untuk menyampaikan informasi ke manusia lainnya.
  • Pada jaman dahulu kala, suku indian menyampaikan pesan/informasi ke lokasi yang jauh menggunakan asap.
  • Pada tahun 1800-1900an manusia berkomunikasi jarak jauh menggunakan Telegraph

Mengapa Dibutuhkan Komunikasi?

Apa syarat terjadinya komunikasi?

Secara mendasar kebutuhannya adalah:

  1. Pembicara
  2. medium/media/perantara
  3. Pendengar

Sebagai analogi, misal ada dua orang berkomunikasi, maka salah satu menjadi pembicara dan satu nya akan menjadi pendengar (Hal ini kita sebut komunikasi half duplex). Karena manusia hanya bisa melakukan satu pekerjaan dalam satu waktu yaitu mendengar atau berbicara. Kemudian media berkomunikasi mereka adalah udara, jika mereka berbicara langsung.  Kemudian misal dia menggunakan alat semisal kaleng dengan tali, maka mediumnya adalah kaleng tersebut.

Cara koneksi ke PLC Panasonic dari Citect SCADA

Jadi, awalnya ini pertama saya ketemu sama PLC murmer yang tidak terlalu common, dan saya juga tertarik untuk coba komunikasi ngambil data dari PLC ini. di sisi PLC cukup di setting di Basic Communication Information dan kemudian bisa assign IP address disini. yang kedua di User Connection information setting 1…16 yang artinya ada 16 jenis koneksi yang bisa dilakukan ke PLC ini dengan port dan setting yang berbeda. kita cukup atur satu saja.

pertama kita set dulu IP nya di Basic Communication Information seperti gambar berikut:

Kemudian masuk ke setting User connection information setting 1 dan setting seperti ini atau sesuai kebutuhan. terutama di PORT dan communication Type yaitu menggunakan UDP atau TCP. (kita set menggunakan UDP)

Kemudian……..

READ MORE

Cara Reset password / Application Unity Pro Modicon M340

Unity Pro atau Control Expert ada 2 Jenis proteksi yaitu:

  1. Program Logic (section) protection
  2. Project / Application & Controller protection

Untuk yang poin 1, kita masih bisa upload dan membuka project, namun tidak bisa membaca dan memodifikasi, atau bisa membaca tapi tidak bisa memodifkasi.

Untuk yang poin 2, setiap koneksi ke PLC akan diproteksi. Jadi jika tidak punya backup dan passwordnya tidak bisa di upload atau download (timpa).

nah untuk masalah pada poin 2, jika kita menggunakan PLC M340 masih ada cara untuk menimpa proggramnya. caranya sebagai berikut:

1. Pastikan PLC dalam keadaan off
2. Cabut SD Card di CPU M340
3. Power up PLC, dan pastikan SDCard tidak terpasang, dan indikasi ERR menyala merah blinking
4. Pasang SDCard
5. Connect dari Unity Pro ke PLC menggunakan USB
6. Transfer project to PLC (download to PLC)
7. Selesai

Ecostruxure Operator Terminal Expert (EOTE) former of Vijeo XD

Download Link Ecostruxure Operator Terminal Expert:

this software is future replacement of Vijeo Designer. this software previously named as Vijeo XD then changed to EOTE or Operator Terminal Expert

EOTE Communication protocol support:

  • DF1
  • DH485
  • Ethernet/IP
  • Uni-Telway
  • Modbus TCP master
  • Modbus SIO master
  • PacDrive
  • CS/CJ/NJ series Ethernet/IP
  • Modbus TCP slave
  • Modbus SIO slave
  • Zelio Logic
  • Modbus SIO ASCII master
  • Q/QnA Series Ethernet
  • Q series CPU direct
  • Q/QnA series serial
  • Q series QnU CPU Ethernet
  • FX series CPU direct
  • FX series Ethernet
  • FX series computer link
  • IQ-R/F series Ethernet
  • Simatic S7 MPI direct
  • Simatic S7 Ethernet
  • CS/CJ series HOST link
  • CS/CJ series Ethernet
  • ROC Plus SIO
  • ROC Plus Ethernet
  • CANopen slave
  • Profibus DP slave
  • SoMachine network 

Ecostruxure Machine Expert

this installer only contain downloader installer you need good internet connection to install it, it may take whole day to complete if you have poor internet connection.

if you find Machine Expert Basic (Modicon M221) you can download from this link:

Node-Red ~ Modbus Floating Point Convert (Float32 / Real)

this function script is used to convert your 2 words into Float32bit

/* Converts from an number, string, buffer or array representing an IEEE-754 value
 to a javascript float.
 The following may be given in msg.payload:
 A string representing a number, which may be hex or binary
 examples, "1735" "0x02045789" 0b01000000010010010000111111011011
 An integer value
 A two element array or buffer of 16 bit values, less significant byte first.
 A four element array or buffer of 8 bit values, most significant byte first.
 Source: https://flows.nodered.org/flow/359ead34237b7ab6ec0465ee85a34b62
 */
 // first make a number from the given payload if necessary
 let intValue;
 if (typeof msg.payload === "number") 
{
 intValue = msg.payload;
 } else if (typeof msg.payload === "string") {
 intValue = Number(msg.payload);
 } else if (msg.payload.length == 2) {
 // two int array or buffer
 intValue = (msg.payload[1] << 16) + msg.payload[0];
 } else if (msg.payload.length == 4) {
 // four byte array or buffer
 intValue = (((((msg.payload[0] << 8) + msg.payload[1]) << 8) + msg.payload[2]) <<
 8) + msg.payload[3];
 } else {
 node.warn("Unrecognised payload type or length");
 } 
 msg.payload = Int2Float32(intValue);
 msg.payload = msg.payload.toFixed(1);
 return msg;
 function Int2Float32(bytes) {
 var sign = (bytes & 0x80000000) ? -1 : 1;
 var exponent = ((bytes >> 23) & 0xFF) - 127;
 var significand = (bytes & ~(-1 << 23));
 if (exponent == 128)
 return sign * ((significand) ? Number.NaN : Number.POSITIVE_INFINITY);
 if (exponent == -127) {
 if (significand === 0) return sign * 0.0;
 exponent = -126;
 significand /= (1 << 22);
 } else significand = (significand | (1 << 23)) / (1 << 23);
 return sign * significand * Math.pow(2, exponent);
 }