Device configuration (Upload)

Uploading configuration of a connected CPU

โปรแกรม STEP 7 มี 2 วิธีที่จะทำการ upload  CPU ขึ้นมา คือ

  1. Upload เป็น new station : เหมาะกับการดึงทุกอย่างของ PLC ขึ้นมา
  2. Upload เป็น unspecified CPU เพื่อตรวจสอบ hardware configuration: เหมาะกับการดึงเฉพาะตัว hardware config ของ PLC ขึ้นมา

การ upload วิธีแรกจะได้มาทั้ง hardware configuration และโปรแกรมของ CPU ส่วนวิธีที่สองจะได้มาแค่ hardware configuration ของ PLC ไม่ว่าตัว PLC จะต่อกับ module อะไรไว้บ้างก็ตามจะแสดงมาหมด ทำให้เราไม่ต้องการตั้งค่า hardware เองซึ่งมีโอกาสที่จะใส่ผิดได้

Upload เป็น new station

  1. ในส่วนของ Online access ให้เราเลือกช่องทางสื่อสารที่ต้องการไปคุยกับ PLC เช่นทาง Ethernet เป็นต้น
  2. Double click “Update accessible devices”
  3. โปรแกรมจะทำการค้นหา PLC เมื่อเจอ PLC ที่ต้องการแล้วให้เลือกที่ PLC ตัวนั้นdevice_config_001.png
  4. ที่เมนูบาร์ Online ให้ไปเลือกที่ “Upload device as new station (hardware and software)”device_config_002.png
  5. จากนั้นโปรแกรมจะทำการ upload ข้อมูลจาก PLC มาทั้ง hardware configuration และ program blocks ที่เคยถูกเขียนไว้ใน PLC ทุกอย่างขึ้นมา

ตั้งเป็น unspecified CPU เพื่อตรวจสอบ hardware configuration ของ CPU

  1. ให้เราสร้าง Add new device ขึ้นมาใหม่ แล้วเลือกรุ่นเป็น Unspecified CPU 1200device_config_002_add01.png
  2. จากนั้นที่หน้า Device configuration จะเจอว่า CPU เป็นสีขาวโล่ง ให้เราเลือก Detect
    device_config_002_add02.png
  3. ให้ทำการ search และกดปุ่ม Detect โปรแกรมจะทำการดึง configuration ของ CPU มาให้device_config_002_add03.png
    device_config_002_add04

อย่าลืมว่าวิธีนี้ดึงมาได้แค่ configuration เท่านั้น โปรแกรมใน CPU ไม่ได้ถูกดึงมาด้วย  แต่ข้อดีคือเราไม่ต้องการเลือก CPU และ module ต่างๆด้วยตัวเอง เพราะ software จะดึงมาให้หมด ทำให้ไม่เกิดปัญหาการตั้งค่า module ใน software ผิดกับที่ใช้งานจริง

การเพิ่ม CPU ด้วยตนเอง (ทำแบบ manual)

เราสามารถเพิ่ม CPU เข้าไปใน device configuration ของเราเองได้ จากการเลือก “Add a new device” และเลือก CPU ที่ต้องการdevice_config_003

Device view แสดงตัว CPU และ rackdevice_config_004.png

เมื่อ click ขวาที่ตัว CPU แล้วเลือก Properties ก็จะสามารถตั้งค่าคุณสมบัติต่างๆของ CPU ได้เช่น การตั้ง IP address, การตั้ง pulse generators เป็นต้นdevice_config_005.png

สำหรับในส่วนของ IP address เราจะต้องตั้งค่าเอาเองให้เหมาะสมกับ network ของเรา ถ้าหาก CPU มีการต่อกับ router ก็ให้เราใส่ IP ของ router ไปด้วย

Changing CPU

เราสามารถเปลี่ยนรุ่นของ CPU ได้โดยไปที่ Device configuration จากนั้น click ขวาที่ตัว PLC แล้วเลือก “Change device”

device_config_006.png

จากนั้นจะมีหน้าต่าง Change device ให้เราเลือกเปลี่ยนรุ่น CPU ได้ และด้านล่างมีข้อมูลของ compatibility แสดงให้ดูด้วยว่ารุ่นที่เราเปลี่ยนต่างจากรุ่นเดิมส่วนไหนบ้าง

