แสดงบทความที่มีป้ายกำกับ PLC MITSUBISHI แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ PLC MITSUBISHI แสดงบทความทั้งหมด

วันพฤหัสบดีที่ 20 กรกฎาคม พ.ศ. 2560

การเขียนวงจร SFC (Mitsubishi)


SFC  programming
ภาษาSFC จะประกอบด้วย ladder block และSFC block, ladder block คือการเขียนวงจรแบบแลดเดอร์ ,SFC block คือการเขียนวงจรเป็นstate(สถานะ)จะแบ่งออกเป็นสองส่วนคือส่วนของstate relay และอีกส่วนคือวงจรภายในของแต่ละstep เช่นที่step0(state relay S0) ก็จะมีวงจรภายในโดยเขียนเป็นบิตเอาท์พุทY0
Picture1510
สัญลักษณ์ ของ initial state relay จะเป็นกล่องสี่เหลี่ยมโดยใช้เส้นสองชั้น ส่วนสัญลักษณ์ของstate relay จะเป็นกล่องสี่เหลี่ยมธรรมดา ตัวเลขด้านขวาที่กำกับแต่ละstep คือstate relay number ซึ่งเป็นหมายเลขของstate relay โดย0หมายถึงstate relay S0,10หมายถึงstate relay S10 เป็นต้น ในช่วงของแต่ละstepก็จะเป็น transfer condition ซึ่งเป็นเงื่อนไขการเปลี่ยนจากอีกstepไปยังอีกstep หมายเลขของtransfer condition ซอฟต์แวร์จะขึ้นให้โดยอัตโนมัติ
โปรแกรมSFCสามารถ เขียนได้จำนวน10 block ตามจำนวนของinitial state relayคือS0ถึงS9 stepแรกของแต่ละblockจะเริ่มต้นด้วยInitial state relay สามารถเลือกใช้ได้ตั้งแต่S0ถึงS9 ส่วนstep ถัดจากstepเริ่มต้นจะใช้ได้ตั้งแต่S10 ขึ้นไป การเลือกใช้state relay สามารถใช้หมายเลขอะไรก่อนก็ได้ เช่นจากรูปที่ 2 SFC block1สามารถใช้S10และข้ามไปที่S15ก็ได้
  โปรแกรมที่นับจากstepแรกและต่อเนื่องไปstepอื่นๆทั้งหมดก็คือโปรแกรมSFC ขนาด1 block การใช้state relayไม่สามารถใช้ซ้ำกันได้ เช่นจากรูปที่ 2  S10และS15ถูกใช้แล้วที่SFC block1 ดังนั้นไม่สามารถใช้ซ้ำได้อีกไม่ว่าจะใช้ที่SFC block1หรือblock อื่นๆ
