上位機組態軟體的IO驅動若提供modbus協議,則其變數地址直接使用modbus協議的地址就可以了。modbus協議的地址格式主要是四種類型:0xxxx(線圈,DO型別)、1xxxx(觸點,DI型別)、3xxxx(輸入暫存器,AI型別)和4xxxx(保持暫存器,AO型別)。
下位機ARM stm32若程式是自己開發,需要程式中定義上述modbus協議的4種地址的資料區,再把4種地址資料區與ARM stm32的IO口建立對映關係,如:
DI口資料===(MOV、COPY指令)===>1xxxx資料區,
AI口資料===(MOV、COPY指令)===>3xxxx資料區,
0xxxx資料區===(MOV、COPY指令)===>DO口,
4xxxx資料區===(MOV、COPY指令)===>AO口。
這4種地址的資料,需在主程式中實時、動態地重新整理。
當然,需要在通訊子程式中實現modbus協議的事務操作,即接收到modbus的資料幀後,根據功能碼及地址,相應地處理modbus協議的4種地址區的資料。
上位機組態軟體的IO驅動若提供modbus協議,則其變數地址直接使用modbus協議的地址就可以了。modbus協議的地址格式主要是四種類型:0xxxx(線圈,DO型別)、1xxxx(觸點,DI型別)、3xxxx(輸入暫存器,AI型別)和4xxxx(保持暫存器,AO型別)。
下位機ARM stm32若程式是自己開發,需要程式中定義上述modbus協議的4種地址的資料區,再把4種地址資料區與ARM stm32的IO口建立對映關係,如:
DI口資料===(MOV、COPY指令)===>1xxxx資料區,
AI口資料===(MOV、COPY指令)===>3xxxx資料區,
0xxxx資料區===(MOV、COPY指令)===>DO口,
4xxxx資料區===(MOV、COPY指令)===>AO口。
這4種地址的資料,需在主程式中實時、動態地重新整理。
當然,需要在通訊子程式中實現modbus協議的事務操作,即接收到modbus的資料幀後,根據功能碼及地址,相應地處理modbus協議的4種地址區的資料。