Note: การเปลี่ยน CPU V3.0 เป็น CPU V4.1 นั้น เราสามารถเปิด project STEP7 V12 ด้วย STEP7 V13 และทำการเปลี่ยน version CPU V3.0 เป็น CPU V4.1 ได้เลย  แต่เราไม่สามารถเปลี่ยน CPU ที่ถูกสร้างก่อน V3.0 ได้  ถ้าหากเรามี project ที่ CPU version ต่ำกว่า V3.0  เราต้องทำการ upgrade ให้เป็น V3.0 ่ก่อน จึงจะสามารถ upgrade เป็น V4.1 ได้

Adding modules

เราสามารถเพิ่ม modules ให้กับตัว CPU ได้โดยใช้ hardware catalog

  • Signal module (SM) เป็นการเพิ่ม digital I/O หรือ analog I/O โดย modules เหล่านี้ต่อเข้าที่ทางข้างขวาของ CPU
  • Signal board (SB) เป็นการเพิ่มบอร์ดที่เพิ่ม I/O จำนวนน้อยๆ เพราะว่าบอร์ดนี้จะติดตั้งที่ด้านหน้าของตัว CPU ซึ่งมีขนาดพื้นที่ไม่ใหญ่มาก
  • Battery Board 1297 (BB) เป็นการเพิ่มบอร์ดเพื่อทำ backup ในระยะยาวของ realtime clock ซึ่งบอร์ดนี้จะติดตั้งที่ด้านหน้าของตัว CPU
  • Communication board (CB) เป็นบอร์ดที่เพิ่มพอร์ท (เช่น RS485) บอร์ดนี้จะติดตั้งที่ด้านหน้าของตัว CPU
  • Communication module (CM) และ communication processor (CP) เป็นการเพิ่มพอร์ทสื่อสารเช่น Profibus หรือ GPRS เป็นต้น ซึ่ง modules เหล่านี้จะติดตั้งที่ด้านข้างซ้ายของ CPU

เราสามารถเพิ่ม module เหล่านี้จะไปได้โดยเลือก module ที่ต้องการใน hardware catalog และทำการ double click หรือลาก module เหล่านี้มายังพื้นที่ของ CPU ที่ถูก highlight เอาไว้  module ที่เราเลือกมาจะทำงานได้ถูกต้องก็ต่อเมื่อเราทำการ download ลง CPU แล้วเท่านั้น

device_config_009.png

Configuration control

Configuration control เป็น feature ที่มีประโยชน์มากในกรณีที่การตั้งค่า module บางตัวใน software ไม่ตรงกับการติดตั้ง module ของจริงที่มีอยู่เช่น ที่ software ทำการเลือกใช้งาน 3 modules แต่อุปกรณ์จริงๆมีอยู่แค่ 2 modules หรือ การเรียง modules ใน software กับการเรียง modules ของอุปกรณ์จริงๆมีการสลับกัน เป็นต้น

A control data record that you program in the startup program block notifies the CPU as to
which modules are missing in the real installation as compared to the configuration or which
modules are located in different slots as compared to the configuration. Configuration control
does not have an impact on the parameter assignment of the modules.
Configuration control gives you the flexibility to vary the installation as long as you can derive
the real configuration from the maximum device configuration in STEP 7.

การตั้งค่าเพื่อใช้งาน configuration control และ structure สำหรับ control data record ให้ทำตามขั้นตอนดังนี้

1. สิ่งที่แนะนำให้ทำก่อนคือ ต้องทำการ reset CPU ให้เป็นค่า factory settings ก่อนเพื่อให้มั่นใจว่าไม่มี control data record ที่ไม่ compatible อยู่ในตัว CPU โดยเฉพาะอย่างยิ่งเมื่อ PLC นั้นเคยถูกโหลด control data record ไปก่อนแล้ว หากมีการเปลี่ยนแปลงข้อมูล control data record ใหม่ก็ต้องทำ factory setting ก่อนด้วย

2. เลือก CPU ใน device configuration ในโปรแกรม STEP 7

3. Click ขวาที่ตัว CPU แล้วเลือก Properties จากนั้น ในส่วนของ Configuration control ให้ทำการ enable “Enable reconfiguration of device with user programdevice_config_010.png

4. ทำการสร้าง PLC data types ตัวใหม่ โดยตัวอย่างนี้ตั้งชื่อเป็น ConfigControl_Struct และทำการตั้งชื่อและ data type เป็น USInt ตามตัวอย่างดังรูป   สังเกตว่าเราจะตั้ง slot เป็นตรงกับ maximum ที่ S7-1200 ใช้ได้คือ ฝั่งขวาของ CPU ใช้ได้ 9 slots และฝั่งซ้ายของ CPU ใส่ได้ 3 slotsdevice_config_011.png