Picture1511
โปรแกรมSFCขนาด1block สามารถเขียนวงจรได้หลายๆวงจร(circuit) จำนวนวงจรของSFC จะนับจากเส้นในแนวตั้ง ซึ่งจำนวน1แถวในแนวตั้งจะนับเป็น1วงจร(1circuit) จากรูปที่3 เป็นวงจรSFCที่มีจำนวน4วงจร โปรแกรมSFC 1block สามารถเขียนได้มากสุด16วงจร
Picture1512
Branch
Branch หมายถึงกิ่งหรือสาขาของโปรแกรม SFC branch มีสองแบบคือselective branch และ parallel branch จากวงจรรูปที่ 4 เป็นวงจรSFCแบบselective branch ที่มีจำนวน3circuit
Picture1513
จาก รูปที่4 โปรแกรมSFCมี2selective branch โดยbranchแรกมี3วงจร และbranchที่สองมี2วงจร เนื่องจากหมายเลข1และ3คือวงจรเดียวกัน ดังนั้นจำนวนวงจรทั้งหมดของSFCจะเท่ากับ4วงจร แต่ละselective branch สามารถเขียนวงจรได้จำนวนมากสุด8วงจร แต่เมื่อรวมกันแล้วใน1SFC block จะต้องใช้วงจรไม่เกิน16วงจร
Picture1514
จาก รูปที่5 เป็นโปรแกรมSFCที่มี1parallel branch โดยparallel branch มี3วงจร parallel branch สามารถเขียนวงจรได้จำนวนมากสุด8วงจร แต่เมื่อรวมกับวงจรอื่นทั้งblock แล้วจะต้องไม่เกิน16วงจร
การ ที่โปรแกรมจะทำงานได้ initial state relay จะต้องONก่อน โดยจะต้องเขียนวงจรที่ladder block ให้ initial state relay ON ตัวอย่างวงจรSFCรูปที่6 เป็นการเลือกใช้S0เป็นstepเริ่มต้น การที่โปรแกรมจะทำงานได้ S0จะต้องONก่อน จากวงจรเมื่อPLC RUN M8002 จะทำให้S0 ON
Picture1516
ladder block และSFC block จะทำงานด้วยกัน เมื่อS0 ของladder block ทำงาน step0ของSFC block ก็จะทำงานด้วย สำหรับวงจรภายในจะทำงานทันทีเมื่อstate relay ทำงาน เช่น เมื่อS10ทำงานก็จะทำให้Y1ทำงานด้วย
Picture1517
การ ทำงานของstate relayจะทำงานเป็นลำดับจากstepนึงไปยังstepนึง โดยการใช้transfer condition วงจรภายในของtransfer condition จะใช้หน้าสัมผัสในการสั่งงาน โดยการเขียนหน้าสัมผัส และตามด้วยคำสั่งTRAN (TRANคือการเปลี่ยนstep) เช่นในขณะที่S10กำลังทำงาน เมื่อX2 ON จะทำให้S10หยุดทำงาน Y1 OFF และทำให้S11ทำงาน และก็ทำให้Y2ทำงาน
วงจรภายใน (internal circuit)
ใน แต่ละstepของstate relay เราสามารถเขียนหรือไม่เขียนวงจรภายในก็ได้ แต่สำหรับtransfer condition จะต้องมีวงจรภายในเสมอเนื่องจากต้องใช้ในการเปลี่ยนstep จากวงจรเราจะเห็นว่าที่stepS10จะไม่มีวงจรภายใน เมื่อS10 ON ก็จะไม่มีอุปกรณ์ใดๆทำงาน
Picture1518
เมื่อ แต่ละstepทำงาน ซอฟแวร์จะแสดงกราฟฟิกที่เป็นสี(ในโหมดmonitor) ที่stepนั้นๆเพื่อแสดงว่าstepนั้นทำงานอยู่ ถ้าต้องการหยุดการทำงานของstate relayสามารถใช้คำสั่งreset(RST)หรือZone reset(ZRST)ก็ได้ จากladder block บิตX0ใช้หยุดการทำงานของวงจร เมื่อX0 ON คำสั่งZRSTจะหยุดการทำงานของS10และS11 และเนื่องจากวงจรSFCนั้นจะทำงานได้ก็ต่อเมื่อS0 ONเท่านั้น ดังนั้นจะต้องเขียนวงจรให้X0 สั่งให้S0 ON เพื่อกลับไปยังสถานะเริ่มต้น เพราะว่าในขณะที่S10หรือS11ทำงาน S0จะหยุดทำงานด้วย ถ้าเรารีเซ็ตS10และS11ให้หยุดทำงาน โดยไม่ทำให้S0ทำงาน โปรแกรมก็จะไม่สามารถทำงานต่อได้อีกครั้ง
วงจร ภายในของแต่ละstepสามารถเขียนหน้าสัมผัสหรือไม่ก็ได้ ถ้าไม่ใช้หน้าสัมผัส outputก็จะทำงานเมื่อstepนั้นทำงาน แต่ถ้าเราใช้หน้าสัมผัส หน้าสัมผัสจะเป็นอุปกรณ์ในการควบคุมเอาท์พุทด้วย จากรูปที่9 เมื่อS11ทำงาน และX11 ON  จะทำให้Y1 ON วงจรภายในของแต่ละstepสามารถเขียนคำสั่งต่างๆได้เช่นเดียวกับวงจรแลดเดอร์ เมื่อS11ทำงานและX11 ON คำสั่งMOVจะนำค่าK1ไปเก็บที่D0
Picture1519
การรีเซ็ตรีเลย์ Y
เราสามารถหยุดการทำงานของรีเลย์Yทั้งหมดได้โดยใช้รีเลย์พิเศษM8034 จากladder block เมื่อX10 ON รีเลย์เอาท์พุทYทั้งหมดจะหยุดการทำงาน
Picture1520
สเตทรีเลย์แบบlatch
Initial state relay คือรีเลย์แบบจำค่าได้ ซึ่งในขณะที่S0ทำงาน ถ้าแหล่งจ่ายไฟของPLCดับจะทำให้PLC stop การทำงานของS0จะถูกจำได้ เมื่อPLC RUN อีกครั้งS0ก็จะกลับมาทำงานเหมือนเดิม ส่วนสเตทรีเลย์ในส่วนอื่นๆสามารถเลือกใช้แบบทั่วไปหรือแบบlatchก็ได้ ขึ้นอยู่กับการเขียนของผู้ใช้งาน
ใน วงจรSFC เราสามารถเขียนคอยล์เอาท์พุทซ้ำกันได้ จากวงจรรูปที่11 เมื่อS10ทำงาน Y1จะทำงาน เมื่อS11ทำงาน ทำให้S10หยุดทำงานและY1หยุดทำงาน และเมื่อS12ทำงานก็จะทำให้Y1ทำงานได้อีก
Picture1521
กรณี ถ้าใช้สั่งSET คำสั่งSETจะทำให้บิตเอาท์ทำงานตลอดแม้ว่าจะมีการเปลี่ยนstepไปแล้วก็ตาม จากรูปที่11 เมื่อX2 ON S11ก็จะทำงาน และคำสั่งSETจะทำให้Y2ทำงาน เมื่อX3 ON จะทำให้S11หยุดทำงาน และS12ทำงานต่อ แต่Y2ยังทำงานอยู่ ดังนั้นจะต้องใช้คำสั่งRSTเพื่อหยุดการทำงานด้วย คำสั่งRSTสามารถเขียนในวงจรSFCหรือในวงจรladder blockก็ได้ จากวงจรเมื่อS12 ทำงาน และX4 ON Y2จะหยุดทำงาน หรือที่ladder block เมื่อX0 ON Y2ก็จะหยุดทำงานเช่นกัน
Jump และ return
jumpและreturn ใช้สำหรับวิ่งไปยังstepที่ต้องการ ใช้เครื่องหมายเป็นลูกศร ซึ่ง jumpหมายถึงการวิ่งไปยังstepที่ต่ำกว่า ส่วนreturnหรือเรียกว่าrepeat หมายถึงการวิ่งไปยังstepที่อยู่ด้านบน หรืออยู่สูงกว่า เช่นจากรูปที่12 ตัวเลข0หมายถึงการreturnไปยังS0 ซึ่งเป็นstepด้านบน และที่S0จะมีเครื่องหมายจุด(dot)เพื่อแสดงว่ามีการreturnมาจากตำแหน่งอื่น
Picture1522
ส่วนรูปที่13 เป็นการjumpจาก transfer condition3 ไปยังS21เมื่อX2 ON S10จะหยุดทำงานและstepการทำงานจะjumpไปที่S21 และทำให้M2 ON
Picture1523
การjumpและreturn สามารถใช้ระหว่าง block ได้เช่นกัน
เรา สามารถนำอุปกรณ์จากblockนึงไปใช้กับอีกblockนึงก็ได้ เช่นจากรูปที่14 เป็นการใช้ state relay S17 ที่SFC block1 มาใช้เป็นtransfer conditionที่SFC block2ได้ ดังนั้นการทำงานของแต่ละblockสามารถเป็นอิสระต่อกันหรือเกี่ยวข้องกันก็ได้ ขึ้นอยู่กับการเขียนโปรแกรม
Picture1524
RESET state relay
Jumpและreturn ใช้สำหรับการเปลี่ยนstep ส่วน reset ใช้สำหรับหยุดstepการทำงาน และไม่มีการวิ่งไปที่stepอื่น จากรูปที่15 เครื่องหมายสามเหลี่ยมและมีเลข11กำกับหมายถึงการreset S11 และที่stepS11 จะมีเครื่องหมายจุด(dot)แสดง เมื่อX2 ON S11 จะถูกreset และY1หยุดทำงาน ส่วนโปรแกรมทั้งหมดก็จะหยุดการทำงานเช่นกัน เนื่องจากไม่มีstate relay ใดๆทำงาน
Picture1525
เนื่อง จากโปรแกรมจะทำงานอีกไม่ได้ถ้าS0ไม่ทำงาน ดังนั้นจะต้องใช้มีเงื่อนไขอื่นๆให้S0ทำงานด้วย จากรูปที่15 ที่ ladder block เมื่อX0 ON จะทำให้S0ทำงาน
การทำงานของ selective branch และ parallel branch
รูป ที่16 เป็นการทำงานของ selective branch ที่มีสองวงจร เมื่อS0ทำงานวงจร1และ2ก็จะพร้อมทำงาน โดยเมื่อX2 ON S0จะหยุดทำงานและS10 ทำงานทำให้M2ทำงาน ในกรณีนี้วงจร2ไม่สามารถทำงานได้เนื่องจากS0ไม่ทำงานแล้ว ดังนั้นการที่X3 ON S20จะไม่ทำงาน วงจรที่2จะสามารถทำงานได้โดยreturn เมื่อX5 ON จะทำให้S20ทำงาน
  แต่ถ้าS0ทำงาน และX3 ON จะทำให้S20ทำงาน และทำให้M3ทำงาน ในกรณีนี้ถ้าX2 ONวงจร1 ไม่สามารถทำงานได้
