我好像是
大波就是我
級別: 家園常客
|
現(xiàn)在是這樣。有一臺上位機。程序是死的,我沒有辦法修改。上位機通過rs232接口跟下位機(PLC)通訊。 1:PLC發(fā)送給上位機的格式跟內容:PLC發(fā)送數(shù)據(jù) 03 13 02 SD 給上位機, 意思是讓上位機進行某一個操作 然后上位機返回03 13 01E5 說明操作成功(操作很多,這只是舉例子) 2:上位機發(fā)送給PLC的格式跟內容:上位機發(fā)送數(shù)據(jù) 03 13 02 GD 意思是讓下位機(PLC)進行某一個操作 然后上位機返回03 13 01E8 說明操作成功.(操作很多,這只是舉例子) 3:上位機不停發(fā)送固定數(shù)據(jù)給下位機PLC 88 88 88 88, 頻率是每秒一次。(作用是判斷上位機是否死機) 4:下位機不停發(fā)送固定數(shù)據(jù)給上位機 66 66 66 66, 頻率是每秒一次。(作用是判斷下位機是否死機) 問題:請問一下這個應該用什么PLC?走自由口通訊協(xié)議?可是PLC跟上位機一直在不停發(fā)送跟接收數(shù)據(jù)哎。接收跟發(fā)送都是4組十六進制數(shù)據(jù)。要是有協(xié)議的話我還是知道怎么寫,不同數(shù)據(jù)發(fā)送給不同寄存器嘛。 可現(xiàn)在沒辦法指定某一個寄存器哎,都是一股老的發(fā)送,接收。發(fā)送跟接收就這么四組數(shù)據(jù),沒有指定寄存器哎。 有成功例子,人家下位機是用STC C52單片機高仿三菱的工控板子。說明這個是可以寫出來的嘛。 請各位大神提供一個思路,成功的,我發(fā)微信紅包哈。上位機發(fā)送接收格式內容沒有辦法修改哎。這是死的。 |
---|---|
|
weijishanggu
289019538@qq.com
級別: 家園常客
|
你用的什么品牌的PLC?上位機的軟件如果不是很復雜可以重做個,可以走自由協(xié)議通訊,發(fā)送不同的指令接受的字符放到不同的寄存器可以定義的,還有什么不清楚加我聯(lián)系方式。 |
|
---|---|---|
|
我好像是
大波就是我
級別: 家園常客
|
上位機軟件很復雜,不考慮重新寫,而且也沒有源代碼。 我對三菱PLC熟悉一點,請問一下三菱PLC走自由通訊,可以實現(xiàn)這樣的程序嗎? |
---|---|
|
weijishanggu
289019538@qq.com
級別: 家園常客
|
可以的接受寄存器是不停刷新的,保存的都是最近接受的值,之前的會被覆蓋掉。 |
|
---|---|---|
|
我好像是
大波就是我
級別: 家園常客
|
難點在于,上下位機發(fā)送接收都是四組十六進制數(shù)據(jù)(前面兩位數(shù)據(jù)相同),而且上下位機都在不停發(fā)送接收數(shù)據(jù)。 兄弟有沒有弄過這樣的程序?我對三菱PLC邏輯編程伺服控制啥都還可以,就是這個非標準通訊沒用過,完全不知道啥思路。 |
---|---|
|
flyfeky
bilibili 工控貴族
級別: 論壇先鋒
|
你先用RS232指令試試,測試幾個指令,通信上,再寫其它的。 如果是三菱PLC ,先試試232BD。 |
|
---|---|---|
|
weijishanggu
289019538@qq.com
級別: 家園常客
|
你可以看看三菱的編程指令,那有詳細的說明,告訴你要發(fā)送的數(shù)據(jù)放哪接受的數(shù)據(jù)放哪,工控機,PLC,通訊板啥的都搞過,都這樣 |
|
---|---|---|
|
wlf2520
級別: 正式會員
|
按照你的意思,上位機是死的,不能修改添加程序,而通訊是雙方的事,很好奇你如何去和啞巴通訊說話。或者用游戲的一個用語,外掛來解決?估計超神才可以完成吧。如果上位機加點點通訊段,那你的要求就是小菜一碟的事。 [ 此帖被18107889830在2017-09-18 21:01重新編輯 ] |
---|---|
|
不小心遇見你
自動項目、PLC、視覺、通訊等工控軟件開發(fā)QQ3515716
級別: 工控俠客
|
你的上位機如果不是走你的標準協(xié)議 而是自由協(xié)議 上位機程序是現(xiàn)成的? 固定了發(fā)送格式? 首先要知道上位機發(fā)送的數(shù)據(jù)格式 就知道是否走的標準協(xié)議 如果是自由協(xié)議 只能自己寫發(fā)送和接收程序了 如果交換數(shù)據(jù)多的話會累死人 幾條建議 如果協(xié)議是標準協(xié)議 比如 modbus TCPmodbus,canopen等 那么建議你使用一些指令方便的PLC,比如國產(chǎn)的信捷,麥格米特,國外的西門子等。一條指令搞定。 上位機程序自己做,僅是點單的數(shù)據(jù)交換 可以用VB做,如果數(shù)據(jù)交換量大,而且除了數(shù)據(jù)交換外,你的上位機還要進行其他運算的話 ,這就用到多線程,建議使用LBV和c#,否則你會遇到軟件假死現(xiàn)象。 |
|
---|---|---|
|
戇獅
廣州三能:自動化設備制造 自動化培訓
級別: 略有小成
|
用三菱FX232全雙工。 接收到動作命令就回應動作 沒有接收到動作命令就定時發(fā)送死機信號 發(fā)送動作命令時等待回應信息,收到動作回應信息發(fā)送死機信號 不用管寫到哪個寄存器,寫到寄存器就是專用協(xié)議了。用監(jiān)控緩存區(qū)方式發(fā)送和判斷接收信息。 FX232參數(shù)以自由口設定,接收完成信號置位后,緩存區(qū)應該可以得到接收的數(shù)據(jù),再轉移出來作判斷 顧慮一點就是怕PLC操作速度不夠電腦快而出現(xiàn)通訊失敗。單片機做肯定是比PLC快的 |
|
---|---|---|
|