5. สร้าง Data block ตัวเลือกชนิดเป็น data type ที่เราได้เพิ่งสร้างขึ้นมาคือ ConfigControl_Struct และตั้งชื่อ data block เป็น ControlDataRecorddevice_config_012.png

6. ใน data block นี้ ให้ตั้ง Block_length, Block_ID, Version และ Subversion ดังรูป ส่วนการตั้งค่า slot ต่างๆนั้น ให้ตั้งตามที่มีหรือไม่มีอยู่จริงของอุปกรณ์ได้ติดตั้งเอาไว้จริงๆ โดยมีหลักการคือ

  • 0 : ตั้งค่า ถ้า module ที่ติดตั้งในอุปกรณ์จริงๆไม่มี (slot ว่าง)
  • 1-9 และ 101-103 : ใส่ค่าตามตำแหน่ง slot จริงๆที่ได้ติดตั้งอยู่
  • 255: ตั้งค่าเป็น 255 หากที่ STEP7 ไม่มีการตั้งค่า module ใน slot นั้นๆ

device_config_013

7. จากนั้นให้เราสร้างโปรแกรมดังนี้ใน Startup OB (OB100)  คือเราจะทำการเรียกคำสั่ง WRREC (Write data record) โดยทำการ transfer ไปยัง control data record ที่เราได้สร้างขึ้นมาไปยัง index196 ของ hardware ID33   จากนั้นใช้คำสั่ง label และ JMP เพื่อรอจนกว่าคำสั่ง WRREC จะทำเสร็จ  ซึ่งโปรแกรมส่วนนี้ต้องถูกเรียกใน Startup OB เท่านั้น เพราะเมื่อเราทำการ enable “Allow to reconfigure the device via the user program” ไปแล้วและ CPU ไม่มี control data record ที่ถูกต้อง ตัว PLC จะหยุดทำงานและเข้าสู่ STOP mode ทันที  นี่เป็นเหตุผลที่เราต้องเอาคำสั่ง WRREC ไปไว้ใน Startup OB

device_config_014.png
โปรแกรมส่วนนี้ต้องอยู่ใน Startup OB100 เท่านั้น

 

ในการโปรแกรมจริง เราอาจจะเอา contact Run_WRREC ออกไปก็ได้ แล้วเปลี่ยนสัญญาณเป็น true ค้างไว้ที่ขา REQ เลย

8. เมื่อทำการโหลดโปรแกรมลง PLC จะพบว่าไฟ RUN จะขึ้นตามปกติโดยที่ไม่มี Error เกิดขึ้นแม้ว่าเราจะใส่ module ไม่ตรงกับที่ตั้งไว้ใน Device configuration

รายละเอียดของ slot number assignment

device_config_015

สังเกตว่า slot1 ในที่นี้ไม่ได้หมายถึงตัว CPU แต่หมายถึง Signal board (SB)/Communication board (CB) บนตัว CPU เพราะยังไง CPU ก็ต้องถูกใช้งานในทุกกรณีอยู่แล้ว  แต่หัวข้อ Configuration control เป็นการตั้งค่ากรณีที่เราไม่ได้ใส่ SB, CB, SM หรือ CM ในระบบ ดังนั้นจึงไม่เกี่ยวกับ CPU เลย

รายละเอียดของ Control data record

device_config_016.png

สังเกตว่า slot 101-103 (ซึ่งใช้สำหรับ CM) ตั้งได้แค่ Actual slot หรือ 255 เท่านั้น และสลับตำแหน่งเหมือน slot 1-9 ไม่ได้

กฏของการใช้งาน Configuration control

  1. Configuration tool ไม่รองรับการเปลี่ยนตำแหน่งของ Communication module (CM) ดังนั้นเราต้องตั้งค่าตำแหน่งสำหรับ slot 101-103 ให้ตรงกับการติดตั้งจริงๆเท่านั้น  ถ้าหากเราไม่ได้มีการ config CM ให้เราใส่ค่าเป็น 255
  2. เราไม่สามารถทำการเว้น slot ได้ เช่น ถ้าเรามีการตั้ง actual configuration ที่ slot4  เราก็ต้องมี module ที่ slot2 และ slot3 ด้วยYou cannot have embedded empty (unused) slots between filled (used) slots หรือหากเรามีการใช้งาน communication module ที่ slot102 ก็ต้องมี communication ที่ slot101 ด้วย
  3. เมื่อเราได้ทำการ enable configuration control แล้ว ตัว CPU จะไม่พร้อมทำงานหากปราศจาก control data record  ตัว CPU จะเปลี่ยนเป็น STOP ถ้าหาก startup OB ไม่ได้มีการ transfer control data record ที่ถูกต้อง  และ CPU จะไม่ทำการ initialize the central I/O ในกรณีนี้และจะทำการระบุสาเหตุของ STOP mode ใน diagnostics buffer.
  4. CPU จะทำการเซฟค่า control data record ที่ได้ transfer ลง CPU ไปแล้วเอาไว้ใน retentive memory ดังนั้นเราไม่จำเป็นต้องเขียนค่า control data record 196 ใหม่เมื่อทำการ restart หากไม่ได้มีการเปลี่ยน configuration