Picture1526
รูปที่17 เป็นการทำงานของ selective branch เมื่อX3 ON S0จะหยุดทำงานและS20,S22และS24จะทำงานพร้อมกัน
Picture1527
การใช้ไทม์เมอร์ในโปรแกรม SFC
Picture1528
สำ หรับไทม์เมอร์ เมื่อเขียนที่วงจรSFC ไทม์เมอร์จะนับเวลาเมื่อstate relayทำงาน จากรูปที่18 เมื่อS10ทำงาน Y1 ทำงานและT0นับเวลา2วินาที เมื่อหน้าสัมผัสT0ทำงาน ก็จะเปลี่ยนstep โดยS10หยุดทำงานและไทม์เมอร์T0หยุดทำงาน
Picture1529
เรา สามารถเขียนไทม์เมอร์ซ้ำกันได้ แต่การใช้ไทม์เมอร์ในstepที่ถัดจากกัน ค่าที่ไทม์เมอร์เมอร์นับจะไม่รีเซ็ต เช่นจากรูปที่19 เมื่อS10ทำงาน T0นับเวลา2วินาที และเมื่อS11ทำงานไทม์เมอร์T0จะไม่เริ่มนับเวลาใหม่ เนื่องจากไทม์เมอร์ไม่ถูกรีเซ็ต ดังนั้นการใช้ไทม์เมอร์ซ้ำกันจะต้องไม่ใช้ในstepที่ใกล้กัน ส่วนวงจรที่ เป็นการใช้ไทม์เมอร์ที่ถูกต้อง เมื่อS10ทำงาน ไทม์เมอร์T0นับเวลา2วินาที และT0จะนับเวลาอีกครั้งเมื่อS12ทำงาน โดยจะนับเวลาเท่ากับ5วินาที
ตัวอย่างการทำงานของโปรแกรม SFC
Picture1530
timing chart รูปที่21 แสดงการทำงานของวงจร เมื่อPLC RUN M8002จะทำให้S0 ON เมื่อstep S0 ทำงานก็จะทำให้Y0 ทำงาน เมื่อX1 ON stepS0หยุดทำงาน และstepS10ทำงานต่อ Y1ทำงาน เมื่อX2 ON stepS10หยุดทำงาน และstep S11 ทำงานต่อ Y2ทำงาน(ในช่วงที่S11 ทำงานถ้าบิตX1 ON ก็จะไม่มีผลต่อวงจร) เมื่อบิตX3 ON stepS11หยุดทำงาน และstep S0 ทำงานต่อ Y0ทำงาน เมื่อX1 ONจะทำให้S10ทำงาน และเมื่อX0 ON S10จะหยุดทำงานและS0จะทำงาน
ตัวอย่างการทำงานของโปรแกรม SFC
Picture1531
ตัวอย่าง วงจรแลดเดอร์รูปที่22 การทำงานคือเมื่อX0 ON ,Y0 ON เมื่อX1 ON ,Y0 OFFถ้าเราต้องการเขียนวงจรSFC ที่มีการทำงานแบบเดียวกันสามารถเขียนได้หลายแบบดังรูป
Picture1532
รูป ที่23 เป็นวงจรแบบแรก การทำงานคือเมื่อPLC RUN S0จะON เมื่อX0 ON S0จะOFFและS10 ONทำให้ Y0 ON เมื่อX1 ONทำให้ S10 OFF ทำให้Y0 OFF และS0 ON
Picture1533
รูป ที่24 เป็นวงจรแบบที่สอง การทำงานคือเมื่อPLC RUN S0 ON เมื่อX0 ON S0จะOFFและS10 ONทำให้Y0 ON เมื่อX1 ON S10จะถูกรีเซ็ต ทำให้Y0 OFF และบิตX1ที่ladder block จะทำให้S0 ON

