Sunday, 3 May 2009

Wiring the -smart- way for programming

There are many ways to design a circuit or a PLC program. Many peoplebelieve that if the design works, then it's ok. Perhaps this is truebut why not do it with failures in mind. After all, we want the machine operators, us, and even the boss to be proud of our work, don'twe? (I hope your thinking -yes- , even about the boss being proud, butthey probably won't say anything!)
Ok, let's consider a conveyor running through our monster-sized factory with multiple detection sensors looking for various product defects. If any one of the sensors is activated, the conveying systemshould shut-down so we can examine the manufacturing fault. (after allbad product is worse than no product... unless you're M**rosoft...justkidding!)
If you think quickly, it would seem simple. Just use multiple normallyopen sensors wired in parallel with each other. The plc ladder logic program would look like this:
sensor A conveyor off output
---- ----------------( )---
sensor B
---- ----
sensor C
---- ----
sensor D
---- ----
Here we can see that if any of the sensors should detect a defectthe sensor will turn on its output and the plc input should close, the conveyor off output will turn on and disable the conveyor. We can addmore sensors if we wanted to. It's basically an OR ladder. In otherwords, if sensor a -OR- b -OR- c -OR- d should turn-on, the conveyoroutput coil will energize and disable the conveyor. Seems ok, little chance of a problem... right? Wrong! You're probably thinking "What, is he CRAZY?" I might be, but not in this case. Read on.
What happens if we get a cable failure? (not like cable tv going out again but rather a broken wire) Believe it or not, -open circuit-failures are the most common problems that happen. Examples of opencircuit failures include-- blown fuses, broken wire connections, loosewires, failed switches, failed sensors, fried relay contacts... andthe list goes on.
Now that we understand the theory, let's redesign to be more on-guardfor such things. Suppose sensor B (in the example above) fails open.If a bad product appears we want its output to close(turn on) but nothing would happen and the conveyor would continue on its merry way.(Does that explain buggy software??) How about if a wire connectingsensor C to the PLC input terminal breaks? Then sensor C is of no usesince it won't stop the conveyor! Ideally, the system is tested regularly during routine maintenance and the problem would be discovered... but what if maintenance is missed??(never happens in thereal world, right?!?)
Here's a -better- solution. Lets replace the normally open sensorswith normally closed types. (i.e. their output is ON unless there's aproblem) Here's our modified plc ladder program to reflect a change:
sensor A conveyor off output
---- ----------------( )---
sensor B
---- ----
sensor C
---- ----
sensor D
---- ----
Now, if we get a cable break or another -open circuit- fault, theconveyor off output will energize and the conveyor will stop. Here, wemight get false "conveyor offs" because of a broken wire, but it'sbetter than not being able to turn the conveyor off in a bad productsituation.
Before you say that it should be a series ladder rung (for you expertsout there), remember that the physical sensors are normally closed.So, when there's no fault, they are making the ladder false.
Although the conveyor example might not be too realistic for most ofus, it shows the general theory of smart design. Of course it'sstill possible to get a failure but it's statistically smarter than itwas before. When doing your design or programming, try to think aboutthe application as much as possible (sounds obvious). Eliminate thebest chances of failure and everyone will be happy in the end!So, do I still seem crazy? Maybe so...
And remember, this example is not intended for HUMAN safety! For thatyou want to design differently.

Tuesday, 9 September 2008

Program your PLC to REMEMBER status

Imagine if you will, a relay that doesn't forget. Its memory lasts for months or even years. This relay is called a "retentive relay" because it "retains" its status after a power loss. Confused? Read on...

Here's a typical scene:
Our parts conveying center is operating as usual. At the end of the  day we shutdown the system BUT we don't want to remove all the parts currently in process. In other words, when we come back to the factory in the morning, we want to just power up the machine and continue where we left yesterday. We don't want to go through a reset cycle as that would take time away from our production. How can we do it? 

Well, we must remember the status of our conveying system... was it  moving up or down? Here's what our conveying system looks like:
  _
|  0      |{-}<--- limit switch (a)
| 0 0   |
|  0      |
|          |  
|          | <---conveying system  
|          |  
|          |  
|          |++++++ <--- tray moves up to (a), then back down to (b)
|          |  
|   0     |     
| 0o0  |<--- motor
|   0     |
|          | {-}<--- limit switch (b)  
-     
A tray starts at the bottom (limit switch b) and is loaded with parts. After the parts are placed, the motor spins and the tray moves until it hits the top (limit switch a). There the parts are unloaded. After they are unloaded, the motor spins in the opposite direction until the tray hits the bottom (limit switch b). Then the cycle repeats. Let's solve the project!  We'll first assign plc addresses to our physical inputs/outputs. INPUTS limit switch (a) = 0000 limit switch (b) = 0001 OUTPUTS motor spin up = 0500 motor spin down = 0501      The ladder logic will look like this: ((MOTOR SPIN UP SECTION))   0001       0000    0500 ---| |---|---|/|-----( )--                |   0500   | ---| |---+