ตัวอย่างการใช้งาน Configuration control

ตัวอย่างที่1 : STEP7 ทำการตั้ง Device configuration ใน slot 2,3,4 แต่ของจริง module slot3 ได้หายไปและเลื่อน module slot4 มาใส่ใน slot3 แทนdevice_config_017.png

ดังนั้นเพื่อที่จะบอกว่า module slot3 นั้นได้หายไป และทำ module จาก slot4 มาใส่ slot3 แทน จะทำการตั้งค่า ControlDataRecord ดังนี้device_config_018.png

ตัวอย่างที่2 : STEP7 ทำการตั้ง Device configuration ใน slot 2,3,4 แต่ของจริง module slot3 ได้หายไปและเลื่อน module slot4 มาใส่ใน slot3 แทนdevice_config_019.png

ดังนั้นการตั้งค่าของ ControlDataRecord จะเป็นดังนี้device_config_020

Configuring the operation of the CPU and modules

หัวข้อในส่วนนี้จะเน้นไปที่การตั้งค่า Properties ของตัว CPU เป็นหลักว่าสามารถตั้งค่าอะไรได้บ้าง โดยเราสามารถไปที่ในส่วนของ Device view แล้ว click ขวาที่ตัว CPU แล้วเลือก Properties
device_config_024.png

Configuring the STOP-to-RUN operation of the CPU
เมื่อไรก็ตามที่มีการเปลี่ยน state ของการ operate จาก STOP -> RUN  สิ่งที่เกิดขึ้นคือ CPU จะทำการ clear process image inputs, initializes the process image outputs และ process ของ startup OBs

นั่นหมายความว่าการอ่านค่าใดๆจาก process-image inputs ด้วยคำสั่งใน startup OBs จะอ่านค่าเป็นศูนย์ แทนที่จะเป็นค่า input จริงๆจาก physical input ดังนั้นเพื่อที่เราจะสามารถอ่านค่าของ physical input ระหว่าง startup ได้เราต้องทำการใช้งาน immediate read แทน  จากนั้น startup OBs และ FC/FB อื่นๆจะทำงานถัดไป หากในโปรแกรมเรามี startup OBs มากกว่า 1 ตัว โปรแกรมจะทำตาม priority คือทำงานตัวที่ใน ตัวเลข OB number น้อยที่สุดก่อน

CPU จะดำเนินการขั้นตอนดังนี้ระหว่างการ startup

  • Interrupts ต่างๆจะอยู่ในคิว แต่ยังไม่ทำงานระหว่าง startup phase
  • Cycle time จะยังไม่ถูก monitor ระหว่าง startup phase
  • การเปลี่ยน configuration ไปเป็น HSC (high-speed counter), PWM (pulse-width modulation), และ PtP (point-to-point communication) modules สามารถทำได้ในขั้นตอน startup
  • การทำงานจริงๆของ HSC, PWM, และ point-to-point communication modules จะเกิดขึ้นก็ต่อเมื่อเข้าสู่ mode RUN เท่านั้น

หลังจากการทำงานของ startup OBs เสร็จแล้ว  CPU จะเปลี่ยนไปที่ RUN mode และทำงานตามโปรแกรมที่ได้เขียนเอาไว้อย่างต่อเนื่อง (continuous scan cycle)

เราสามารถตั้งค่า CPU Properties เพื่อกำหนดว่าจะให้ CPU เริ่มต้นทำงานแบบใดหลังจากที่ทำ power cycle ดังรูปdevice_config_021.png

CPU จะทำการ warm restart ก่อนเข้าสู่ RUN mode  ซึ่ง warm restart จะทำการ reset non-retentive memory ทุกตัวไปสู่ค่า default value แต่ว่า CPU ยังคงค่าที่เก็บใน retentive memory อยู่

Note: CPU จะทำการ restart ทุกครั้งที่มีการ download
เมื่อไรก็ตามที่มีการ download ส่วนหนึ่งของ project (program block, data block หรือ hardware configuration) CPU จะทำการ restart คือ นอกเหนือจากการ clear inputs, initial outputs และ initial non-retentive memory แล้ว การ restart ยังทำการ initial retentive memory ด้วย