คำสั่ง ZCP , ZCPP , DZCP , DZCPP (Zone Compare)


ZCP คือคำสั่งเปรียบเทียบข้อมูลสามจุดระหว่างอุปกรณ์แบบเวิร์ดหรือระหว่างอุปกรณ์แบบเวิร์ดกับค่าคงที่ รูปแบบของคำสั่งคือ
Picture1265
S1และS2คือ ข้อมูลของอุปกรณ์แบบเวิร์ดที่ต้องการเปรียบเทียบ,Sคือแหล่งข้อมูลหลักที่ใช้ ในการเปรียบเทียบกับS1และS2 ,Dคืออุปกรณ์แบบบิตเช่น M,Y,SและD*.b ส่วนบรรทัดถัดมาDคือหน้าสัมผัสของอุปกรณ์แบบบิตD ,D+1 คือหน้าสัมผัสของอุปกรณ์แบบบิตตัวที่1ของบิตD และD+2 คือหน้าสัมผัสของอุปกรณ์แบบบิตตัวที่2ของบิตD
รูปแบบการทำงาน
การ ทำงานของคำสั่งZCP,DZCPเป็นแบบต่อเนื่อง ส่วนคำสั่งZCPP,DZCPPเป็นแบบพัลล์ คำสั่งZCP,ZCPPใช้กับข้อมูลแบบ16บิต คำสั่งDZCP,DZCPPใช้กับข้อมูลแบบ32บิต
ตาราง 3.19 แสดงอุปกรณ์ที่สามารถใช้ได้
Picture1266
  1. ใช้ได้เฉพาะPLC FX3UและFX3UC
  2. ใช้ได้เฉพาะPLC FX3G,FX3GC,FX3UและFX3UC
  3. ใช้ได้เฉพาะPLC FX3UและFX3UC
ตัวอย่างการใช้คำสั่งZCP กรณี S2 > S1
จากวงจร3.74 เป็นการเปรียบเทียบค่าคงที่K10และK20กับเคาน์เตอร์C1 โดยต้องการให้บิตปลายทางคือM1,M2และM3 ทำงานจะเขียนคำสั่งได้ดังนี้
Picture1267
เมื่อ บิตX0ทำงาน คำสั่งZCPจะเปรียบเทียบค่าคงที่K10และK20กับค่าของC1โดยเงื่อนไข การONของM1,M2และM3คือ 1.ถ้าค่าคงที่10(K10)มากกว่าC1 จะทำให้M1ทำงาน(M2และM3ไม่ทำงาน) และหน้าสัมผัสของM1จะต่อให้Y0ทำงาน 2. ถ้าC1มากกว่าหรือเท่ากับ10 และน้อยกว่าหรือเท่ากับ20 หน้าสัมผัสM2จะONและทำให้Y1ทำงาน 3. ถ้าC1มากกว่า20 หน้าสัมผัสM3จะONและต่อให้Y2ทำงาน
ตัวอย่างการใช้คำสั่งZCP กรณี S1> S2
ถ้า กำหนดให้S1มากกว่าS2 เช่นให้S1เท่ากับ30และS2เท่ากับ20 คำสั่งZCPจะติดเงื่อนไข30≤C1≤20 เนื่องจากการที่ค่าของC1มากกว่าหรือเท่ากับ30และน้อยกว่าหรือเท่ากับ20เป็น เงื่อนไขที่ขัดแย้งกัน ดังนั้นถ้าS1มากกว่าS2 ในการประมวลผลคำสั่งจะปรับให้ค่าของS2เท่ากับS1 โดยอัตโนมัติ ดังนั้นแม้เราจะตั้งค่าS2เท่ากับ20 แต่การประมวลผลจะมองว่าS2เท่ากับ30
Picture1268
จากวงจร3.75 M2จะONเมื่อC1เท่ากับ30

คำสั่ง CMP , CMPP , DCMP , DCMPP (Compare)


CMP คือคำสั่งเปรียบเทียบข้อมูลระหว่างอุปกรณ์แบบเวิร์ดสองตัว ผลของการเปรียบเทียบจะนำไปสั่งให้หน้าสัมผัสของอุปกรณ์แบบบิตONและOFF รูปแบบของคำสั่งคือ
Picture1261
S1และS2คือ ข้อมูลของอุปกรณ์แบบเวิร์ดที่ต้องการเปรียบเทียบ ,Dคืออุปกรณ์แบบบิตเช่น M,Y,SและD*.b ส่วนบรรทัดถัดมาDคือหน้าสัมผัสของอุปกรณ์แบบบิตD ,D+1 คือหน้าสัมผัสของอุปกรณ์แบบบิตตัวที่1ของบิตD และD+2 คือหน้าสัมผัสของอุปกรณ์แบบบิตตัวที่2ของบิตD
รูปแบบการทำงาน
การ ทำงานของคำสั่งCMP,DCMPเป็นแบบต่อเนื่อง ส่วนคำสั่งCMPP,DCMPPเป็นแบบพัลล์ คำสั่งCMP,CMPPใช้กับข้อมูลแบบ16บิต คำสั่งDCMP,DCMPPใช้กับข้อมูลแบบ32บิต
ตาราง 3.18 แสดงอุปกรณ์ที่สามารถใช้ได้
Picture1262
  1. ใช้ได้เฉพาะPLC FX3UและFX3UC
  2. ใช้ได้เฉพาะPLC FX3G,FX3GC,FX3UและFX3UC
  3. ใช้ได้เฉพาะPLC FX3UและFX3UC