((MOTOR SPIN DOWN SECTION))
  0000       0001    0501
---| |---|---|/|-----( )--
               |
  0501    |
---| |---+

If the tray starts at the bottom, limit switch b (0001) is physically on and limit switch a (0000) is physically off. So, logic flows to the motor (0500) and it spins, moving the tray up. Notice that 0500 is latched on now and the limit switch b (0001) becomes physically off.

Eventually the tray hits the top limit switch a (0000) which unlatches 0500 and forces (motor spin down) 0501 to turn on. When the tray goes down enough to hit limit switch b (0001), the cycle will repeat.

BUT, if we lose power and the tray is somewhere between limit switches a and b, the latch on either 0500 or 0501 will be lost when power to the PLC is returned. In that case we need a "homing button" to return the tray to a "home" position. What if we don't want the tray to return home, but rather we want it to continue in the direction it was going before we lost power? In that case we need to use "retentive relays". Retentive relays simply retain their status when when the plc powers off and then back on again. So, if the relay was off when the power was lost, it will be off when the power returns. And, if the relay was on when the power was lost then it will again be on when the power returns.

Typically, a plc has internal utility relays that can be made to be retentive or not. Most will not have a function to make the real world outputs retentive. So, let's then modify the program to include retentive internal utility relays. In our example, we'll use two and they'll be addressed as 1000 and 1001.

INTERNAL RELAYS
retentive relay (c) = 1000
retentive relay (d) = 1001
INPUTS
limit switch (a) = 0000
limit switch (b) = 0001
OUTPUTS
motor spin up = 0500
motor spin down = 0501 
   
The ladder logic will NOW look like this:

((MOTOR SPIN UP SECTION))
  0001       0000    1000
---| |---|---|/|-----( )--
               |
  1000   |
---| |---+
  1000                     0500
---| |---------------( )--  
   
((MOTOR SPIN DOWN SECTION))
  0000       0001    1001
---| |---|---|/|-----( )--
               |
  1001    |
---| |---+ 
  1001                     0501
---| |---------------( )--  
   
So, now if the power is lost and then returned, 1000 and 1001 will retain their status as just before power was lost. Then the motor will continue moving in the direction it was going before the power loss.

Monday, 1 September 2008

LOWONGAN KERJA DI PERTAMINA

KESEMPATAN KERJA PT. PERTAMINA (PERSERO)

Dalam rangka memenuhi kebutuhan pekerja di lingkungan Daerah Operasi Unit Pengolahan (UP) II, III, IV, V & VII PT.PERTAMINA (PERSERO) membutuhkan 201 orang lulusan Diploma 3/Sederajat untuk dipekerjakan sebagai Operator dan Teknisi Kilang dengan kriteria sebagai berikut:

PERSYARATAN UMUM :

1. Jenis kelamin laki-laki; Status belum menikah bagi pelamar dari luar Pertamina, kecuali bagi pelamar dari pekerja outsourcing Pertamina.

2. Pendidikan terakhir D3 jurusan Teknik Kimia (TK), Analis Kimia (AK), Teknik Listrik – Arus Kuat (TLA), Mesin (TM), Instrumen/Elektroni ka (TIE), Lingkungan (TL), Teknik Pengolahan Migas (TPM).

3. Bagi pelamar dari pekerja outsourcing Pertamina, minimal pengalaman kerja 3 tahun di Pertamina UP tujuan lamaran.

4. IPK minimal 2.75.

5. Usia maksimal 24 tahun per 01/01/2008 bagi pelamar dari luar Pertamina, atau maksimal 32 tahun per 01/01/2008 bagi pelamar dari pekerja outsourcing Pertamina.

6. Tinggi badan minimal 160 cm.

7. Tercatat sebagai pencari kerja di Kantor Dinas Tenaga Kerja (Disnaker) setempat.

8. Bebas narkoba.

9. Berbadan sehat, tidak buta warna, dan diutamakan tidak berkaca mata/contact lens.

10. Bersedia ditempatkan di seluruh wilayah operasi PT. PERTAMINA (PERSERO).