System memory and Clock memory

– CPU อนุญาตให้เราสามารถใช้งานพื้นที่พิเศษ “system memory” กับ “clock memory” เพื่อเพิ่มความยืดหยุ่นในการทำโปรแกรมของเราได้ โดยเราสามารถเข้าถึงพื้นที่แต่ละ bit เหล่านี้ได้ โดยอ้างถึง tag name ได้เลย โดยไม่ต้องทำการ map ชื่อ tag เพิ่มอีก
device_config_022.png

โปรแกรมเปิดพื้นที่ 1 byte ให้เราใช้พื้นที่ของ M memory สำหรับการใช้งาน system memory นี้ โดยประกอบไปด้วย bit จำนวน 4 bit ให้เราให้ใช้งานโดยมีรายละเอียดดังนี้

  • First cycle: (Tag name “FirstScan”) โดย bit นี้จะมีค่าเป็น 1 ในช่วงเวลาของ first scan หลังจากที่ startup OB ทำงานเสร็จแล้ว  (ซึ่งหลังจากจบการทำงานของ first scan แล้ว ตัว “first scan” bit จะมีค่ากลับเป็น 0)
  • Diagnostics status changed: (Tag name: “DiagStatusUpdate”) โดย bit นี้จะมีค่าเป็น 1 เป็นเวลา 1 scan หลังจากที่ CPU ได้ log diagnostic event และเนื่องจาก CPU จะไม่ set ค่าตัว “DiagStatusUpdate” bit นี้จนกว่าจะจบการทำงานของ OB program cycle แรก ดังนั้นโปรแกรมของเราจะไม่สามารถตรวจสอบได้หาก diagnostic มีการเปลี่ยนแปลงในช่วงการทำงานของ startup OBs หรือที่รอบการทำงานแรกของ cycle OB
  • Always 1 (high): (Tag name “AlwaysTRUE”) โดย bit นี้จะมีค่าเป็น 1 เสมอ
  • Always 0 (low): (Tag name “AlwaysFALSE”) โดย bit นี้จะมีค่าเป็น 0 เสมอ

– ในลักษณะคล้ายกันกับ system memory เราสามารถกำหนดพื้นที่ 1 byte ให้กับพื้นที่ M memory สำหรับ clock memory ได้เช่นกัน โดยแต่ละ bit จะถูกกำหนดให้เป็นลูกคลื่น square wave ที่ความถี่ต่างๆกัน 8 ค่าตั้งแต่ 0.5 Hz จนถึง 10 Hz  เราสามารถใช้ bit เหล่านี้เป็นตัว control bit ได้โดยเฉพาะเมื่อต้องใช้ร่วมกับคำสั่งที่เกี่ยวข้องกับ edge instructions เพื่อสั่งงาน actions ต่างๆใน user program ในแบบ cycle ที่คงที่
device_config_023

– CPU จะ initialize byte เหล่านี้เมื่อมีการเปลี่ยนสถานะจาก STOP mode ไปสู่ STARTUP mode
– Clock memory จะเปลี่ยนแปลงโดยสอดคล้องกับ CPU clock ตลอดการทำงานของ STARTUP และ RUN mode
– พยายามหลีกเลี่ยงการเขียนค่าลง bit พิเศษเหล่านี้เพราะอาจะทำให้ทำงานผิดพลาดได้เพราะอาจจะทำให้เกิด data corrupt ได้

Configuring the IP address of the CPU

เนื่องจากตัว CPU ไม่ได้มีค่า IP address ที่ทำการตั้งค่ามาให้ก่อน เราจึงต้องทำการตั้ง IP address ให้ CPU เอง เราสามารถตั้งค่า IP address และ parameter อื่นของ PROFINET interface ผ่านทาง Properties ของ CPU เช่นเดียวกับหัวข้อก่อนหน้านี้

  • ใน PROFINET network นั้น ก็เช่นเดียวกับระบบ Ethernet ทั่วๆไปคืออุปกรณ์แต่ละตัวจะมี MAC address เฉพาะตัวที่ระบุโดยผู้ผลิต และอุปกรณ์แต่ละตัวก็ต้องมี IP address กำกับเช่นกัน
  • Subnet mask ใช้เป็นตัวกำหนดกลุ่มของ network เพื่อระบุว่าตัวไหนเป็น network เดียวกันและตัวไหนเป็นคนละ network ซึ่งการเชื่อม network ที่ต่าง subnet เข้าด้วยกันนั้นจะต้องทำผ่าน router