ตัวอย่างการใช้คำสั่ง CMP
ตัวอย่างเช่นต้องการเปรียบเทียบค่าคงที่K10กับเคาน์เตอร์C1 โดยต้องการให้บิตปลายทางคือM100,M101และM102 ทำงานจะเขียนคำสั่งได้ดังนี้
Picture1263
จาก รูป3.71 เมื่อX0 ON คำสั่งCMPจะเปรียบเทียบค่าของC1กับค่าคงที่10 ถ้าC1น้อยกว่า10 จะทำให้M102 ทำงาน(M100และM101ไม่ทำงาน) และหน้าสัมผัสของM102จะต่อให้Y2ทำงาน ถ้าC1เท่ากับ10 M101จะทำงานและทำให้Y1ทำงาน ถ้าC1มากกว่า10 หน้าสัมผัสM100จะทำงานและต่อให้Y0ทำงาน หน้าสัมผัสทั้ง3จะทำงานไม่พร้อมกัน
  สถานะของอุปกรณ์แบบบิตจะเปลี่ยนแปลงตามการเปรียบเทียบค่าระหว่างS1กับS2 ถ้าX0 OFFคำสั่งจะไม่ทำงาน แต่สถานะของบิตจะไม่เปลี่ยนแปลง ถ้าเราจะหยุดการทำงานของM100ถึงM102 ต้องOFF X0 ก่อน และสามารถใช้คำสั่งZRSTหรือRSTหยุดการทำงานของM100ถึงM102 ดังรูป3.72
Picture1264
จาก รูป3.72 เมื่อX1ทำงานM100ถึงM102จะหยุดการทำงาน แต่ถ้าX1 ON ในขณะที่คำสั่งCMPทำงาน M100ถึงM102จะOFFได้ชั่วคราวเท่านั้น ถ้าX1 OFF บิตM100ถึงM102 ก็จะกลับมาทำงานอีกครั้ง
  กรณีที่คำสั่งกำลังทำงาน และคำสั่งรีเซ็ตอยู่ step สูงกว่า การประมวลผลจะทำตามคำสั่งที่อยู่บรรทัดล่าง ดังนั้นคำสั่งZRST หรือRSTจะไม่สามารถหยุดการทำงานของอุปกรณ์แบบบิตได้

ตัวอย่างโปรแกรม Parallel link แบบ High-speed mode (PLC Fx series)


ตัวอย่างการสื่อสารระหว่างPLC FX2N และFX1N กำหนดให้FX2N เป็นPLC master และFX1N เป็นPLC slave
Picture1260
จากsequence programของPLC master  เมื่อX0 ONจะทำให้D490เท่ากับ50 ค่าของD490 ของPLC Master จะถูกส่งไปยังPLC slave พิจารณาวงจรที่PLC slave เมื่อX2ทำงาน Y0 ก็จะทำงาน และไทม์เมอร์ T0 ก็จะนับเวลาตามค่าของD490 ซึ่งก็คือ5วินาทีเมื่อครบ5วินาที T0จะตัดการทำงานของY0
  ส่วนการส่งข้อมูลไปยังPLC Master จากจากsequence program ของPLC slaveเมื่อX5ทำงาน จะทำให้D500เท่ากับ20 ค่าของD500จะสามารถส่งไปที่PLC master ได้เช่นกัน พิจารณาวงจรPLC master เมื่อD500เท่ากับ20 จะทำให้Y1ทำงาน
   จากsequence programของPLC master กรณีที่X3ทำงาน จะทำให้ค่าของD501เท่ากับ30 กรณีนี้คือการใช้D501ผิดตำแหน่ง ค่าของD501จะไม่สามารถส่งไปที่PLC slaveได้ แต่ค่าของD501 ยังสามารถใช้ได้ที่PLC master
หมายเหตุ: เมื่อมีการใช้งานการสื่อสารทั้งแบบโหมดธรรมดาและโหมดความเร็วสูง รีเลย์Mและหน่วยความจำDตามตารางที่ จะถูกจองพื้นที่ไว้ใช้สำหรับสื่อสาร ดังนั้นจึงควรหลีกเลี่ยงการนำหน่วยความจำดังกล่าว ไปใช้ในกรณีที่ไม่เกี่ยวกับการสื่อสาร

ตัวอย่างโปรแกรม Parallel link แบบ Normal mode



Picture1258
รูป ที่4.27 เป็นการใช้PLC 2ตัวควบคุมการทำงานของมอเตอร์3เฟสขนาดเล็ก พิจารณาPLC1 S1คือสวิตช์กดติดปล่อยดับ(Push button switch)ฟต่อกับอินพุทX0 สำหรับสตาร์ทมอเตอร์1ให้หมุน,S2คือEmergency switchสำหรับหยุดการทำงานมอเตอร์ โดยใช้ต่อกับX1,K1คือคอนแท็คเตอร์สำหรับต่อให้มอเตอร์1หมุน ต่อกับเอาท์พุทY1 และมีหลอดไฟL1ต่อขนานกับK1สำหรับแสดงสภาวะการหมุน T1คือไทม์เมอร์สำหรับตั้งเวลาการทำงานของมอเตอร์1โดยต่อกับY2 และหน้าสัมผัสของT1ต่อกับอินพุทX2,F3คือหน้าสัมผัสของโอเวอร์โหลดที่ป้องกัน มอเตอร์1
  สำหรับPLC2 S3คือสวิตช์สำหรับสตาร์ทมอเตอร์1ให้หมุน ต่อกับอินพุทX0,S4คือEmergency switchสำหรับหยุดการทำงานของมอเตอร์ โดยต่อกับX1,S4คือEmergency switchสำหรับหยุดการทำงานมอเตอร์ โดยต่อกับX1,K2คือคอนแท็คเตอร์สำหรับต่อให้มอเตอร์2หมุน ต่อกับเอาท์พุทY1 และมีหลอดไฟL2ต่อขนานกับK2สำหรับแสดงสภาวะการหมุน T2คือไทม์เมอร์สำหรับตั้งเวลาการทำงานของมอเตอร์2โดยต่อกับY2 และหน้าสัมผัสของT2ต่อกับอินพุทX2 F3คือหน้าสัมผัสของโอเวอร์โหลดที่ป้องกันมอเตอร์2