11. Lulus seluruh tahapan seleksi.

Bagi pelamar yang memenuhi kriteria tersebut di atas, dapat mengajukan surat lamaran dengan melampirkan dokumen :

a. Daftar Riwayat Hidup
b. Copy ijazah D3 & SMA/sederajat yang telah dilegalisir
c. Copy transkrip nilai yang telah dilegalisir oleh pejabat berwenang
d. Copy akte kelahiran/surat kenal lahir dari instansi berwenang
e. Surat Keterangan Catatan Kepolisian (SKCK) dari Kepolisian setempat
f. Surat Pernyataan Diri Bebas Narkoba di atas materai Rp.6.000,-
g. Copy KTP/SIM yang masih berlaku
h. Copy Kartu Pencari Kerja (Kartu Kuning/Hijau) yang masih berlaku
i. 3 (tiga) lembar pas foto terbaru ukuran 4 x 6 (berwarna)
j. Alamat untuk surat panggilan (alamat terakhir dan kode pos).

Alamat lamaran :

Proses seleksi akan dilaksanakan di 5 (lima) wilayah Unit Pengolahan, yaitu: UP II–Dumai, UP III–Plaju, UP IV–Cilacap, UP V–Balikpapan, dan UP VII–Sorong, dan sekitarnya atau di tempat lain yang akan ditentukan kemudian.
Pelamar agar mengirimkan lamaran ke wilayah Unit Pengolahan terdekat dengan domisili/daerah asalnya.

Lamaran harus dikirimkan melalui Pos dalam amplop tertutup (pelamar t id ak boleh menyampaikan langsung atau melalui perantara) dan dilalamatkan kepada:

1. Team Rekrutasi
P.O.BOX 1122 Pekanbaru

2. Tim Rekrutasi

PO BOX 1111 Palembang 3000

3. Tim Rekrutasi Pertamina UP IV Cilacap

PO BOX 2008 Cilacap 53200

4. Tim Rekrutasi

PO BOX NO. 634, Balikpapan 76100

5. Tim Rekrutasi Pertamina UP VII Sorong

PO BOX 283, Sorong

Pada sudut kiri atas amplop lamaran, cantumkan kode jurusan bagi pelamar dari luar Pertamina, atau “OS” bagi pelamar dari pekerja outsourcing Pertamina.

Lamaran selambat-lambatnya diterima tanggal: 30 September 2008 (stempel pos).
Hanya pelamar yang memenuhi kriteria di atas yang akan dipanggil untuk mengikuti tes/seleksi dan t id ak dikenakan biaya apapun (tanpa biaya).
Lamaran yang disampaikan sebelum pengumuman ini t id ak akan diproses, dan surat lamaran yang telah dikirim t id ak akan dikembalikan.
Informasi lebih lanjut agar menghubungi UP tujuan lamaran atau Disnaker wilayah setempat.
Keputusan untuk memanggil pelamar dan penentuan seleksi merupakan hak Tim Rekrutasi dan tidak dapat diganggu gugat.

Monday, 28 July 2008

Lowongan Kerja di PT PLN P3BS

PENDAFTARAN REKRUTMEN PEGAWAI

PT PLN (Persero) dengan visi diakui sebagai perusahaan kelas dunia yang bertumbuh-kembang, unggul dan tepercaya dengan bertumpu pada potensi insani, membuka kesempatan bagi Generasi Muda terbaik untuk bergabung dan mengembangkan karir menjadi Pegawai PT PLN (Persero) Penyaluran dan Pusat Pengatur Beban Sumatera (P3BS) sebagai:

TEKNISI PEKERJAAN DALAM KEADAAN BERTEGANGAN (PDKB)
A. PERSYARATAN FISIK

1. Jenis Kelamin : Laki-laki, belum menikah.
2. Usia : Maksimal 22 Tahun (Kelahiran tahun 1986 dan setelahnya).
3. Tinggi Badan : Minimal 165 Cm.
4. Berat badan : Proporsional dengan tinggi badan.
5. Sehat jasmani rohani untuk melaksanakan fungsi sebagai Teknisi PDKB, tidak menderita epilepsi, Tidak buta warna, tidak berkacamata dan tidak berlensa kontak.
6. Tidak pernah menggunakan narkoba/NAZA, tidak bertato dan tidak ditindik/bekas tindik di telinga atau anggota tubuh lainnya.

B. PERSYARATAN ADMINISTRASI

