據(jù)上云不再需要網(wǎng)關(guān)?上云PLC TM1200實(shí)戰(zhàn)復(fù)盤(pán))
干設(shè)備遠(yuǎn)程運(yùn)維這幾年我最常被問(wèn)到的一句話是“你們現(xiàn)場(chǎng)那臺(tái)PLC的數(shù)據(jù)到底是怎么弄到云平臺(tái)上去的”以前我給出的標(biāo)準(zhǔn)答案是“PLC加工業(yè)網(wǎng)關(guān)”兩件套PLC管控制邏輯網(wǎng)關(guān)管協(xié)議轉(zhuǎn)換和數(shù)據(jù)轉(zhuǎn)發(fā)。后來(lái)我換了一種做法直接用一臺(tái)把上云能力做進(jìn)本體里的PLC——Tenlink TM1200。不管你是給數(shù)控機(jī)床做數(shù)據(jù)采集還是想把變頻器、溫控表、傳感器連進(jìn)云端看板這篇文章都值得花十分鐘看一眼。它不是照著產(chǎn)品手冊(cè)念參數(shù)而是我基于手冊(cè)跑完實(shí)際項(xiàng)目之后把這臺(tái)上云PLC的采集思路、配置路徑、典型坑位逐層拆開(kāi)講的完整復(fù)盤(pán)。1. 這臺(tái)上云PLC到底改變了什么傳統(tǒng)“PLC加網(wǎng)關(guān)”模式的痛點(diǎn)1.1 傳統(tǒng)模式的三大痛點(diǎn)先說(shuō)清楚以前怎么干活。大部分老產(chǎn)線的設(shè)備監(jiān)控是這么搭的現(xiàn)場(chǎng)PLC負(fù)責(zé)采集傳感器信號(hào)和執(zhí)行邏輯觸摸屏放在機(jī)臺(tái)上讓人看。數(shù)據(jù)想上云就必須在PLC旁邊再加一臺(tái)工業(yè)網(wǎng)關(guān)。網(wǎng)關(guān)通過(guò)Modbus RTU、Modbus TCP或者OPC UA去讀PLC里的寄存器把數(shù)據(jù)重新打包成MQTT協(xié)議再發(fā)給云平臺(tái)。這套架構(gòu)在中小項(xiàng)目里跑起來(lái)沒(méi)有問(wèn)題但項(xiàng)目一旦鋪開(kāi)痛點(diǎn)就非常明顯。第一是鏈路長(zhǎng)故障點(diǎn)翻倍。PLC到網(wǎng)關(guān)之間有一條串口線或者網(wǎng)線網(wǎng)關(guān)那邊又要一路4G或者以太網(wǎng)。哪一端接觸不良、電磁干擾、網(wǎng)關(guān)死機(jī)云平臺(tái)上的設(shè)備狀態(tài)就變成離線。我在現(xiàn)場(chǎng)排查過(guò)很多次“設(shè)備離線”的故障查到最后發(fā)現(xiàn)只是網(wǎng)關(guān)旁邊的電源適配器掛了。多一個(gè)盒子就多一個(gè)出問(wèn)題的機(jī)會(huì)。第二是點(diǎn)位表維護(hù)非常痛苦。PLC里的寄存器定義一份文檔網(wǎng)關(guān)的配置工具里再做一次映射云平臺(tái)那邊還得再建一遍變量?,F(xiàn)場(chǎng)設(shè)備一多點(diǎn)位改動(dòng)一次就要同時(shí)在兩三個(gè)地方改很容易出現(xiàn)PLC里已經(jīng)改了地址、網(wǎng)關(guān)和云平臺(tái)還在用舊地址的情況最后數(shù)據(jù)對(duì)不上調(diào)半天才發(fā)現(xiàn)是映射沒(méi)同步。第三是調(diào)試協(xié)作效率太低。設(shè)備廠家、集成商、云平臺(tái)開(kāi)發(fā)經(jīng)常是三個(gè)團(tuán)隊(duì)在干活?,F(xiàn)場(chǎng)工程師在PLC里改了一段邏輯云端工程師不知道云端調(diào)整了報(bào)警閾值現(xiàn)場(chǎng)工程師也不清楚。兩邊對(duì)著一個(gè)“半透明”的鏈路來(lái)回溝通項(xiàng)目交付周期就被拖長(zhǎng)了。1.2 TM1200的整合思路Tenlink TM1200這條產(chǎn)品線本質(zhì)上是在回答一個(gè)問(wèn)題既然PLC本身就在采集數(shù)據(jù)為什么不把上云這件事也放進(jìn)去所以它的定位不是“帶網(wǎng)口的PLC”而是“PLC本體加上數(shù)據(jù)網(wǎng)關(guān)加云連接終端”三合一。本地控制邏輯照常跑數(shù)字量、模擬量采集照常做同時(shí)內(nèi)置的數(shù)據(jù)引擎會(huì)把采集到的寄存器值、IO狀態(tài)和診斷信息直接同步到云端平臺(tái)。整個(gè)過(guò)程不再需要單獨(dú)一臺(tái)網(wǎng)關(guān)在邊上轉(zhuǎn)譯。這里面的關(guān)鍵設(shè)計(jì)在于兩條鏈路是分開(kāi)的。邏輯控制走掃描周期數(shù)據(jù)上云走獨(dú)立的數(shù)據(jù)發(fā)布通道。就算云平臺(tái)暫時(shí)連不上本地控制也不會(huì)受影響PLC該執(zhí)行梯形圖還是執(zhí)行梯形圖。這個(gè)特性對(duì)產(chǎn)線運(yùn)行非常重要自動(dòng)化設(shè)備可以允許數(shù)據(jù)短暫不顯示但絕對(duì)不能允許因?yàn)橥ㄐ艈?wèn)題把控制邏輯帶崩。1.3 誰(shuí)最需要這種產(chǎn)品從我接觸到的項(xiàng)目看適合用TM1200的人群很典型。設(shè)備制造商O(píng)EM是最匹配的。他們賣(mài)出去的包裝機(jī)、注塑機(jī)、灌裝機(jī)分布在各個(gè)客戶現(xiàn)場(chǎng)以前設(shè)備出了問(wèn)題只能售后出差或者等客戶打電話描述現(xiàn)象。用了上云PLC以后遠(yuǎn)程就能看到這臺(tái)設(shè)備的運(yùn)行狀態(tài)、當(dāng)前報(bào)警碼、主軸溫度曲線很多故障電話還沒(méi)打完故障原因就已經(jīng)定位了。第二類(lèi)是系統(tǒng)集成商。他們?cè)诟脑炖袭a(chǎn)線時(shí)經(jīng)常要在一個(gè)柜子里同時(shí)處理PLC、變頻器、觸摸屏、電表、溫控表多種設(shè)備。TM1200可以充當(dāng)Modbus主站把這些第三方設(shè)備的數(shù)據(jù)集中讀回來(lái)再上云柜內(nèi)接線反而簡(jiǎn)化了。第三類(lèi)是終端工廠的設(shè)備科。工廠需要統(tǒng)計(jì)設(shè)備OEE、開(kāi)機(jī)率、故障時(shí)長(zhǎng)核心是判斷“設(shè)備當(dāng)前在不在干活”。有了云平臺(tái)上的實(shí)時(shí)狀態(tài)這些指標(biāo)不用再讓班組長(zhǎng)手工填表系統(tǒng)自動(dòng)就能算出來(lái)。2. 數(shù)據(jù)采集的底層功底Modbus輪詢、OPC UA接口與點(diǎn)位映射2.1 先看硬件IO和模擬量通道講上云之前先回到PLC最本職的工作采集。TM1200本體上帶有數(shù)字量輸入輸出和模擬量通道。數(shù)字量輸入用來(lái)接按鈕、限位開(kāi)關(guān)、繼電器觸點(diǎn)數(shù)字量輸出直接驅(qū)動(dòng)接觸器、電磁閥、指示燈。模擬量輸入支持4-20mA和0-10V信號(hào)可以直接接溫度變送器、壓力變送器接入以后儀表本身的一個(gè)電流信號(hào)就變成了PLC里的一個(gè)整數(shù)。這里有一個(gè)很實(shí)際的調(diào)試經(jīng)驗(yàn)?zāi)M量信號(hào)的現(xiàn)場(chǎng)毛刺遠(yuǎn)比想象中多。特別是變頻器附近屏蔽做得不好采樣值會(huì)上下跳。處理這類(lèi)問(wèn)題最好的辦法是在PLC程序里做一階低通濾波把突變信號(hào)平滑掉。濾波系數(shù)不要一味調(diào)大因?yàn)闉V波越大響應(yīng)越慢做溫度控制時(shí)反而會(huì)讓溫度PID波動(dòng)加大。那類(lèi)“plc溫度pid波動(dòng)溫差大如何調(diào)節(jié)”的問(wèn)題有一半其實(shí)不是PID參數(shù)問(wèn)題而是信號(hào)本身沒(méi)處理好。2.2 Modbus主站向下去讀變頻器、電表、溫控表TM1200作為Modbus RTU主站可以通過(guò)RS485總線去輪詢現(xiàn)場(chǎng)的第三方設(shè)備。ABB的變頻器、西門(mén)子的變頻器、森蘭的通用變頻器、各種電表和溫控表絕大多數(shù)都支持Modbus RTU協(xié)議。配置的時(shí)候只需要弄清楚從站地址、波特率、數(shù)據(jù)位停止位校驗(yàn)位然后把要讀的寄存器功能碼填進(jìn)去。實(shí)際項(xiàng)目中我常用的方式把變頻器的運(yùn)行頻率、輸出電流、母線電壓這些參數(shù)讀到PLC的保持寄存器里經(jīng)過(guò)量程轉(zhuǎn)換再傳給云平臺(tái)。比如某臺(tái)變頻器的頻率寄存器值是40001有些設(shè)備從40001開(kāi)始數(shù)據(jù)類(lèi)型是16位無(wú)符號(hào)整數(shù)實(shí)際值是寄存器值的10倍。這個(gè)10倍關(guān)系必須在PLC側(cè)處理完云平臺(tái)上顯示的才是真正可讀的58.5Hz而不是585。輪詢周期是必須算的不能拍腦袋。一個(gè)經(jīng)驗(yàn)公式是單站輪詢時(shí)間等于收發(fā)幀時(shí)間加設(shè)備響應(yīng)時(shí)間加上延遲乘上總站數(shù)。一臺(tái)響應(yīng)時(shí)間50毫秒的變頻器波特率9600下讀一次4個(gè)寄存器大概需要30毫秒幀時(shí)間單站大約80毫秒十個(gè)站就是800毫秒。所以點(diǎn)位刷新周期設(shè)置在1秒以上才合理。如果又掛了溫控表又掛了電表建議把點(diǎn)位分成慢周期和快周期兩組慢的5秒一輪快的1秒一輪。2.3 OPC UA向上去對(duì)接MES/SCADA也能采集數(shù)控機(jī)床Modbus很好用但它是老協(xié)議?,F(xiàn)在新建工廠要么用西門(mén)子S7協(xié)議要么直接用OPC UA。TM1200集成了OPC UA服務(wù)器端對(duì)外暴露標(biāo)準(zhǔn)的OPC UA接口端口4840MES系統(tǒng)、SCADA系統(tǒng)、組態(tài)軟件比如WinCC都可以直接以O(shè)PC UA客戶端身份去讀取這臺(tái)PLC的數(shù)據(jù)。集成商最頭疼的“每個(gè)PLC廠商一種私有通信協(xié)議”的問(wèn)題在OPC UA這里被統(tǒng)一掉了。更討巧的用法是讓TM1200作為OPC UA客戶端去采集那些本身支持OPC UA的新設(shè)備?,F(xiàn)在不少數(shù)控機(jī)床、智能傳感器、注塑機(jī)控制系統(tǒng)都直接內(nèi)置了OPC UA Server。用PLC去主動(dòng)連它們的OPC UA接口不需要破線不需要知道寄存器地址拿到的是設(shè)備廠家定義好的結(jié)構(gòu)化數(shù)據(jù)。對(duì)于“讀取傳感器、數(shù)控機(jī)床等設(shè)備的運(yùn)行狀態(tài)數(shù)據(jù)判斷設(shè)備是否正?!边@類(lèi)需求OPC UA采集是最省事的一條路。有一點(diǎn)要注意OPC UA走以太網(wǎng)涉及IP地址規(guī)劃、安全策略和證書(shū)配置。首次連接時(shí)雙方要互認(rèn)證書(shū)現(xiàn)場(chǎng)調(diào)試時(shí)經(jīng)常因?yàn)樽C書(shū)不匹配導(dǎo)致連接失敗這個(gè)放到后面避坑章節(jié)細(xì)說(shuō)。2.4 點(diǎn)位表設(shè)計(jì)從“485寄存器號(hào)”到“有意義的變量名”數(shù)據(jù)采集最終要落到一張點(diǎn)位表上。點(diǎn)位表不是寫(xiě)給自己看的是給整個(gè)項(xiàng)目所有參與者看的。我在項(xiàng)目里的習(xí)慣是按“設(shè)備-子系統(tǒng)-參數(shù)”三層建模直接舉一個(gè)機(jī)床監(jiān)控的實(shí)例點(diǎn)位名稱來(lái)源寄存器數(shù)據(jù)類(lèi)型量程轉(zhuǎn)換上報(bào)條件主軸電流變頻器4000116位無(wú)符號(hào)實(shí)際值寄存器值/10變化超過(guò)0.5A上報(bào)主軸溫度溫度變送器AIW0映射D20016位無(wú)符號(hào)4-20mA對(duì)應(yīng)0-100℃變化超過(guò)1℃上報(bào)冷卻液液位液位開(kāi)關(guān)DI1布爾無(wú)狀態(tài)翻轉(zhuǎn)立即上報(bào)變頻器運(yùn)行頻率變頻器4000216位無(wú)符號(hào)實(shí)際值寄存器值/10變化超過(guò)0.2Hz上報(bào)設(shè)備運(yùn)行狀態(tài)PLC內(nèi)部M100布爾無(wú)狀態(tài)翻轉(zhuǎn)立即上報(bào)點(diǎn)位命名規(guī)范直接決定云平臺(tái)看板后面好不好維護(hù)。直接叫“溫度”的點(diǎn)位到第三個(gè)月你自己都會(huì)忘掉它是哪臺(tái)設(shè)備的溫度。前綴建議帶設(shè)備編號(hào)和子系統(tǒng)比如“M01_Spindle_Temp”后面看板排序、報(bào)表導(dǎo)出、報(bào)警追溯都省心。3. 數(shù)據(jù)上行鏈路的設(shè)計(jì)邏輯邊緣處理、斷網(wǎng)補(bǔ)償與設(shè)備安全3.1 云連接方式和數(shù)據(jù)格式TM1200的上云通道有兩條有線網(wǎng)口和4G模塊。兩種方式都行看現(xiàn)場(chǎng)條件。固定產(chǎn)線建議走有線信號(hào)穩(wěn)定移動(dòng)設(shè)備或者偏遠(yuǎn)站點(diǎn)直接上4G模塊插一張物聯(lián)網(wǎng)卡就能用。上云協(xié)議用的是MQTT數(shù)據(jù)包以JSON格式打包。MQTT是輕量級(jí)發(fā)布訂閱協(xié)議長(zhǎng)連接保持非常適合PLC這種“數(shù)據(jù)量不大但要求實(shí)時(shí)性”的場(chǎng)合。一條典型的上行數(shù)據(jù)長(zhǎng)這樣{ device: TM1200-20240601, timestamp: 2025-01-15T10:23:4508:00, points: { M01_Spindle_Temp: 52.3, M01_Spindle_Current: 18.5, M01_Status: 1 } }時(shí)間戳一定要帶時(shí)區(qū)而且最好是設(shè)備本地時(shí)間。不要用云平臺(tái)接收時(shí)間當(dāng)數(shù)據(jù)時(shí)間因?yàn)閿嗑W(wǎng)補(bǔ)傳的時(shí)候數(shù)據(jù)時(shí)間和接收時(shí)間完全是兩回事。3.2 邊緣規(guī)則引擎不是所有數(shù)據(jù)都有必要上傳很多第一次做上云項(xiàng)目的人容易犯一個(gè)錯(cuò)誤把所有PLC變量全部按1秒周期往上推。結(jié)果一個(gè)站點(diǎn)一小時(shí)產(chǎn)生幾千條數(shù)據(jù)流量費(fèi)看著就心疼云平臺(tái)收到的數(shù)據(jù)大部分還都是重復(fù)的。TM1200內(nèi)部有邊緣規(guī)則配置要利用起來(lái)。我的做法是分三類(lèi)處理設(shè)備狀態(tài)類(lèi)點(diǎn)位狀態(tài)一旦翻轉(zhuǎn)立即上報(bào)不上報(bào)周期。因?yàn)榭蛻粼谠破脚_(tái)上最關(guān)心的就是設(shè)備有沒(méi)有停機(jī)、有沒(méi)有報(bào)警這類(lèi)信息講究時(shí)效性一秒都不能拖。過(guò)程量點(diǎn)位比如溫度、壓力、電流設(shè)置變化死區(qū)上報(bào)。溫度穩(wěn)定在52到53度之間波動(dòng)時(shí)不需要一直上報(bào)變化超過(guò)1度再上報(bào)即可。這樣既保證趨勢(shì)曲線連續(xù)又砍掉大量重復(fù)數(shù)據(jù)。統(tǒng)計(jì)類(lèi)數(shù)據(jù)比如開(kāi)機(jī)時(shí)長(zhǎng)、總產(chǎn)量按固定周期定時(shí)上報(bào)就行上報(bào)周期根據(jù)業(yè)務(wù)需求定一般用5分鐘或者10分鐘。報(bào)警判斷我強(qiáng)烈建議放在PLC本地做不要等云平臺(tái)判斷。PLC掃描周期毫秒級(jí)云平臺(tái)規(guī)則引擎秒級(jí)本地判斷能捕捉到更短促的故障瞬間。報(bào)警條件、恢復(fù)條件、報(bào)警級(jí)別都在PLC程序里寫(xiě)清楚觸發(fā)以后把狀態(tài)位推上云云平臺(tái)只負(fù)責(zé)展示和通知。3.3 斷網(wǎng)緩存和續(xù)傳4G信號(hào)不好是現(xiàn)場(chǎng)常態(tài)尤其工廠里鋼結(jié)構(gòu)多信號(hào)屏蔽嚴(yán)重。TM1200的數(shù)據(jù)鏈路里設(shè)計(jì)了斷網(wǎng)緩存機(jī)制本地有一個(gè)數(shù)據(jù)暫存區(qū)斷網(wǎng)期間數(shù)據(jù)按設(shè)定周期繼續(xù)寫(xiě)入恢復(fù)網(wǎng)絡(luò)后按時(shí)間順序補(bǔ)傳。斷網(wǎng)補(bǔ)償是無(wú)縫的但云平臺(tái)側(cè)要配合做一件很重要的事區(qū)分“遲到數(shù)據(jù)”和“實(shí)時(shí)數(shù)據(jù)”。建議協(xié)議里帶時(shí)間戳渲染時(shí)如果發(fā)現(xiàn)數(shù)據(jù)時(shí)間戳比當(dāng)前時(shí)間晚超過(guò)一定閾值比如10秒就把它歸入歷史數(shù)據(jù)不能覆蓋當(dāng)前最新?tīng)顟B(tài)。這樣才能保證看板上顯示的狀態(tài)始終是最新時(shí)刻的現(xiàn)場(chǎng)情況。3.4 工控安全的幾個(gè)基本動(dòng)作設(shè)備上云之后安全邊界就變成了一條數(shù)字邊界。我列幾個(gè)必須做到的基礎(chǔ)項(xiàng)TLS加密傳輸、設(shè)備證書(shū)認(rèn)證、云平臺(tái)賬號(hào)權(quán)限隔離、默認(rèn)密碼強(qiáng)制修改。TM1200本身支持證書(shū)配置和加密通信上電第一步建議就把默認(rèn)密碼改掉再把設(shè)備綁定到指定項(xiàng)目組不要用一個(gè)裸奔的設(shè)備直接連云端。工業(yè)現(xiàn)場(chǎng)網(wǎng)絡(luò)如果是開(kāi)放式辦公網(wǎng)復(fù)用最好做VLAN隔離把PLC、數(shù)控機(jī)床這些生產(chǎn)設(shè)備單獨(dú)劃一個(gè)網(wǎng)段辦公網(wǎng)訪問(wèn)不到只有云平臺(tái)通過(guò)白名單訪問(wèn)。這個(gè)不復(fù)雜但很多小廠沒(méi)人管安全風(fēng)險(xiǎn)就在這。4. 從接線到云看板走通第一條數(shù)據(jù)我實(shí)測(cè)的完整配置路徑4.1 硬件接線和檢查拿到TM1200之后第一次上電前的檢查順序我建議按這幾步走。電源接線要看好極性DC24V電源正負(fù)極別接反。一個(gè)容易忽略的細(xì)節(jié)是開(kāi)關(guān)電源的功率余量。如果同一柜子里接觸器、繼電器頻繁動(dòng)作電源瞬間跌落會(huì)導(dǎo)致PLC重啟所以我一般會(huì)選額定功率1.5倍以上的開(kāi)關(guān)電源。RS485接線要按標(biāo)準(zhǔn)來(lái)A/B兩根線別接反屏蔽層單端接地所有設(shè)備手拉手串接不要星型連接??偩€兩端接終端電阻如果總線上有十臺(tái)設(shè)備線又比較長(zhǎng)終端電阻不接就會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)亂。波特率統(tǒng)一設(shè)置設(shè)備之間不一致就通不上。網(wǎng)線的坑反而常見(jiàn)很多現(xiàn)場(chǎng)“模塊識(shí)別不了”的問(wèn)題最后查出來(lái)是網(wǎng)線只壓了四根芯。檢查網(wǎng)線的時(shí)候直接看燈交換機(jī)端口燈亮且是綠色鏈路基本沒(méi)問(wèn)題。4.2 在PLC里準(zhǔn)備好數(shù)據(jù)字典上電完成后先在PLC程序里把要上云的變量梳理出來(lái)。比如采集一路溫度信號(hào)模擬量通道AIW0經(jīng)過(guò)量程轉(zhuǎn)換寫(xiě)入保持寄存器D200梯形圖大概是這樣一個(gè)思路讀模擬量原始值減去偏移量乘工程系數(shù)存到D200再觸發(fā)一個(gè)上云標(biāo)記。這步真正要花心思的是寄存器規(guī)劃。這一點(diǎn)和傳統(tǒng)PLC的使用習(xí)慣非常一致——類(lèi)似三菱FX3U的D0到D8默認(rèn)斷電不保持需要保持的數(shù)據(jù)要放到斷電保持寄存器區(qū)。TM1200做數(shù)據(jù)字典的時(shí)候哪些數(shù)據(jù)斷點(diǎn)后要保持、哪些不保持要提前規(guī)劃好否則設(shè)備斷電重啟云平臺(tái)會(huì)收到一批清零的初始值。4.3 建立變量表和上云映射接著在配置工具里建立變量映射表。把D200命名為“M01_Spindle_Temp”選擇數(shù)據(jù)類(lèi)型為16位無(wú)符號(hào)整數(shù)設(shè)置量程上下限是0到100攝氏度再?gòu)臏囟茸兯推鞯恼f(shuō)明書(shū)里核對(duì)4mA對(duì)應(yīng)0度、20mA對(duì)應(yīng)100度。映射關(guān)系里最容易出問(wèn)題的是數(shù)據(jù)類(lèi)型。Modbus寄存器默認(rèn)是16位但溫度值如果超過(guò)65535或者有小數(shù)要求就可能要組合成32位浮點(diǎn)數(shù)。這時(shí)候數(shù)據(jù)類(lèi)型選錯(cuò)了云平臺(tái)上讀到的就是亂碼一樣的大數(shù)。遇到這種情況第一反應(yīng)不是懷疑PLC壞了而是查數(shù)據(jù)類(lèi)型配置。4.4 本地模擬測(cè)試在沒(méi)有真實(shí)變頻器或者溫控表的情況下我習(xí)慣用一個(gè)Python腳本先模擬一個(gè)Modbus從站把整條采集鏈路打通。用pymodbus庫(kù)跑一個(gè)小服務(wù)開(kāi)放幾個(gè)寄存器TM1200作為主站去讀讀回來(lái)的數(shù)據(jù)能出現(xiàn)在云平臺(tái)上說(shuō)明這整條鏈路是通的。from pymodbus.server import StartTcpServer from pymodbus.datastore import ModbusSlaveContext, ModbusDataBlock # 模擬一個(gè)Modbus TCP從站開(kāi)放3個(gè)保持寄存器 store ModbusSlaveContext( zero_modeTrue, diModbusDataBlock.create([0] * 32), coModbusDataBlock.create([0] * 32), hrModbusDataBlock.create([100, 585, 18.5 * 10]), # 對(duì)應(yīng)溫度、頻率、電流 irModbusDataBlock.create([0] * 32) ) StartTcpServer(store, address(0.0.0.0, 502))這個(gè)腳本跑在調(diào)試電腦上TM1200的Modbus主站就去連這臺(tái)電腦的IP地址讀三個(gè)寄存器。能讀到再接真實(shí)的變頻器讀不到先查網(wǎng)絡(luò)再查協(xié)議參數(shù)。一步步縮小范圍比一次性接好全部設(shè)備再排錯(cuò)要快得多。4.5 云平臺(tái)側(cè)創(chuàng)建設(shè)備和看板云平臺(tái)側(cè)的操作就比較常規(guī)了創(chuàng)建產(chǎn)品添加設(shè)備填設(shè)備ID和密鑰然后把點(diǎn)位表一次性導(dǎo)入批量綁定到數(shù)據(jù)字典??窗逶O(shè)計(jì)建議先畫(huà)一個(gè)草圖搞清楚現(xiàn)場(chǎng)到底關(guān)心什么。設(shè)備狀態(tài)卡片放在最顯眼的位置下面是關(guān)鍵溫度曲線和報(bào)警列表報(bào)表做成每日匯總發(fā)給班組長(zhǎng)。5. 與傳統(tǒng)PLC生態(tài)的關(guān)系編程習(xí)慣、觸摸屏和品牌PLC混用5.1 編程方式怎么上手很多工程師拿到一臺(tái)新PLC第一個(gè)問(wèn)題是“我用三菱的會(huì)不會(huì)不習(xí)慣”。TM1200的編程環(huán)境基于IEC 61131-3標(biāo)準(zhǔn)支持梯形圖、結(jié)構(gòu)化文本、功能塊圖幾種語(yǔ)言。梯形圖是老工程師的母語(yǔ)結(jié)構(gòu)化文本適合做算法兩者可以在同一個(gè)工程里混用這個(gè)自由度比傳統(tǒng)單一品牌PLC要好。上手階段最容易忽略的反而不是語(yǔ)法而是“變量名觀念”。傳統(tǒng)PLC寫(xiě)習(xí)慣了地址直接寫(xiě)X0、Y0、D100。上云PLC更強(qiáng)調(diào)變量名程序里盡量用有意義的符號(hào)名IO地址只是底層的物理映射。習(xí)慣了這個(gè)寫(xiě)法以后程序可讀性直線提升后期維護(hù)的人會(huì)感謝你。5.2 一臺(tái)PLC能不能接多個(gè)觸摸屏能而且不只是本地經(jīng)常有人問(wèn)“一個(gè)PLC可以接兩個(gè)觸摸屏嗎”答案是能。傳統(tǒng)方案里以太網(wǎng)型觸摸屏只要在同一網(wǎng)段多臺(tái)可以同時(shí)連接同一臺(tái)PLC串口屏則通過(guò)擴(kuò)展從站方式對(duì)接。TM1200給了第三種選擇它自帶云端畫(huà)面發(fā)布能力相當(dāng)于給你加了一塊“云觸摸屏”。操作人員在手機(jī)或平板上打開(kāi)云平臺(tái)就是一塊隨時(shí)隨地可訪問(wèn)的觸摸屏。本地和云兩端都顯示同一套生產(chǎn)數(shù)據(jù)客戶車(chē)間經(jīng)理在辦公室就能看到機(jī)臺(tái)畫(huà)面遠(yuǎn)程診斷也借助它解決了很多問(wèn)題。5.3 當(dāng)TM1200遇到西門(mén)子S7-200Smart、三菱FX3U、匯川AM763現(xiàn)實(shí)項(xiàng)目里TM1200不一定是一臺(tái)獨(dú)立運(yùn)行的PLC它經(jīng)常作為“上云數(shù)據(jù)網(wǎng)關(guān)”疊加在原有PLC系統(tǒng)之上。比如客戶現(xiàn)場(chǎng)已經(jīng)有西門(mén)子S7-200Smart在跑控制邏輯不想替換就可以把S7-200Smart的通信口配置成Modbus RTU從站TM1200作為Modbus主站去讀它的數(shù)據(jù)再轉(zhuǎn)發(fā)到云平臺(tái)。這種情況下TM1200不參與控制只做數(shù)據(jù)采集和上云是性價(jià)比最高的改造路徑。三菱FX3U同理通過(guò)485BD板擴(kuò)展的通信口可以走M(jìn)odbus RTU協(xié)議地址映射關(guān)系在FX3U說(shuō)明書(shū)里有詳細(xì)的對(duì)照表。匯川AM763這類(lèi)新PLC本身雖帶以太網(wǎng)但如果你不想引入它的私有協(xié)議和編程環(huán)境TM1200同樣可以走M(jìn)odbus TCP或者OPC UA去采集。這里還想回應(yīng)那個(gè)“匯川AM763無(wú)法識(shí)別本地IO模塊”的熱搜問(wèn)題這類(lèi)新PLC的本地IO模塊識(shí)別失敗一般不是PLC壞了而是固件版本和模塊版本不匹配或者模塊插槽位置跳過(guò)了起始槽。無(wú)論用哪個(gè)品牌新PLC到貨第一件事就是確認(rèn)固件版本升級(jí)到與模塊匹配的版本再下裝程序。5.4 遠(yuǎn)程調(diào)試和固件升級(jí)TM1200支持云端遠(yuǎn)程下載PLC程序這是讓我覺(jué)得真正省心的一項(xiàng)能力。以前改一段梯形圖就得跑一次現(xiàn)場(chǎng)現(xiàn)在只要在授權(quán)范圍內(nèi)遠(yuǎn)程就能下裝。下裝前建議做一次完整備份包括程序、點(diǎn)位表、云映射配置防止下到一半發(fā)現(xiàn)改錯(cuò)了還能一鍵回滾。固件升級(jí)要格外小心升級(jí)過(guò)程中絕對(duì)不允許斷電。升級(jí)前把程序和配置備份到本地然后再執(zhí)行。如果升級(jí)過(guò)程中網(wǎng)絡(luò)中斷設(shè)備可能會(huì)進(jìn)入異常狀態(tài)有些情況下需要返廠恢復(fù)所以擴(kuò)容或者升級(jí)操作建議安排在停機(jī)窗口內(nèi)做。6. 現(xiàn)場(chǎng)調(diào)試踩過(guò)的坑485總線、報(bào)警風(fēng)暴和遠(yuǎn)程維護(hù)的邊界6.1 485總線丟包和亂碼的排查鏈路Modbus RTU在現(xiàn)場(chǎng)最典型的問(wèn)題就是丟包和亂碼我給出一個(gè)完整的排查順序。現(xiàn)象是變頻器數(shù)據(jù)偶爾讀到錯(cuò)誤值比如頻率突然變成0或者變成幾千。第一步查物理層屏蔽層是否接了而且還接了地、終端電阻是否到位、線纜是不是雙絞線。第二步查參數(shù)配置從站地址、波特率、校驗(yàn)位、數(shù)據(jù)位十之八九是兩臺(tái)設(shè)備參數(shù)不一致。第三步用Modbus調(diào)試工具抓幀報(bào)文出現(xiàn)CRC錯(cuò)誤代表干擾嚴(yán)重報(bào)文正常再判斷寄存器類(lèi)型、功能碼是否正確?,F(xiàn)象優(yōu)先檢查項(xiàng)處理方案數(shù)據(jù)偶爾跳變屏蔽層接地、雙絞線、變頻器干擾降波特率、加485隔離器完全讀不到數(shù)據(jù)A/B正反、站號(hào)、波特率逐項(xiàng)核對(duì)用調(diào)試工具抓幀能讀到但數(shù)值錯(cuò)誤寄存器類(lèi)型、數(shù)據(jù)類(lèi)型、倍率對(duì)照設(shè)備說(shuō)明書(shū)逐字節(jié)解析溫度/電流波形毛刺模擬量濾波、信號(hào)源波動(dòng)PLC側(cè)加一階低通濾波最后一條經(jīng)驗(yàn)當(dāng)現(xiàn)場(chǎng)實(shí)在找不到問(wèn)題時(shí)試試把波特率從19200降到9600。低速傳輸抗干擾能力明顯更強(qiáng)代價(jià)只是刷新慢一點(diǎn)但在絕大多數(shù)工業(yè)傳感器場(chǎng)景下完全夠用。6.2 報(bào)警風(fēng)暴怎么避免設(shè)備上云第一周是報(bào)警風(fēng)暴的高發(fā)期??蛻羰謾C(jī)一晚上收到幾百條報(bào)警推送直接想把系統(tǒng)關(guān)掉。原因很簡(jiǎn)單報(bào)警閾值設(shè)得離正常工作點(diǎn)太近正常波動(dòng)就觸發(fā)了。處理報(bào)警要從三個(gè)層面一起想閾值、回差、防抖。閾值不能只看正常工作值要看看設(shè)備調(diào)試期間出現(xiàn)過(guò)最大最小的瞬時(shí)值留足余量?;夭罹褪腔謴?fù)值不能等于閾值溫度報(bào)警80度只能到78度才恢復(fù)不然溫度剛好在79到80之間來(lái)回竄報(bào)警恢復(fù)會(huì)像呼吸燈一樣反復(fù)閃。防抖則是連續(xù)采集3秒都越限才觸發(fā)報(bào)警現(xiàn)場(chǎng)偶發(fā)的干擾脈沖不會(huì)造成誤報(bào)。PID溫差波動(dòng)大的問(wèn)題也類(lèi)似先看采樣周期再看濾波最后調(diào)P和I。溫度系統(tǒng)普遍慣性大P值太大容易震蕩I值太大容易出現(xiàn)漂移原則是“先調(diào)P到穩(wěn)定不振蕩再加I消除靜差”不要一上來(lái)參數(shù)全改。6.3 遠(yuǎn)程維護(hù)的安全邊界遠(yuǎn)程調(diào)試能力是雙刃劍方便的同時(shí)意味著接通了一條遠(yuǎn)程執(zhí)行的通道。我給自己立過(guò)幾條規(guī)矩賬號(hào)分級(jí)程序維護(hù)賬號(hào)和普通查看賬號(hào)分開(kāi)。查看賬號(hào)只能看數(shù)據(jù)看板維護(hù)賬號(hào)才能遠(yuǎn)程下裝?,F(xiàn)場(chǎng)下載程序的時(shí)候通知產(chǎn)線提前停機(jī)或換線不要在生產(chǎn)時(shí)段遠(yuǎn)程改程序。所有人的操作都留日志云平臺(tái)上誰(shuí)在什么時(shí)間改了哪臺(tái)設(shè)備一查便知。改之前完整備份改壞了能現(xiàn)場(chǎng)回退。做好這幾點(diǎn)遠(yuǎn)程維護(hù)就是效率工具而不是風(fēng)險(xiǎn)敞口。6.4 云端數(shù)據(jù)“看起來(lái)不對(duì)”時(shí)先檢查哪一步客戶反饋“云平臺(tái)溫度和現(xiàn)場(chǎng)儀表差了很多”的時(shí)候我的排查順序固定是這樣先看量程設(shè)置4-20mA對(duì)應(yīng)0-100度還是0-200度這一項(xiàng)占一半以上問(wèn)題再看數(shù)據(jù)類(lèi)型16位無(wú)符號(hào)和32位浮點(diǎn)讀出來(lái)的完全是兩個(gè)數(shù)字接著查倍率關(guān)系寄存器里存的是不是實(shí)際值的10倍最后才懷疑硬件采集問(wèn)題。按這個(gè)順序多數(shù)“數(shù)據(jù)不對(duì)”的問(wèn)題五分鐘就能定位。最后聊一點(diǎn)個(gè)人體會(huì)。用過(guò)TM1200之后我對(duì)“上云PLC”這個(gè)概念的理解變了很多。以前總覺(jué)得上云是PLC之外的事要加網(wǎng)關(guān)、加軟件、加人維護(hù)現(xiàn)在看上云本來(lái)就應(yīng)該是PLC能力的一部分?,F(xiàn)場(chǎng)數(shù)據(jù)在哪產(chǎn)生就在哪變成云端數(shù)據(jù)。如果正準(zhǔn)備給老產(chǎn)線做數(shù)字化改造我的建議是別急著鋪一堆網(wǎng)關(guān)和邊緣盒子先拿一臺(tái)TM1200把一個(gè)設(shè)備的點(diǎn)位表、云看板、報(bào)警邏輯跑通再考慮規(guī)模復(fù)制。這條路的調(diào)試成本比想象中低很多。