การ ทำงานของวงจรคือเมื่อกดS1หรือS3จะเป็นการสตาร์ทมอเตอร์ตัวที่1 ให้ทำงานพร้อมกับไทม์เมอร์1(T1)นับเวลา โจทย์กำหนดไว้ที่1นาที เมื่อครบเวลาแล้วไทม์เมอร์1ก็จะสั่งให้มอเตอร์1หยุดหมุน PLCตัวที่1ก็จะส่งสัญญาณไปให้PLCตัวที่2 และมอเตอร์ตัวที่2 ก็จะทำงาน พร้อมกับไทม์เมอร์2 นับเวลา เมื่อครบ1นาที ไทม์เมอร์2ก็จะสั่งให้มอเตอร์2หยุดหมุน และPLC2ก็จะส่งสัญญาณไปให้PLC1 เพื่อสตาร์ทให้มอเตอร์1ทำงาน ดังนั้นมอเตอร์ทั้งสองจะทำงานสลับกันครั้งละ1นาที เมื่อกดEmergency switch S2หรือS4 มอเตอร์ทั้งสองก็จะหยุดทำงาน และถ้าโอเวอร์โหลดของมอเตอร์ตัวใดตัวหนึ่งทำงาน มอเตอร์แต่ละตัวก็จะหยุดทำงานเช่นกัน
Picture1259
จาก วงจร4.28 เมื่อกดสวิตช์S1 X0ก็จะONและทำให้M100ของPLC1ทำงาน มอเตอร์1ก็จะทำงาน เมื่อไทม์เมอร์นับเวลาครบ1นาที่X2 ก็จะONทำให้M101ทำงานและตัดไม่ให้M100ทำงานM101ก็จะต่อให้M802 ON ,หน้าสัมผัสM802ก็จะไปสั่งให้M100ของPLC2ทำงาน และทำให้มอเตอร์2หมุน เมื่อไทม์เมอร์นับเวลาครบ1นาที X2จะON จะต่อให้กับM101ทำงาน M101ก็จะต่อให้M902 ON หน้าสัมผัสM902ก็จะกลับไปสั่งให้M100ของPLC1ทำงาน และทำให้มอเตอร์1หมุนอีกครั้ง

ตัวอย่างโปรแกรมการใช้คำสั่ง MOV , INCP, DECP


ลาน จอดรถสามารถจอดรถได้60คัน ป้ายด้านหน้าลานจอดรถมีseven segment 2ดิจิตใช้แสดงจำนวนรถที่จอดอยู่ หลอดไฟสีเขียวแสดงสถานะว่าที่จอดว่าง หลอดไฟสีแดงแสดงสถานะว่าที่จอดเต็ม ถ้าไฟแดงติดseven segmentก็จะแสดงจำนวนรถเท่ากับ60คัน ที่ทางเข้าออกลานจอดรถมีคานกั้นที่ขึ้นลงได้ กรณีเข้าไปจอด ผู้ขับรถจะต้องนำบัตรอิเล็กทรอนิกส์ไปแนบที่เซ็นเซอร์1ซึ่งเป็นเซ็นเซอร์ สแกนบัตร เซ็นเซอร์1ก็จะON คานกั้นก็จะเปิดให้รถเข้าไปจอดได้ ตัวเลขที่แสดงจำนวนรถก็จะเพิ่มขึ้น คานกั้นจะปิดลงมาเมื่อรถวิ่งไปถึงsensor2 ซึ่งจะตรวจจับเมื่อรถวิ่งมาถึง แต่ถ้ารถเต็มแล้ว คานกั้นจะไม่เปิดแม้ว่าจะมีการสแกนบัตรก็ตาม ส่วนทางออกเมื่อรถวิ่งมาที่เซ็นเซอร์3 เซ็นเซอร์จะON คานกั้นก็จะเปิดออก ตัวเลขที่แสดงจำนวนรถก็จะลดลง เมื่อรถวิ่งไปยังเซ็นเซอร์4 คานกั้นก็จะปิดลง
Picture1255
จาก รูป3.68 seven segmentดิจิต0ต่อกับY10-Y17 ดิจิต1ต่อกับY20ถึงY27 เซ็นเซอร์1ถึง6ต่อกับX1ถึงX6 ไฟเขียวต่อกับY5 ไฟแดงต่อกับY6 ,K1ถึงK4คือคอนแท็คเตอร์ K1สั่งมอเตอร์เกียร์ให้เปิดคานกั้นด้านเข้า K2ใช้กลับทางมอเตอร์ให้ปิดคานกั้นด้านเข้า ,K3ใช้เปิดคานกั้นด้านรถออก K4ใช้ปิดคานกั้นด้านรถออก,S5และS6คือเซ็นเซอร์ที่ติดตรงจุดยกคาน ถ้าS5,S6จับวัตถุได้คานกั้นจะไม่สามารถปิดได้
Picture1256
Picture1257
จาก วงจร3.69 เมื่อมีการสแกนบัตรจอดรถด้านเข้า X1จะON และสั่งให้Y1 ON คอนแท็คเตอร์K1 ทำงาน ทำให้มอเตอร์เกียร์หมุนและคานกั้นก็จะเปิดให้รถผ่านไปได้ มอเตอร์จะทำงาน3วินาที (Y1 ON 3 วินาทีและถูกตัดโดยT1 เวลาที่ตั้งขึ้นอยู่กับว่าเมื่อคานกั้นเปิดสุดจะใช้เวลาเท่าใด ซึ่งขึ้นอยู่กับความเร็วมอเตอร์) เมื่อรถวิ่งไปยังsensor2 X2ก็จะON และทำให้Y2 ONมอเตอร์หมุนกลับ คานกั้นก็จะปิดลง กรณีถ้าคนเดินผ่านsensor2 และ sensor2 ON แต่รถยังวิ่งไม่พ้นระยะปิดของคานกั้นก็จะมีsensor5ตรวจจับได้ คือถ้าX5ทำงาน แม้ว่าX2จะON Y2จะทำงานไม่ได้ และคานกั้นจะปิดไม่ได้
  เมื่อX1 ONหมายถึงมีการสแกนบัตรจอดรถ จะทำให้คำสั่ง INCP เพิ่มจำนวนให้กับD1 ,D1จะใช้เก็บจำนวนรถที่เข้าจอด ส่วนคำสั่งBCD จะเปลี่ยนค่าD1เป็นรหัสBCD และในไปเก็บที่เวิร์ดK2Y10ซึ่งK2Y10ต่อกับseven segment เพื่อแสดงจำนวนรถให้ทราบ