1. Pendidikan : Lulusan SMA/SMU Jurusan IPA atau SMKJurusan Listrik (elektro arus kuat/ketenagalistrikan)
2. Nilai Rapor/Transkrip terakhir:
a. Matematika nilai minimal 6 (enam) untuk semua jurusan.
b. Ilmu Listrik nilai minimal 7 (tujuh) untuk SMK Teknik Listrik (arus kuat/ketenagalistrikan).
c. Fisika nilai minimal 7 (tujuh) untuk SMA/SMU IPA.
3. Bersedia mengikuti pendidikan ikatan dinas selama 1(satu) tahun dan tidak menikah dalam masa pendidikan

C. CARA MENGAJUKAN LAMARAN

1. Surat Lamaran ditujukan kepada “PANITIA REKRUTMEN” dengan melampirkan:
a. Surat Lamaran.
b. Fotocopy ijazah SMU/SMK yang dilegalisir
c. Fotocopy Nilai Rapor/Transkrip terakhir SMU/SMK yang dilegalisir
d. Fotocopy Akte Kelahiran / surat kenal lahir.
e. Fotocopy KTP yang masih berlaku.
f. Daftar Riwayat Hidup.
g. Pas foto berwarna terbaru ukuran 4 x 6 sebanyak 3 (tiga) lembar.
h. Surat Keterangan berbadan sehat dan tidak buta warna dari Dokter Rumah Sakit/Puskesmas.
i. Surat pernyataan diri di atas meterai Rp. 6.000,- yang meliputi:
  • Bahwa tidak pernah terlibat dalam penyalahgunaan Narkotika, zat adiktif lainnya dan tindakan kriminal.
  • Kesanggupan bekerja sebagai Teknisi PDKB dan bersedia ditempatkan di seluruh Wilayah kerja PT PLN (Persero) P3B Sumatera se-Sumatera
  • Bahwa tidak akan menikah selama 1 (Satu) tahun, dalam masa pendidikan.
  • Bahwa tidak akan menuntut pengakuan atas Ijazah yang lebih tinggi dari SMU/SMK yang dimiliki.
j. Surat Lamaran dikirim paling lambat tanggal 9 Agustus 2008 (stempel pos)
k. Amplop kosong tanpa perangko yang sudah bertuliskan alamat pelamar yang akan digunakan sebagai surat balasan/panggilan.

2. Berkas lamaran dikirimkan dan ditujukan ke salah satu dari alamat sbb:
a. PT PLN (Persero) UPT Medan.PO BOX 639 Medan 2000
b. PT PLN (Persero) UPT Padang.PO BOX 399 Padang
c. PT PLN (Persero) UPT Palembang.PO BOX 1279 Palembang

D.TAHAP SELEKSI

Seleksi dilaksanakan dengan sistim gugur dengan tahapan sebagai berikut:
1. Administrasi
2. Akademis
3. Psikologi
4. Fisik
5. Wawancara
6. Kesehatan

E. LAIN-LAIN:

1. Tidak diadakan korespondensi dan hanya lamaran yang masuk melalui PO BOX yang akan diproses.
2. Pelamar tidak dipungut biaya apapun.
3. Pelamar Teknisi PDKB yang dinyatakan lulus pada seluruh tahapan seleksi akan dipanggil mengikuti
Program Beasiswa Pendidikan setara Diploma 1.
4. Pelamar Teknisi PDKB yang dapat menyelesaikan program beasiswa pendidikan setara Diploma 1 pada butir
3 di atas, akan diangkat menjadi Pegawai Teknisi Pekerjaan Dalam Keadaan Bertegangan dan ditempatkan di
seluruh Wilayah kerja PT PLN (Persero) P3B Sumatera se-Sumatera.
5. Surat Lamaran yang pernah dikirim sebelum diterbitkan pengumuman ini dinyatakan tidak berlaku.
6. Apabila di kemudian hari, DATA berkas surat lamaran ternyata tidak benar maka peserta dinyatakan
GUGUR.
7. Keputusan Panitia tidak dapat diganggu gugat.
8. Lamaran yang masuk ke panitia penerimaan menjadi hak milik panitia sehingga tidak bisa diambil kembali.

Padang, 28 Juli 2008
Informasi selengkapnya kunjungi segera : www.p3b-sumatera.co.id

Monday, 7 July 2008

Komponen database Oracle (1.2.4 Temporary Files)

Temporary files adalah tipe datafiles yang sangat spesial, digunakan untuk menyimpan hasil dari proses sorting dalam jumlah yang sangat besar, Yang tidak dapat ditampung di memori. Database Object yang bersifat permanen seperti table dan index tidak akan pernah disimpan pada temporary files. Akan tetapi, content-content lain yang bersifat sementara dapat disimpa pada temporary datafiles, seperti temporary table.

