Hirdetés
- Poco X8 Pro Max - nem kell ide sem bank, sem akkubank
- Xiaomi 17 - még mindig tart
- Tesztkört futott a OnePlus Nord CE6
- Mától Huawei okosórákkal is lehet érintésmentesen fizetni
- Milyen okostelefont vegyek?
- One mobilszolgáltatások
- iPhone topik
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- Honor Magic6 Pro - kör közepén számok
- Telekom mobilszolgáltatások
Új hozzászólás Aktív témák
-
Onishi
tag
Sziasztok!
Előre is bocsi a kisregényért.
A feladat a következő lenne:
2db fényújságot kell soros porton vezérelni egy gyárban, a kiküldendő adatokat egy HMI PC-ből kell venni amin WinCC Flexible 2005 Runtime fut. A PC és a fényújságok között egy-egy soros-ethernet átalakító van. Az eredeti WinCC projekt megvan, így abban egy script segítségével oldottam meg a feladatot. Ez a script végzi az adatok összegyűjtését, a kiírandó szövegek generálását, az időzítések számolását valamint a soros porton történő kiküldést a fényújság felé.
A tesztelés során 2 problémába ütköztem:1.) A script szépen küldi ki az adatokat a fényújság felé, de ha tegyük fel áramtalanítják a fényújságot, vagy valamiért nem elérhető, attól a program még küldi az adatokat, amely egy bufferbe tölti őket, majd ha a fényújságot tegyük fel visszakapcsolják, akkor a bufferből elkezdi folyamatosan ontani az adatokat, amitől a fényújság megkergül. Namost erre az MSCOMM32 objektum OutBufferCount = 0 parancsa valószínű jó lenne, de az MSCOMM32 objektum nem használható VBScript alól, licenszet kér hozzá, ezért letöltöttem az ingyenes NetCommOCX-et, ami ugyanazt tudja mint az MSCOMM32 kivéve az OutBufferCount-ot, mert azt nem tudja, vagy legalábbis nem működik :-). Először a soros port kezelésre egy másik eljárást, a sima OpenTextFile-t használtam, amivel szintén lehet soros portra adatokat küldeni, de a port tulajdonságait tudomásom szerint nem lehet vele megadni és az mindig átállítja a baudrate-et 1200-ra, szóval az sem használható. Más eljárást VBScript-re nem találtam, ami soros port kezelésre lenne való.
Erre a buffertöltéses problémára már kitaláltam egy megoldást: a soros-ethernet átalakítókat pingelni fogom, és ha nem elérhető, nem küldök adatot. Más nem jut eszembe amivel ezt ki tudnám védeni, de nektek hátha van jobb ötletetek.2.) A script látszólag jól működik küldi azt amit kell, de van amikor valami meghülyül és elkezdi magából ontani az adatokat. Ez vagy csak 0, vagy látszólag random karakterek. De ezt olyan sebességgel végzi, amit én tuti nem tudok a sciptből küldeni, mert azt csak másoodpercenként hívom meg, és kb 5-20 másodpercenként küldöm a fényújságba az adatokat. Először gyanakodtam a soros-ethernet átalakítóra, hogy az zavarodik össze, de kipróbáltam az ottani gép saját soros portján küldeni, és azon is előjön. Ezt a megzavarodást, csak úgy tudom megszüntetni, hogy leállítom a runtime-ot, és a soros drivert újraindítom. Azt még meg fogom próbálni, hogy csak a runtime indításakor nyitom meg a portokat, és nem zárogatom mindig le, hanem, csak ha a runtime-ot leállítják akkor. Lehet az állandó port nyitás, meg zárás okozza, nem tudom.
Végső megoldásként azt is lehet, hogyha a gyárban tudnának jogtiszta excelt feltenni a gépre, akkor abban sima Visual Basic-ben is meg lehetne oldani a soros porton kiküldést, ami lehet stabilabb lenne. WinCC scripttel pedig egy fáljba írnám az adatokat, amit a nagy VB olvasna, de kiküldené már ő küldené ki.
Bemásolom a soros port kezelés részt a scriptből:
Set objComport = CreateObject("NETCommOCX.NETComm")
objComport.CommPort = 2
objComport.Settings = "9600,N,8,N"
objComport.PortOpen = True
objComport.Output = Chr(21)
objComport.Output = Chr(18)
objComport.Output = Chr(5)
'Küldendő szöveg:
objComport.Output = fenyero + out + kifutas
'Lezárás:
objComport.Output = Chr(254)
objComport.Output = Chr(lezaras)
objComport.PortOpen = FalseRemélem van köztetek valaki a ki csinált már hasonlót és belefutott már ilyen problémákba.
Előre is köszönöm a segítséget.
Új hozzászólás Aktív témák
- Engedélyezte Hollandia a Tesla önvezetést, az EU többi része következhet
- Kitolhatja az LGA1700 élettartamát az Intel
- gban: Ingyen kellene, de tegnapra
- Futás, futópályák
- bkercso: Tápszűrő-5 SMPS-hez
- Kertészet, mezőgazdaság topik
- Milyen RAM-ot vegyek?
- Óra topik
- Forza sorozat (Horizon/Motorsport)
- BestBuy topik
- További aktív témák...
- Új Redmi Note 15 5G 128/6GB Black
- RYZEN 5 9600x - XFX RX 9060XT 16GB - 2x16GB DDR5 6000MHz CL32(A-Die) - 1,25TB SSD - NZXT KRAKEN
- Apple iPad Pro 12.9 2nd gen 2017 wifi + cellular 256GB eladó! 0 ciklus! Karcmentes!
- i5-9400F / 16GB DDR4 / RX480 8GB / 240GB SSD + 500GB HDD
- Dell XPS gamer notebook 4K (i7 8.th, 16 GB , Geforce 1050) akció!
- HP EliteBook 640 G9 - i5-1235U 16GB 512GB 1 év garancia
- HP EliteBook 640 G11 Core Ultra 5 125U 32GB 1TB FHD 1 év gar
- HIBÁTLAN iPhone 13 Pro 128GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS4602, 100% Akkumulátor
- Apple iPhone 17 Pro Max 256GB Deep Blue használt, karcmentes 100% akku (52 ciklus) Apple garan
- AKCIÓ! Dell SE2222H 22 60Hz FHD VA 8ms monitor garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