ถ้าD1เท่า กับ60 จะทำให้Y6 ONซึ่งแสดงว่ารถเต็มแล้ว และหน้าสัมผัสY6จะตัด ไม่ให้คำสั่ง INCP ทำงาน เมื่อนำบัตรมาสแกนที่sensor1ค่าของD1 ก็จะไม่เพิ่มขึ้น และY6ก็จะตัดการทำงานของY1ไม่ให้คานกั้นด้านเข้าสามารถเปิดได้ Y5คือไฟแสดงว่ารถยังไม่เต็ม ถ้าY6ไม่ON Y5ก็จะON เมื่อรถวิ่งออกจากลานจอด sensor3จะตรวจจับได้ X3 จะON และจะสั่งให้Y3ทำงาน คอนแท็คเตอร์K3ทำงาน มอเตอร์เกียร์หมุนและคานกั้นก็จะเปิดให้รถผ่านไปได้มอเตอร์จะทำงาน3วินาที และหยุดหมุน(T3หน่วงเวลาตัดการทำงานY3) เมื่อรถวิ่งไปยังsensor4 X4ก็จะONและทำให้Y4ทำงาน มอเตอร์หมุนกลับและคานกั้นก็จะปิดลง แต่ถ้ามีคนเดินผ่านทำให้sensor4ทำงาน แต่รถยังวิ่งไม่พ้นระยะปิดของคานกั้นก็จะมีsensor6ตรวจจับได้ ถ้าX6 ON Y4จะถูกตัดการทำงานและคานกั้นจะปิดไม่ได้
  เมื่อX4 ON หมายถึงมีรถวิ่งออก จะทำให้คำสั่งDECP ลดค่าของD1 ลงไปเท่ากับ1เมื่อD1ไม่เท่ากับ60 Y6ก็จะOFF ไฟเขียวจะON และรถก็จะสามารถเข้ามาจอดได้

Modbus communication