ก่อนที่เราจะสามารถ download IP address ลง CPU ได้นั้น เราต้องมั่นใจก่อนว่า IP address สำหรับตัว CPU นั่นเป็นวงเดียวกันกับเครื่องคอมพิวเตอร์ของเรา  นอกเหนือจากการตรวจสอบ IP address ผ่านทางคอมพิวเตอร์แบบปกติแล้ว เรายังสามารถตรวจสอบ IP address ของคอมพิวเตอร์เราผ่านทางโปรแกรม STEP7 ได้ด้วยโดยมีขั้นตอนดังนี้

1. ขยาย folder ใน “Online access” ออกมาเพื่อแสดง network ที่มีในเครื่องคอมพิวเตอร์ของเราทั้งหมด
2. เลือก network ที่เชื่อมต่อกับ PLC
3. click ขวาที่ network นั้นและเลือก properties เพื่อแสดง Configurations ของ network นั้นๆดังรูป ให้เราทำการตรวจสอบ IP address ของคอมพิวเตอร์ของเราในส่วนของ IP address (ตัวอย่างนี้คือ 192.168.1.103 เป็นต้น)
device_config_025.png

4. หลังจากที่ได้ตรวจสอบ IP address ของคอมพิวเตอร์แล้ว เราจะทำการตั้ง IP address ให้กับ CPU โดยไปที่ Device view แล้วคลิกขวาที่ตัว CPU แล้วเลือก Properties  จากนั้นให้เราทำการตั้งค่า IP address และ subnet mask (และ router ถ้ามี)
device_config_026.png

5. จากนั้นให้ทำการ download project ไปยัง CPU เพื่อฝังค่า IP address ที่ตั้งเอาไว้ไปที่ตัว CPU
device_config_027.png

Protecting access to the CPU or code block 

CPU มี security level อยู่ 4 แบบเพื่อจำกัดการเข้าถึงใน function เฉพาะตัว  ถ้าหากเราทำการตั้งค่า security level และ password ให้กับ CPU แล้วนั่นหมายความว่าเราทำการจำกัดตัว function และ memory area ไม่ให้เข้าถึงได้ ถ้าหากปราศจาก password

Security level Access restrictions
Full access (no protection) – เข้าถึงได้ทั้งหมด  ไม่มีการป้องกัน password ใดๆทั้งสิ้น
Read access – อนุญาตให้ HMI เข้าถึงได้ และให้รูปแบบของ PLC-to-PLC communications เข้าถึงได้โดยไม่มี password protection
– Password จำเป็นต้องใช้ในการ modifying (writing to) ไปยัง CPU และการเปลี่ยน CPU mode (RUN/STOP).
HMI access – อนุญาตให้ HMI เข้าถึงได้ และให้รูปแบบของ PLC-to-PLC communications เข้าถึงได้โดยไม่มี password protection
– Password จำเป็นต้องใช้ในการอ่านข้อมูลจาก CPU, modifying (writing to) ไปยัง CPU และการเปลี่ยน CPU mode (RUN/STOP)
No access (complete protection) – ไม่อนุญาตให้เข้าถึงเลยถ้าไม่มี password
– Password จำเป็นต้องใช้ในการให้ HMI เข้าถึงได้, การอ่านข้อมูลจาก CPU, และการ modifying (writing to) ไปยัง CPU

Password ในกรณีนี้นั้นใช้หลักการ case-sensitive คือคำนึงถึงตัวอักษรเล็ก ใหญ่ ด้วย

การตั้งค่า protection level และ password  สามารถทำได้ดังนี้

  1. ที่ Device view ให้เราเลือก CPU ที่ได้วางเอาไว้
  2. คลิกขวาที่ตัว CPU เลือก Properties
    device_config_024
  3. ที่หัวข้อ “Protection”  ให้เราตั้ง protection level และใส่ password
    device_config_028

เมื่อเราทำการ download configuration ตามรูปข้างบนนี้ลงที่ CPU แล้ว ผู้ใช้งานจะมี HMI access และสามารถใช้งาน HMI function ได้โดยที่ไม่ต้องใช้ password  ส่วนการอ่านข้อมูลนั้นผู้ใช้งานต้องใส่ password ที่ตั้งไว้ในส่วนของ Read access หรือ password สำหรับ Full access (no protection)  ส่วนการเขียนข้อมูลนั้นผู้ใช้งานต้องใส่ password ที่ได้ตั้งไว้ใน Full access (no protection) เท่านั้น