Secara normal, setiap ada perubahan pada database object akan tercatat pada redo log files. Namun pada temporary files, setiap transaksi yang terjadi tidak menimbulkan redo entries. Temporary files juga tidak perlu di-backup, karena oracle sendiri tidak pernah melakukan recovery pada temporary files.

Sebaiknya menggunakan locally managed temporary tablespaces dan besar extent yang sama (uniform), yaiut menggunakan perintah CREATE TEMPORARY TABLESPACE

Komponen Database (1.2.3 Control Files)

Control files berisi semua informasi file-file yang menjadi bagian dari database, seperti datafiles, redo log files. Controls files menyimpan informasi posisi keadaan database saat ini :
  • Nama dari database
  • kapan database dibuat
  • posisi keadaan datafiles sekarang, dalam kondisi memerlukan recovery, kondisi read only, dan sebagainya
  • Informasi terakhir kali databse shutdown, abort, immediate atau normal.
  • History dari archive log files.
  • Backup yang telah dilakukan pada database
  • Checkpoint yang selesai dilakukan.

Control files haru mempunyai copy lebih dari satu, agar jika salah satu control files hilang (disk failure), tetap mempunyai control files yang ontrol files yang lain. Jika control files hilang atau rusak, bukan merupakan hal yang fatal, karena control files dapat dicreate kembali. Namun, untuk membuat controln files yang baru lebih sulit dilakukan, karena harus mengetahui semua informasi file-file yang ada pada database. Sebaiknya control files dibuat secara multiplexed agar tetap terjaga untuk menghindarkan dari hal-hal yang tidak diinginkan.

Komponen Database Oracle (1.2.2 Redo Log Files)

Redo Log Files adalah bagian yang sangat penting di database oracle. Redo log files sebagai tempat catatan setiap transaksi yang terjadi di oracle. Fungsi utama redo log files digunakan untuk kebutuhan proses recovery. Pada sebuah proses transaksi normal, oracle memperbarui block yang berada di memori (buffer cache).

Jika pada saat ini oracle mengalami kegagalan dan data yang diperbarui belum tersimpan ke datafiles, oracle akan menggunakan reo log files untuk melakukan recover data yang sudah diperbarui. Oracle akan mengembalikan posisi transaksi terakhir saat sebelum oracle mengalami kegagalan.

Jika suatu saat terjadi kerusakan pada datafiles, oracle juga akan menggunakan archive log files dan online redo log files untuk melakukan restore data. Jika terjadi kesalahan melakukan drop table, table tersebut dapat dikembalikan lagi dengan menggunakan online redo log files dan archive log files. Oracle juga menggunakan redo log files ini pada standby datatbase.

Online Redo Log
Setiap database oracle minimal harus mempunyai dua online redo log files, dan umumnya minimal mempunyai tiga redo log files. Besar online redo log files tetap, dan bekerja secara bergantian (Circular fashion). Oracle akan menulis redo log pertama. Ketika redo log pertama ini sudah penuh, oracle akan berpindah ke redo log kedua untuk memulai menulis redo entries. Jika redolog kedua ini sudah penuh, oracle akan berpindah ke reo log files ketiga, begitu seterusnya.
Perpindahan redo log files satu ke redo log files berikutnya, disebut sebagai proses log switch. Proses log switch dapat menimbulkan 'hang' sementara, jika tuning database-nya kurang tepat. saat log terjadi , oracle akan melakukan checkpoint, yaitu sebuah sinyal yang memaksa DBWR (Database Writer) memindahkan block-block yang diperbarui (dirty block) yang ada di SGA ke datafiles, yang dilakukan secara background proses.

Archive Redo Log
Database oracle dapat berjalan pada dua mode, yaitu NOARCHEVLOG dan ARCHIVELOG. untuk menghindari kehilangan data pada saat terjadi kegagalan, sebaiknyamenjalankan database oracle pada mode ARCHIVELOG.

Jika suatu saat terjadi kesalahan dalam melakukan drop table tanpa ARCHIVELOG kesempatan untuk melakukan recovery akan semakin kecil. Terutama pada sebuah database yang mempunyai jumlah transaksi yang sangat besar. Semakin sibuk sebuah system, maka semakin sring oracle melakukan log switch, yang artinya senakin kemungkinan melakukan point in time recovery (PITR) jika tidak menjalankan databse dengan mode ARCHIVELOG.