Modbus communication เป็นการสื่อสารระหว่างPLCกับอุปกรณ์ต่างๆ เช่นเซ็นเซอร์ อุปกรณ์ที่ใช้ในการสื่อสารของPLC FX คือ FX3U-485ADP-MBและFX3U-232ADP-MB (MB คือ modbus) ในหัวข้อนี้จะกล่าวถึงการสื่อสารกับเซ็นเซอร์วัดค่าออกซิเจนรุ่น OXY-LC-485
1.การ wiring
Picture1482
2. การเดินสายไฟในการสื่อสารแบบ MODBUS
Picture1483
3. การตั้งค่าการสื่อสารที่PLCและเซ็นเซอร์
การ ตั้งค่ารูปแบบการสื่อสารคือการตั้งค่ารายละเอียดต่างๆเช่นdata length ความเร็วในการสื่อสาร(baud rate) เป็นต้น โดยจะต้องค่าที่PLCและเซ็นเซอร์ให้ตรงกัน การตั้งค่าการสื่อสารที่PLC ทำได้โดยเขียนค่าคงที่ไปยัง special data register  กรณีใช้ Ch1 ตั้งค่าที่ D8400
กรณีใช้ Ch1 ตั้งค่าที่ D8420
การ เลือกรูปแบบการสื่อสารขึ้นอยู่กับการกำหนดของผู้ใช้งานรูปที่3 เป็นรายละเอียดการสื่อสารซึ่งเป็นค่าเริ่มต้นของเซ็นเซอร์ เราสามารถกำหนดแตกต่างจากนี้ก็ได้
Picture1484
ส่วน การตั้งค่ารูปแบบการสื่อสารที่อุปกรณ์อื่นๆ จะต้องเขียนค่าคงที่ไปยังหน่วยความจำของอุปกรณ์นั้น โดยจะต้องทราบว่า หน้าที่ของหน่วยความจำของอุปกรณ์นั้นคืออะไร การเขียนข้อมูลจะต้องใช้คำสั่ง ADPRW หน่วยความจำของอุปกรณ์ที่ใช้กำหนดหน้าที่และการทำงานเรียกว่า Holding register
Picture1485
ตัวอย่าง เช่นต้องการตั้งค่า baud rate ของ  OXY-LC-485 ให้เท่ากับ 9600 ก็ทำได้โดยการเขียนค่าคงที่ K2 ไปยัง Holding register 9C47 เป็นต้น
Picture1486
4. การตั้งค่ารูปแบบการสื่อสารของPLC โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์พิเศษ D8400,D8420
กรณีใช้ Ch1 ตั้งค่าที่ D8400
กรณีใช้ Ch2 ตั้งค่าที่ D8420
ตัวอย่างนี้ใช้ ch2
ตาราง D8400 และ D8420
Picture1487
เราสามารถกำหนดค่าต่างๆได้เอง ตารางที่ 2เป็นตัวอย่างการเลือกค่าการสื่อสารสำหรับPLC
Picture1488
เนื่อง จากใช้ch2 ดังนั้นการตั้งค่ารูปแบบการสื่อสารทำได้โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์ พิเศษD8420 ค่าคงที่คือค่าของบิต0ถึงบิต15 ที่เรากำหนดไว้ตามตารางที่3.75 ซึ่งค่าb0ถึงb15ที่ได้คือ 0001 0000 1000 0001 (เลขฐาน2)
Picture1489
การ เขียนค่าคงที่ไปD8420 จะใช้เลขฐาน2โดยตรงไม่ได้ จะต้องใช้เลขฐาน10หรือเลขฐาน16 และการใช้เลขฐาน16จะง่ายกว่า เนื่องจากการเปลี่ยนเลขฐาน2เป็นเลขฐาน16 ทำได้ง่ายกว่าการเปลี่ยนเลขฐาน2 เป็นเลขฐาน10 เมื่อเราใช้เลขฐาน16 จะได้ค่าที่เขียนไปD8420คือH1081 วงจรรูปที่3.241 เป็นการเขียนค่าคงที่ H1081ไปยังD8420 การเขียนค่าไปD8420 กำหนดให้ใช้หน้าสัมผัส M8411 (กรณีCh1ใช้M8038)
Picture1490
ตัวอย่างกรณีCh1
Picture1491
5. การตั้งค่า Protocol (ch1=D8401,Ch2=D8421)
Picture1492
เนื่อง จากใช้ch2 ดังนั้นการตั้งค่าprotocol ทำได้โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์พิเศษD8421 เนื่องจากPLC คืออุปกรณ์master ดังนั้นb4=0 และเลือกการใช้งานเป็นแบบRTU ก็จะได้ b8=0 ซึ่งค่าb0ถึงb15ที่ได้คือ 0000 0000 0000 0001 (เลขฐาน2)
Picture1493
เมื่อเปลี่ยน 0000 0000 0000 0001 เป็นเลขฐาน16จะได้ H01Picture1494
นอกจากนั้นก็มีค่าต่างๆที่จำเป็นคือ
Picture1495
รายละเอียดของspecial register อ่านได้จากmanual modbus communication
สรุปค่าที่เขียนให้กับPLCคือ
Picture1496
6. การตั้งค่าการสื่อสารของเซ็นเซอร์
เรา ไม่ต้องตั้งค่าการสื่อสารที่เซ็นเซอร์อีก ถ้าเราใช้ค่าdefault ของเซ็นเซอร์ ดังนั้นจะต้องตั้งค่าการสื่อสารของPLCให้ตรงกับเซ็นเซอร์ก็พอ จากหัวข้อที่แล้ว เป็นการตั้งค่าcommunicationที่ตรงแล้ว คือ baud=9600, parity = none , stopbits= 1 bit มาถึงตรงนี้เราสามารถใช้คำสั่ง ADPRW อ่านค่าจากเซ็นเซอร์ได้เลย
Picture1497
ใน การใช้งานเซ็นเซอร์ เราต้องการอ่านค่าจากเซ็นเซอร์ดังนั้นก็จะต้องทราบว่า holding register อะไรของเซ็นเซอร์ที่เราต้องการอ่าน จากตาราง input registers 7532 คือ holding register ที่เก็บค่าออกซิเจนของเซ็นเซอร์
Picture1498
7. คำสั่ง Modbus read/write
คือคำสั่งที่อนุญาตให้ MODBUS master สื่อสารกับ slave รูปแบบคำสั่งคือ
Picture1499
Picture1500
S คือจำนวน slave  เราใช้เซ็นเซอร์หนึ่งตัว ดังนั้นเท่ากับ 01H
S1 คือ command code เป็นคำสั่งที่เราต้องการสั่ง sensor ซึ่งต้องดูจากตารางด้านล่าง เช่น H04 คือ read input register (อ่านค่า input register ของ slave)
S2       S3       S4/D  คือ command parameter
Picture1501
สรุปวงจรทั้งหมดคือ
Picture1502
Picture1503
command code
Picture1504
จาก วงจร เมื่อ PLC RUN M8002 ON จะทำให้ M0 ON และทำให้คำสั่ง ADPRW ทำงาน โดยการเขียนค่าคงที่ 1 ไปยัง 9C41 และสั่งเซ็นเซอร์ให้ ON เพื่อวัดค่าออกซิเจน
เมื่อส่งข้อมูลไปยังเซ็นเซอร์แล้ว M8029จะ ON โดยอัตโนมัติ และรีเซ็ต M0
ส่วนคำสั่ง ADPRW อีกบรรทัดจะอ่านค่าจาก input register 7531 และนำค่าไปเก็บที่ D100 และเราก็นำค่าไปใช้งานในโปรแกรม