Unauthorized access to a protected CPU
ผู้ใช้งานที่มี  full access สามารถใช้งานเพื่อ read และ write ตัวแปรของ PLC ได้

แต่ทั้งนี้ Web server user จะสามารถ read และ write ตัวแปรของ PLC ได้ไม่ว่า CPU จะตั้ง access level ไว้ที่ตัวไหนก็ตาม ซึ่งจะเห็นได้ว่า authorized users สามารถทำการเปลี่ยน operating mode, เขึยนข้อมูลไปยัง PLC, และ firmware updates ดังนั้นเราแนะนำว่าผู้ใช้งานควรทำการตรวจสอบการใช้งานและตั้งค่าที่เหมาะสมดังนี้

  • ตั้งค่า password ของ CPU access levels และ Web server user IDs ให้มีความรัดกุมคือ password ควรมีอย่างน้อย 10 ตัวอักษร, มีตัวเล็กใหญ่ประกอบกัน, มีตัวเลข, มีอักษรพิเศษ และควรไม่ใช่คำที่หาได้ตามพจนานุกรม และไม่ใช่ชื่อหรือคำระบุตัวตนอื่นๆ
  • ควรเก็บ password ให้เป็นความลับและเป็น password เป็นระยะๆ
  • ตั้งค่า Enable access to Web server ด้วย HTTPS protocol เท่านั้น
  • อย่าตั้งค่าให้ Web server ให้เข้าได้ถึงแบบ Everybody
  • ให้ทำ error-checking และ range-checking ที่ตัวแปรในโปรแกรม logic เพราะว่า Web page users สามารถเปลี่ยนค่าตัวแปรของ PLC ให้เป็นค่าที่ไม่ถูกต้องได้

Connection mechanism

เพื่อที่จะอนุญาตให้อุปกรณ์ partner สามารถมาเชื่อมต่อผ่านทาง PUT/GET instruction ได้ เราต้องมีการตั้ง permission ในส่วนนี้ด้วย  โดยค่า default นั้น “Permit access with PUT/GET communication” จะไม่ได้ทำการ enable ไว้ ซึ่งในกรณีนี้ การ read/write CPU data จะทำได้โดยการตั้งค่า configuration หรือการโปรแกรมทั้งฝั่ง local CPU และฝั่ง communication partner ด้วย เช่นการสื่อสารผ่านทางคำสั่ง BSEND/BRCV เป็นต้น

แต่สำหรับการเชื่อมต่อซึ่ง local CPU ทำตัวเป็น server นั้น (คือไม่มีการตั้งค่าหรือการเขียนโปรแกรมเพื่อคุยกับ communication partner ที่ฝั่งของ local CPU) จะไม่สามารถทำได้เลย เช่น

  • PUT/GET, FETCH/WRITE หรือ FTP access ผ่านทาง communication modules
  • PUT/GET access จาก S7 CPU ตัวอื่นๆ
  • HMI access ผ่านทาง PUT/GET communication

จากข้อจำกัดข้างต้น ถ้าหากเราต้องการอนุญาติให้เข้าถึง CPU จากฝั่ง client ได้ ให้เราตั้งค่าดังนี้

  1. ตั้งค่า protection access level เป็นอะไรก็ได้ ที่ไม่ใช่ “No access (complete protection)”
  2. เลือก enable  “Permit access with PUT/GET communication”

device_config_029.png

เมื่อเรา download การตั้งนี้ลงตัว CPU แล้ว ตัว CPU ก็จะอนุญาตให้ PUT/GET communication จากฝั่ง remote partners ได้

Know-how protection

Know-how protection ทำให้เราสามารถป้องกัน code block (OB, FB, FC, DB) ในโปรแกรมของเราไม่ให้คนอื่นเข้าถึงได้โดยการสร้าง password เพื่อป้องกัน code block เอาไว้ ซึ่ง password นี้จะป้องกันไม่ให้ผู้ที่ไม่มีสิทธิมาอ่านหรือทำการเปลี่ยนแปลงตัว code block นี้ได้

ถ้าหากไม่มี password แล้ว จะสามารถแค่เพียงอ่านข้อมูลเหล่านี้ของ code ได้คือ

  • Block title, block comment, block properties
  • Transfer parameters (IN, OUT, IN_OUT, Return)
  • Call structure of the program
  • Global tags ใน cross references (without information on the point of use), แต่ว่า local tags จะยังถูกซ่อนอยู่

เมื่อเราทำการตั้งค่า “know-how” protection ของตัว block เอาไว้แล้วนั้น ตัว code ภายในจะไม่สามารถเข้าถึงได้ถ้าหากไม่ใส่ password เสียก่อน

  1. ในการตั้งค่า know-how protection นั้น ให้เราไปเลือก “Properties” ของตัว block ที่เราต้องการ แล้วไปเลือกในส่วนของ “Protection”  สมมติว่าตัวอย่างนี้ เราต้องการทำการ know-how protection ของ OB100 เป็นต้น
    device_config_030
  2. เมื่อทำการ click ที่ Protection จากปรากฏหน้าต่าง Know-how protection ขึ้นมา ให้กดที่ปุ่ม Define และทำการตั้ง password ทั้งคู่ให้เหมือนกัน
    device_config_031device_config_032
  3. จะเห็นว่า OB100 จะมีเครื่องหมายกุญแจ นั่นหมายความว่า block code ถูกล็อคด้วย know-how protection แล้ว
    device_config_033
  4. เมื่อเราทำการ double click OB100 ที่ถูกล็อกนี้ จะก็ขึ้นกล่องข้อความให้เราใส่ password หากใส่ถูกต้องก็จะสามารถเปิด block code นี้ได้นั่นเอง
    device_config_034.png

ส่วนการยกเลิก know-how protection นั้นก็ทำคล้ายๆเดิมคือ

  1. Click ขวาที่ block ที่ถูกล็อกเอาไว้ แล้วไปเลือกในส่วน Protection  จากให้นั้น click ที่ปุ่ม Protection
    device_config_035.png
  2. เมื่อกล่อง Know-how protection ปรากฏมา ให้ uncheck Hide code (know how protection) ออกแล้วใส่ password ให้ถูกต้องแล้วกด OK
    device_config_036.pngdevice_config_037.png
  3. จะเห็นว่า OB100 จะไม่ได้มีรูปกุญแจแล้ว ซึ่งแสดงว่าไม่ได้ถูกล็อกด้วย know-how protection แล้ว
    device_config_038.png

ปล. แม้ว่าเราจะทำการใส่ know-how protection ให้กับ code block แล้ว เราก็ยังสามารถ copy code block เหล่านั้นไปยัง CPU ตัวอื่นๆได้ถึงแม้ว่าเราจะไม่รู้ password ก็ตาม แต่เราก็ยังไม่สามารถเปิด code block เหล่านั้นได้อยู่ดีหากไม่รู้ password

Copy protection

เป็น security feature อีกตัวหนึ่งที่อนุญาตให้เราผูก program block เข้ากับ memory card หรือ CPU ได้ ซึ่งเหมาะสมมากเพื่อใช้ปกป้องทรัพย์สินทางปัญญาของเราเอง เพราะว่าเมื่อเราเลือกที่จะผูก program block กับอุปกรณ์ใดๆแล้ว ตัว program block นั้นก็จะใช้ได้แค่กับ memory card หรือ CPU ที่ระบุไว้เท่านั้น

This feature allows you to distribute a program or code block electronically (such as over the Internet or through email) or by sending a memory cartridge.

Copy protection สามารถใช้ได้กับ OB, FB และ FC โดย S7-1200 CPU จะรองรับรูปแบบของ block protection ได้ 3 รูปแบบคือ

  • ผูกกับ serial number ของ CPU
  • ผูกกับ serial number ของ memory card
  • ผูกแบบ Dynamic โดยอาศัย password

การตั้งค่าก็เช่นเดียวคล้ายกับการตั้ง know-how protection เพราะอยู่ในส่วนเดียวกัน

  1. Click ขวาที่ block ที่ต้องการ แล้วไปตั้งค่าในส่วนของ Protection
    device_config_030
  2. ในส่วนของ Copy protection ให้เลือกรูปแบบที่เราต้องการ
    device_config_039
  3. สำหรับการผูก serial nuber ของ memory card หรือ CPU ให้เราเลือกว่าจะใส่ serial number ตอนที่ทำการ download หรือเลือกที่จะใส่ serial number ของ memory card/CPU ไปเลยก็ได้Note: Serial number เป็นแบบ case-sensitiveสำหรับการผูกแบบ dynamic แบบมี password นั้น ให้ทำการระบุ password ที่ต้องใช้เพื่อ download หรือ copy block ดังนั้นเมื่อเราได้ทำการ download block ด้วยวิธีการผูกแบบ dynamic แล้ว เราจะต้องใส่ password ด้วยเพื่อที่จะ download block นั้นลงไปอย่าลืมว่า copy protection password และ know-how protection นั้นเป็นคนละตัวกัน ไม่ได้เกี่ยวข้องกันเลย
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s