機器人Python編程與開發(fā)-第8章-Python-SDK-IO與MODBUS模塊課件_第1頁
機器人Python編程與開發(fā)-第8章-Python-SDK-IO與MODBUS模塊課件_第2頁
機器人Python編程與開發(fā)-第8章-Python-SDK-IO與MODBUS模塊課件_第3頁
機器人Python編程與開發(fā)-第8章-Python-SDK-IO與MODBUS模塊課件_第4頁
機器人Python編程與開發(fā)-第8章-Python-SDK-IO與MODBUS模塊課件_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第8章PythonSDKIO與MODBUS模塊第8章PythonSDKIO與MODBUS模塊本章目錄8.1數(shù)據(jù)類型介紹8.2IO狀態(tài)獲取與參數(shù)設置8.3基于PythonSDK的MODBUS從機8.4思考與練習本章目錄8.1數(shù)據(jù)類型介紹8.2IO狀態(tài)獲取與參數(shù)設置本章要求

知識目標了解機械臂基于Python語言的用戶IOSDK;了解機械臂基于Python語言的工具端IOSDK;了解機械臂基于Python語言的工具端電源SDK;了解機械臂基于Python語言的MODBUS從機的實現(xiàn)。本章要求知識目標8.1PythonSDKIO與MODBUS模塊數(shù)據(jù)類型介紹8.1PythonSDKIO與MODBUS模塊數(shù)據(jù)類型介8.1數(shù)據(jù)類型介紹8.1.1工具端電源類型Aub-i5機械臂工具端電源類型設置代碼如下所示:classRobotToolPowerType:OUT_0V=0OUT_12V=1OUT_24V=2def__init__(self):Pass工具端IO電源類型可分為三種:(1)OUT_0V電源為0V。(2)OUT_12V電源為12V。(3)OUT_24V電源為24V。8.1數(shù)據(jù)類型介紹8.1.1工具端電源類型classR8.1數(shù)據(jù)類型介紹8.1.2工具端IO地址類型Aub-i5機械臂工具端IO地址類型設置代碼如下所示:classRobotToolIoAddr:TOOL_DIGITAL_IO_0=0TOOL_DIGITAL_IO_1=1TOOL_DIGITAL_IO_2=2TOOL_DIGITAL_IO_3=3def__init__(self):Pass工具端數(shù)字信號IO地址有四個,他們是:(1)TOOL_DIGITAL_IO_0。(2)TOOL_DIGITAL_IO_1。(3)TOOL_DIGITAL_IO_2。(4)TOOL_DIGITAL_IO_3。8.1數(shù)據(jù)類型介紹8.1.2工具端IO地址類型class8.1數(shù)據(jù)類型介紹8.1.3工具端數(shù)字IO類型Aub-i5機械臂工具端數(shù)字IO類型設置代碼如下所示:classRobotToolDigitalIoDir:#輸入IO_IN=0#輸出IO_OUT=1def__init__(self):Pass工具端數(shù)字IO類型有兩種,它們是:IO_IN:輸入類型。IO_OUT:輸出類型。8.1數(shù)據(jù)類型介紹8.1.3工具端數(shù)字IO類型class8.1數(shù)據(jù)類型介紹8.1.4工具端IO名稱Aub-i5機械臂工具端IO名稱設置代碼如下所示:classRobotToolIoName:tool_io_0="T_DI/O_00"tool_io_1="T_DI/O_01"tool_io_2="T_DI/O_02"tool_io_3="T_DI/O_03"def__init__(self):Pass工具數(shù)字IO的名稱有四種,它們是:(1)tool_io_0(工具io_0)。(2)tool_io_1(工具io_1)。(3)tool_io_2(工具io_2)。(4)tool_io_3(工具io_3)。8.1數(shù)據(jù)類型介紹8.1.4工具端IO名稱classR8.1數(shù)據(jù)類型介紹8.1.5用戶IO類型Aub-i5機械臂用戶IO類型的設置代碼如下所示:classRobotIOType:#控制柜IOControlBox_DI=0ControlBox_DO=1ControlBox_AI=2ControlBox_AO=3#用戶IOUser_DI=4User_DO=5User_AI=6User_AO=7def__init__(self):Pass說明:在機器人IO類型包含了:(1)User_DI:用戶數(shù)字輸入類型。(2)User_DO:用戶數(shù)字輸出類型。(3)User_AI:用戶模擬量輸入。(4)User_AO:用戶模擬量輸出。8.1數(shù)據(jù)類型介紹8.1.5用戶IO類型classRo8.1數(shù)據(jù)類型介紹8.1.6用戶IO名稱Aub-i5機械臂用戶IO名稱的設置代碼如下所示:classRobotUserIoName:#控制柜用戶DIuser_di_00="U_DI_00"user_di_01="U_DI_01"user_di_02="U_DI_02"user_di_03="U_DI_03"user_di_04="U_DI_04"user_di_05="U_DI_05"user_di_06="U_DI_06"user_di_07="U_DI_07"user_di_10="U_DI_10"user_di_11="U_DI_11"user_di_12="U_DI_12"user_di_13="U_DI_13"user_di_14="U_DI_14"user_di_15="U_DI_15"user_di_16="U_DI_16"user_di_17="U_DI_17"#控制柜用戶DOuser_do_00="U_DO_00"user_do_01="U_DO_01"user_do_02="U_DO_02"user_do_03="U_DO_03"user_do_04="U_DO_04"user_do_05="U_DO_05"user_do_06="U_DO_06"user_do_07="U_DO_07"user_do_10="U_DO_10"user_do_11="U_DO_11"user_do_12="U_DO_12"user_do_13="U_DO_13"user_do_14="U_DO_14"user_do_15="U_DO_15"user_do_16="U_DO_16"user_do_17="U_DO_17"def__init__(self):Pass8.1數(shù)據(jù)類型介紹8.1.6用戶IO名稱classRo8.1數(shù)據(jù)類型介紹8.1.6用戶IO名稱說明:機器人用戶輸入IO類型名稱包含:(1)user_di_00:輸入IO—00。(2)user_di_01:輸入IO—01。(3)user_di_02:輸入IO—02。(4)user_di_03:輸入IO—03。(5)user_di_04:輸入IO—04。(6)user_di_05:輸入IO—05。(7)user_di_06:輸入IO—06。(8)user_di_07:輸入IO—07。(9)user_di_10:輸入IO—10。(10)user_di_11:輸入IO—11。(11)user_di_12:輸入IO—12。(12)user_di_13:輸入IO—13。(13)user_di_14:輸入IO—14。(14)user_di_15:輸入IO—15。(15)user_di_16:輸入IO—16。(16)user_di_17:輸入IO—17。機器人用戶輸出IO類型名稱包含:(1)user_do_00:輸出IO—00。(2)user_do_01:輸出IO—01。(4)user_do_02:輸出IO—02。(5)user_do_03:輸出IO—03。(6)user_do_04:輸出IO—04。(7)user_do_05:輸出IO—05。(8)user_do_06:輸出IO—06。(9)user_do_07:輸出IO—07。(10)user_do_10:輸出IO—10。(11)user_do_11:輸出IO—11。(12)user_do_12:輸出IO—12。(13)user_do_13:輸出IO—13。(14)user_do_14:輸出IO—14。(15)user_do_15:輸出IO—15。(17)user_do_16:輸出IO—16。(18)user_do_17:輸出IO—17。8.1數(shù)據(jù)類型介紹8.1.6用戶IO名稱(10)user8.2PythonSDKIO與MODBUS模塊IO狀態(tài)獲取與參數(shù)設置8.2PythonSDKIO與MODBUS模塊IO狀態(tài)獲8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置Aub-i5機械臂接口板IO名稱的配置的獲取方法如下所示:#獲取控制柜用戶DI?io_config=robot.get_board_io_config(RobotIOType.User_DI)#輸出DI配置?(io_config)#獲取控制柜用戶DO?io_config=robot.get_board_io_config(RobotIOType.User_DO)#輸出DO配置?(io_config)程序說明:robot是機械臂控制類程序說明如下:?:獲取接口板IO的配置信息,參數(shù)為用戶輸入IO,返回值賦值到io_config變量中。?:打印用戶輸入IO的配置信息,信息包括(地址,類型,id,數(shù)值和名稱),如下:(接至P89打印輸入IO配置)。?:獲取接口板IO的配置信息,參數(shù)為用戶輸出IO,返回值賦值到io_config變量中。8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置[{'addr':30,'type':4,'id':'F1','value':-1.0,'name':'F1'},{'addr':31,'type':4,'id':'F2','value':-1.0,'name':'F2'},{'addr':32,'type':4,'id':'F3','value':-1.0,'name':'F3'},{'addr':33,'type':4,'id':'F4','value':-1.0,'name':'F4'},{'addr':34,'type':4,'id':'F5','value':-1.0,'name':'F5'},{'addr':35,'type':4,'id':'F6','value':-1.0,'name':'F6'},{'addr':36,'type':4,'id':'U_DI_00','value':-1.0,'name':'U_DI_00'},{'addr':37,'type':4,'id':'U_DI_01','value':-1.0,'name':'U_DI_01'},{'addr':38,'type':4,'id':'U_DI_02','value':-1.0,'name':'U_DI_02'},{'addr':39,'type':4,'id':'U_DI_03','value':-1.0,'name':'U_DI_03'},{'addr':40,'type':4,'id':'U_DI_04','value':-1.0,'name':'U_DI_04'},8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置{'addr':41,'type':4,'id':'U_DI_05','value':-1.0,'name':'U_DI_05'},{'addr':42,'type':4,'id':'U_DI_06','value':-1.0,'name':'U_DI_06'},{'addr':43,'type':4,'id':'U_DI_07','value':-1.0,'name':'U_DI_07'},{'addr':44,'type':4,'id':'U_DI_10','value':-1.0,'name':'U_DI_10'},{'addr':45,'type':4,'id':'U_DI_11','value':-1.0,'name':'U_DI_11'},{'addr':46,'type':4,'id':'U_DI_12','value':-1.0,'name':'U_DI_12'},{'addr':47,'type':4,'id':'U_DI_13','value':-1.0,'name':'U_DI_13'},{'addr':48,'type':4,'id':'U_DI_14','value':-1.0,'name':'U_DI_14'},{'addr':49,'type':4,'id':'U_DI_15','value':-1.0,'name':'U_DI_15'},{'addr':50,'type':4,'id':'U_DI_16','value':-1.0,'name':'U_DI_16'},{'addr':51,'type':4,'id':'U_DI_17','value':-1.0,'name':'U_DI_17'}]8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置?打印輸出IO配置信息(包括地址,類型,id,數(shù)值和名稱)如下所示:[{'addr':32,'type':5,'id':'U_DO_00','value':-1.0,'name':'U_DO_00'},{'addr':33,'type':5,'id':'U_DO_01','value':-1.0,'name':'U_DO_01'},{'addr':34,'type':5,'id':'U_DO_02','value':-1.0,'name':'U_DO_02'},{'addr':35,'type':5,'id':'U_DO_03','value':-1.0,'name':'U_DO_03'},{'addr':36,'type':5,'id':'U_DO_04','value':-1.0,'name':'U_DO_04'},{'addr':37,'type':5,'id':'U_DO_05','value':-1.0,'name':'U_DO_05'},{'addr':38,'type':5,'id':'U_DO_06','value':-1.0,'name':'U_DO_06'},{'addr':39,'type':5,'id':'U_DO_07','value':-1.0,'name':'U_DO_07'},{'addr':40,'type':5,'id':'U_DO_10','value':-1.0,'name':'U_DO_10'},{'addr':41,'type':5,'id':'U_DO_11','value':-1.0,'name':'U_DO_11'},8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置{'addr':42,'type':5,'id':'U_DO_12','value':-1.0,'name':'U_DO_12'},{'addr':43,'type':5,'id':'U_DO_13','value':-1.0,'name':'U_DO_13'},{'addr':44,'type':5,'id':'U_DO_14','value':-1.0,'name':'U_DO_14'},{'addr':45,'type':5,'id':'U_DO_15','value':-1.0,'name':'U_DO_15'},{'addr':46,'type':5,'id':'U_DO_16','value':-1.0,'name':'U_DO_16'},{'addr':47,'type':5,'id':'U_DO_17','value':-1.0,'name':'U_DO_17'}]8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.2設置機械臂接口板IO狀態(tài)Aub-i5機械臂接口板IO狀態(tài)的設置代碼如下所示:#設置用戶輸出IO-1狀態(tài)為1(有效)robot.set_board_io_status(RobotIOType.User_DO,RobotUserIoName.user_do_01,1)?(io_config)其中,robot是機械臂控制類,該行代碼包括的三個參數(shù)說明如下:(1)參數(shù)1:機器人IO類型為用戶輸出。(2)參數(shù)2:機器人用戶IO名稱為用戶輸出1。(3)參數(shù)3:1(有效)。8.2IO狀態(tài)獲取與參數(shù)設置8.2.2設置機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.3獲取機械臂接口板IO狀態(tài)Aub-i5機械臂接口板IO狀態(tài)的獲取,其程序塊代碼如下所示:#獲取用戶輸入IO1狀態(tài)?io_status=robot.get_board_io_status(RobotIOType.User_DI,RobotUserIoName.user_di_03)?("Digitalinput:")?(io_status)robot是機械臂控制類,程序說明如下:?:獲取接口板IO狀態(tài),該行代碼包含2個參數(shù),其中參數(shù)1:機器人IO類型為用戶輸入。參數(shù)2:機器人用戶IO名稱為用戶輸入3。返回值賦值給io_status。?:打印“Digitalinput:”?:打印獲取到的輸入IO-3的狀態(tài)。程序運行結果如下:Digitalinput:08.2IO狀態(tài)獲取與參數(shù)設置8.2.3獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.4獲取機械臂工具端電源狀態(tài)Aub-i5機械臂工具端電源狀態(tài)的獲取,其程序塊代碼如下所示:#獲取工具端電壓數(shù)值類型(0V12V24V)?Tool_voltage_type=robot.get_tool_power_type()?("Tool_voltage_type:")?(Tool_voltage_type)robot是機械臂控制類,程序說明如下:?:獲取工具端電源類型,返回值賦值給Tool_voltage_type。?:打印“Tool_voltage_type:”。?:打印獲取到的工具端電源狀態(tài)。程序運行結果如下:Tool_voltage_type:1(根據(jù)對應數(shù)據(jù)結構可看出1代表12V)8.2IO狀態(tài)獲取與參數(shù)設置8.2.4獲取機械臂工具端電8.2IO狀態(tài)獲取與參數(shù)設置8.2.5設置機械臂工具端電源狀態(tài)Aub-i5機械臂工具端電源狀態(tài)的設置代碼如下所示:#設置工具端電源為24vrobot.set_tool_power_type(RobotToolPowerType.OUT_12V)其中,robot是機械臂控制類,該行代碼的參數(shù)為輸出2V。8.2IO狀態(tài)獲取與參數(shù)設置8.2.5設置機械臂工具端電8.2IO狀態(tài)獲取與參數(shù)設置8.2.6設置機械臂工具端IO類型Aub-i5機械臂工具端IO類型的設置代碼如下所示:#設置工具端IO_1為輸出robot.set_tool_io_type(RobotToolIoAddr.TOOL_DIGITAL_IO_1,RobotToolDigitalIoDir.IO_OUT)該行代碼包括的2個參數(shù)說明如下:(1)參數(shù)1:工具io-1的名稱(2)參數(shù)2:工具IO類型為輸出8.2IO狀態(tài)獲取與參數(shù)設置8.2.6設置機械臂工具端I8.2IO狀態(tài)獲取與參數(shù)設置8.2.7設置機械臂工具端IO狀態(tài)Aub-i5機械臂工具端IO狀態(tài)的設置代碼如下所示:#設置工具端IO_1狀態(tài)(有效)robot.set_tool_io_status(RobotToolIoName.tool_io_1,1)其中,robot是機械臂控制類。該行代碼包括的2個參數(shù)說明如下:(1)參數(shù)1:工具io-1的名稱。(2)參數(shù)2:1(有效)。8.2IO狀態(tài)獲取與參數(shù)設置8.2.7設置機械臂工具端I8.2IO狀態(tài)獲取與參數(shù)設置8.2.8獲取機械臂工具端IO狀態(tài)Aub-i5機械臂工具端IO狀態(tài)的獲取,其程序塊代碼如下所示:#設置工具端IO_2為輸入robot.set_tool_io_type(RobotToolIoAddr.TOOL_DIGITAL_IO_2,RobotToolDigitalIoDir.IO_IN)#獲取工具端IO_2當前狀態(tài)tool_io_status=robot.get_tool_io_status(RobotToolIoName.tool_io_2)("Tool_IO_02Status:")(tool_io_status)8.2IO狀態(tài)獲取與參數(shù)設置8.2.8獲取機械臂工具端I8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序Aub-i5機械臂工具端IO狀態(tài)的設置代碼如下所示:deftest_IO():#初始化loggerlogger_init()#啟動測試("{0}testbeginning...".format(Auboi5Robot.get_local_time()))#系統(tǒng)初始化Auboi5Robot.initialize()#創(chuàng)建機械臂控制類robot=Auboi5Robot()#創(chuàng)建上下文handle=robot.create_context()#打印上下文("robot.rshd={0}".format(handle))try:8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序deft8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序#鏈接服務器(IP要根據(jù)實際設置)ip='0'port=8899result=robot.connect(ip,port)ifresult!=RobotErrorType.RobotError_SUCC:("connectserver{0}:{1}failed.".format(ip,port))else:#重新上電robot.robot_shutdown()#上電robot.robot_startup()#設置碰撞等級robot.set_collision_class(7)#末端IO#數(shù)字量輸出#設置工具端電源為24vrobot.set_tool_power_type(RobotToolPowerType.OUT_12V)#設置工具端IO_1為輸出robot.set_tool_io_type(RobotToolIoAddr.TOOL_DIGITAL_IO_1,RobotToolDigitalIoDir.IO_OUT)#設置工具端IO_1狀態(tài)robot.set_tool_io_status(RobotToolIoName.tool_io_1,1)8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序#獲取工具端電壓數(shù)值類型(0V12V24V)Tool_voltage_type=robot.get_tool_power_type()("Tool_voltage_type:")(Tool_voltage_type)#數(shù)字量輸入#設置工具端電源為12vrobot.set_tool_power_type(RobotToolPowerType.OUT_12V)

#設置工具端IO_2為輸入robot.set_tool_io_type(RobotToolIoAddr.TOOL_DIGITAL_IO_2,RobotToolDigitalIoDir.IO_IN)

#獲取工具端IO_2當前狀態(tài)tool_io_status=robot.get_tool_io_status(RobotToolIoName.tool_io_2)("Tool_IO_02Status:")(tool_io_status)#用戶IO#獲取控制柜用戶DIio_config=robot.get_board_io_config(RobotIOType.User_DI)#輸出DI配置(io_config)#獲取控制柜用戶DOio_config=robot.get_board_io_config(RobotIOType.User_DO)8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序#輸出DO配置(io_config)#數(shù)字量輸出#設置用戶輸出IO1狀態(tài)為1robot.set_board_io_status(RobotIOType.User_DO,RobotUserIoName.user_do_01,1)#數(shù)字量輸入#獲取用戶輸入IO1狀態(tài)io_status=robot.get_board_io_status(RobotIOType.User_DI,RobotUserIoName.user_di_03)("Digitalinput:")(io_status)#斷開服務器鏈接robot.disconnect()exceptRobotError,e:logger.error("{0}robotEvent:{1}".format(robot.get_local_time(),e))finally:#斷開服務器鏈接ifrobot.connected:#關閉機械臂robot.robot_shutdown()#斷開機械臂鏈接robot.disconnect()#釋放庫資源Auboi5Robot.uninitialize()8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序("{0}testcompleted.".format(Auboi5Robot.get_local_time()))#主函數(shù)執(zhí)行程序if__name__=='__main__':test_IO()程序運行過程說明如下:程序的開始首先連接服務器,其中機械臂上電,設置碰撞等級,設置工具端數(shù)字輸出IO-1的輸出為高電平,然后獲取工具端電源類型,獲取工具端數(shù)字輸入IO-2的狀態(tài)以及獲取控制柜用戶IO的輸出和輸入的配置信息;接著程序設置控制柜輸出IO-1的值為1(有效),并獲取控制柜用戶輸入IO-3的狀態(tài);最后,程序斷開服務器連接。8.2IO狀態(tài)獲取與參數(shù)設置8.2.9示例程序8.3PythonSDKIO與MODBUS模塊基于PythonSDK的MODBUS從機8.3PythonSDKIO與MODBUS模塊基于Pyt8.3基于PythonSDK的MODBUS從機8.3.1機械臂MODBUS功能Modbus協(xié)議是一種已廣泛應用于當今工業(yè)控制領域的通用通訊協(xié)議。Modbus協(xié)議包括RTU、ASCII和TCP三種(常見),AUBO機器人支持Modbus-RTU和Modbus-TCP兩種通信協(xié)議。Modbus-RTU是基于RS485總線,所以AUBO機器人和外部進行Modbus-RTU通信時需要接RS485線。Modbus-RTU網(wǎng)絡中,只能有一個主站,可有多個從站(理論247個從站),AUBO在Modbus-RTU網(wǎng)絡中只能作為主站,如圖8-1所示。圖8-1PythonModbus-RTU8.3基于PythonSDK的MODBUS從機基于PythonSDK的MODBUS從機8.3.1機械臂MODBUS功能Modbus-TCP是基于以太網(wǎng),所以AUBO機器人和外部進行Modbus-TCP通信時要連接網(wǎng)線。在Modbus-TCP網(wǎng)絡中,AUBO作為客戶機存在,可以這樣理解,Modbus-TCP的客戶機相當于Modbus-RTU的主機,Modbus-TCP的服務器相當于Modbus-RTU的從機,如圖8-2所示。圖8-2PythonModbus-TCP8.3基于PythonSDK的MODBUS從機基于PythonSDK的MODBUS從機8.3.2開源庫Pymodbus使用AUBO機械臂內(nèi)安裝有memcache,為了方便外部獲取機械臂信息,機械臂的很多信息在更新時會在memcache中存儲,可利用memcache為中間件,使用Python程序作為MODBUS的從站,從memcache數(shù)據(jù)庫中讀取機械臂機械臂數(shù)據(jù),并和外部設備(相機、PLC等)進行通訊。Python從站程序常用于數(shù)據(jù)交換,例如:示教器支持modbus通信(主站),Python程序做為modbus從站,外部設備作為modbus主站,這樣利用中間的從站實現(xiàn)數(shù)據(jù)交換。構建Python實現(xiàn)MODBUS從機,需要使用開源項目Pymodbus,Pymodbus是使用Twisted異步通信內(nèi)核實現(xiàn)了完整Modbus協(xié)議,由于此庫是用Python編寫的,所以可以輕松地編寫腳本集成到現(xiàn)有的解決方案中。Pymodbus的特性包括:1.客戶端功能(1)離散和register上的完整讀/寫協(xié)議;(2)大多數(shù)擴展協(xié)議(diagnostic/file/pipe/setting/information);(3)TCP,UDP,串行ASCII,串行RTU和串行二進制;8.3基于PythonSDK的MODBUS從機基于PythonSDK的MODBUS從機8.3.2開源庫Pymodbus使用(4)異步(由Twisted供電)和同步版本;(5)負載生成器/解碼器實用程序。2.服務器功能(1)可以作為完全實現(xiàn)的modbus服務器實現(xiàn)(2)TCP,UDP,串行ASCII,串行RTU和串行二進制(3)異步(由Twisted供電)和同步版本(4)完整服務器控制上下文(設備信息,計數(shù)器等)(5)許多支持上下文(數(shù)據(jù)庫,redis,從設備)Pymodbus可在網(wǎng)址:/riptideio/pymodbus/中進行下載,下載完成后,需要進行安裝,首先解壓壓縮文件,以管理員權限打開cmd命令提示窗口,進入解壓的目錄中,輸入命令“pythonsetup.pyinstall”進行安裝,安裝完成后,如圖8-3所示,即可提示“Finishedprocessingdependenciesforpymodbus==2.1.0”(2.1.0為版本號)。圖8-3Pymodbus安裝8.3基于PythonSDK的MODBUS從機基于PythonSDK的MODBUS從機8.3.2開源庫Pymodbus使用Pymodbus庫的使用方法可參考如下代碼:Pymodbus庫的使用方法可參考如下代碼:frompymodbus.client.syncimportModbusTcpClient#引用pymodbus的TCP客戶機模塊client=ModbusTcpClient('')client.write_coil(1,True)result=client.read_coils(1,1)print(result.bits[0])client.close()8.3基于PythonSDK的MODBUS從機基于PythonSDK的MODBUS從機8.3.3機械臂MODBUS-TCP從機示例代碼以下代碼為使用Pymodbus庫實現(xiàn)MODBUS-TCP從機,程序啟動后會自動連接memcache和機械臂PythonSDK接口,并且啟動TCP從機模式,監(jiān)聽本機的520端口,其它MODBUS-TCP主機可進行連接。defrun_server():time.sleep(10)#鏈接memcached服務端host='39'port=11211server=[str(host)+':'+str(port)]memcache_client=memcache.Client(server)#保證Memcached連接成功,否則彈出異常ifnotmemcache_client.get_stats():raisesocket.error("ConnectedMemcachedfailed,ip:{0},port:{1}".format(host,port))#連接機械臂host='39'port=8899#系統(tǒng)初始化Auboi5Robot.initialize()#創(chuàng)建機械臂控制類robot=Auboi5Robot()#創(chuàng)建上下文8.3基于PythonSDK的MODBUS從機基于PythonSDK的MODBUS從機8.3.3機械臂MODBUS-TCP從機示例代碼handle=robot.create_context()#鏈接robot服務器result=robot.connect(host,port)store=MemcachedSlaveContext(robot_client=robot,memcached_client=memcache_client)context=ModbusServerContext(slaves=store,single=True)#-----------------------------------------------------------------------##initializetheserverinformation#-----------------------------------------------------------------------##Ifyoudon'tsetthisoranyfields,theyaredefaultedtoemptystrings.#-----------------------------------------------------------------------#identity=ModbusDeviceIdentification()identity.VendorName='Pymodbus'identity.ProductCode='PM'identity.VendorUrl='/riptideio/pymodbus/'identity.ProductName='PymodbusServer'identity.ModelName='PymodbusServer'identity.MajorMinorRevision='1.5'#-----------------------------------------------------------------------##runtheserveryouwant#-----------------------------------------------------------------------##Tcp:StartTcpServer(context,identity=identity,address=("",502))if__name__=="__main__":run_server()8.3基于PythonSDK的MODBUS從機基于PythonSDK的MODBUS從機8.3.4機械臂MODBUS-RTU從機示例代碼機械臂MODBUS-RTU從機的實現(xiàn)和MODBUS-TCP從機的實現(xiàn)基本相同,不同的是程序啟動后,會以從機的形式監(jiān)聽串口“COM1”(根據(jù)硬件設備的串口名稱),波特率為115200,代碼如下所示。defrun_server():time.sleep(10)#鏈接memcached服務端host='39'port=11211server=[str(host)+':'+str(port)]memcache_client=memcache.Client(server)#保證Memcached連接成功,否則彈出異常ifnotmemcache_client.get_stats():raisesocket.error("ConnectedMemcachedfailed,ip:{0},port:{1}".format(host,port))#連接機械臂host='39'port=8899#系統(tǒng)初始化Auboi5Robot.initialize()#創(chuàng)建機械臂控制類robot=Auboi5Robot()#創(chuàng)建上下文handle=robot.create_context()8.3基于PythonSDK的MODBUS從機基于PythonSDK的MODBUS從機8.3.4機械臂MODBUS-RTU從機示例代碼#鏈接robot服務器result=robot.connect(host,port)store=MemcachedSlaveContext(robot_client=robot,memcached_client=memcache_client)context=ModbusServerContext(slaves=store,single=True)#-----------------------------------------------------------------------##initializetheserverinformation#-----------------------------------------------------------------------##Ifyoudon'tsetthisoranyfields,theyaredefaultedtoemptystrings.#-----------------------------------------------------------------------#identity=ModbusDeviceIdentification()identity.VendorName='Pymodbus'identity.ProductCode='PM'identity.VendorUrl='/riptideio/pymodbus/'identity.ProductName='PymodbusServer'identity.ModelName='PymodbusServer'identity.MajorMinorRevision='1.5'#-----------------------------------------------------------------------##runtheserveryouwant#-----------------------------------------------------------------------##RTU:timeout=.005StartSerialServer(context,framer=ModbusRtuFramer,identity=identity,port='COM1',timeout=.05,baudrate=115200)if__name__=="__main__":run_server()8.3基于PythonSDK的MODBUS從機思考與練習8.1填空題(1)工具端電源類型有___________,____________,_________。(2)工具端IO名稱有___________,____________,__________。(3)用戶IO類型有____________,____________,___________。(4)用戶IO的數(shù)量有__________。8.2簡答題(1)簡述設置工具端IO—1數(shù)字輸出為有效時的步驟。(2)簡述設置用戶IO—1輸出為有效時的步驟。8.4思考與練習8.1填空題8.4思考與練習8.3選擇題(1)獲取到的用戶IO配置信息不包括()A.地址B.類型C.idD.信號(2)以下用戶數(shù)字輸出IO不存在()A.user_do_1B.user_do_8C.user_do_16D.user_do_178.4思考與練習8.3選擇題8.4思考與練習(3)以下哪個不屬于用戶IO類型()A.User_DIB.User_DOC.User_AID.User_AO8.4實驗題(1)通過使用PythonSDK來控制用戶輸出IO-1,工具端輸出IO-1以1HZ的頻率循環(huán)切換狀態(tài)。8.4思考與練習(3)以下哪個不屬于用戶IO類型()第8章PythonSDKIO與MODBUS模塊第8章PythonSDKIO與MODBUS模塊本章目錄8.1數(shù)據(jù)類型介紹8.2IO狀態(tài)獲取與參數(shù)設置8.3基于PythonSDK的MODBUS從機8.4思考與練習本章目錄8.1數(shù)據(jù)類型介紹8.2IO狀態(tài)獲取與參數(shù)設置本章要求

知識目標了解機械臂基于Python語言的用戶IOSDK;了解機械臂基于Python語言的工具端IOSDK;了解機械臂基于Python語言的工具端電源SDK;了解機械臂基于Python語言的MODBUS從機的實現(xiàn)。本章要求知識目標8.1PythonSDKIO與MODBUS模塊數(shù)據(jù)類型介紹8.1PythonSDKIO與MODBUS模塊數(shù)據(jù)類型介8.1數(shù)據(jù)類型介紹8.1.1工具端電源類型Aub-i5機械臂工具端電源類型設置代碼如下所示:classRobotToolPowerType:OUT_0V=0OUT_12V=1OUT_24V=2def__init__(self):Pass工具端IO電源類型可分為三種:(1)OUT_0V電源為0V。(2)OUT_12V電源為12V。(3)OUT_24V電源為24V。8.1數(shù)據(jù)類型介紹8.1.1工具端電源類型classR8.1數(shù)據(jù)類型介紹8.1.2工具端IO地址類型Aub-i5機械臂工具端IO地址類型設置代碼如下所示:classRobotToolIoAddr:TOOL_DIGITAL_IO_0=0TOOL_DIGITAL_IO_1=1TOOL_DIGITAL_IO_2=2TOOL_DIGITAL_IO_3=3def__init__(self):Pass工具端數(shù)字信號IO地址有四個,他們是:(1)TOOL_DIGITAL_IO_0。(2)TOOL_DIGITAL_IO_1。(3)TOOL_DIGITAL_IO_2。(4)TOOL_DIGITAL_IO_3。8.1數(shù)據(jù)類型介紹8.1.2工具端IO地址類型class8.1數(shù)據(jù)類型介紹8.1.3工具端數(shù)字IO類型Aub-i5機械臂工具端數(shù)字IO類型設置代碼如下所示:classRobotToolDigitalIoDir:#輸入IO_IN=0#輸出IO_OUT=1def__init__(self):Pass工具端數(shù)字IO類型有兩種,它們是:IO_IN:輸入類型。IO_OUT:輸出類型。8.1數(shù)據(jù)類型介紹8.1.3工具端數(shù)字IO類型class8.1數(shù)據(jù)類型介紹8.1.4工具端IO名稱Aub-i5機械臂工具端IO名稱設置代碼如下所示:classRobotToolIoName:tool_io_0="T_DI/O_00"tool_io_1="T_DI/O_01"tool_io_2="T_DI/O_02"tool_io_3="T_DI/O_03"def__init__(self):Pass工具數(shù)字IO的名稱有四種,它們是:(1)tool_io_0(工具io_0)。(2)tool_io_1(工具io_1)。(3)tool_io_2(工具io_2)。(4)tool_io_3(工具io_3)。8.1數(shù)據(jù)類型介紹8.1.4工具端IO名稱classR8.1數(shù)據(jù)類型介紹8.1.5用戶IO類型Aub-i5機械臂用戶IO類型的設置代碼如下所示:classRobotIOType:#控制柜IOControlBox_DI=0ControlBox_DO=1ControlBox_AI=2ControlBox_AO=3#用戶IOUser_DI=4User_DO=5User_AI=6User_AO=7def__init__(self):Pass說明:在機器人IO類型包含了:(1)User_DI:用戶數(shù)字輸入類型。(2)User_DO:用戶數(shù)字輸出類型。(3)User_AI:用戶模擬量輸入。(4)User_AO:用戶模擬量輸出。8.1數(shù)據(jù)類型介紹8.1.5用戶IO類型classRo8.1數(shù)據(jù)類型介紹8.1.6用戶IO名稱Aub-i5機械臂用戶IO名稱的設置代碼如下所示:classRobotUserIoName:#控制柜用戶DIuser_di_00="U_DI_00"user_di_01="U_DI_01"user_di_02="U_DI_02"user_di_03="U_DI_03"user_di_04="U_DI_04"user_di_05="U_DI_05"user_di_06="U_DI_06"user_di_07="U_DI_07"user_di_10="U_DI_10"user_di_11="U_DI_11"user_di_12="U_DI_12"user_di_13="U_DI_13"user_di_14="U_DI_14"user_di_15="U_DI_15"user_di_16="U_DI_16"user_di_17="U_DI_17"#控制柜用戶DOuser_do_00="U_DO_00"user_do_01="U_DO_01"user_do_02="U_DO_02"user_do_03="U_DO_03"user_do_04="U_DO_04"user_do_05="U_DO_05"user_do_06="U_DO_06"user_do_07="U_DO_07"user_do_10="U_DO_10"user_do_11="U_DO_11"user_do_12="U_DO_12"user_do_13="U_DO_13"user_do_14="U_DO_14"user_do_15="U_DO_15"user_do_16="U_DO_16"user_do_17="U_DO_17"def__init__(self):Pass8.1數(shù)據(jù)類型介紹8.1.6用戶IO名稱classRo8.1數(shù)據(jù)類型介紹8.1.6用戶IO名稱說明:機器人用戶輸入IO類型名稱包含:(1)user_di_00:輸入IO—00。(2)user_di_01:輸入IO—01。(3)user_di_02:輸入IO—02。(4)user_di_03:輸入IO—03。(5)user_di_04:輸入IO—04。(6)user_di_05:輸入IO—05。(7)user_di_06:輸入IO—06。(8)user_di_07:輸入IO—07。(9)user_di_10:輸入IO—10。(10)user_di_11:輸入IO—11。(11)user_di_12:輸入IO—12。(12)user_di_13:輸入IO—13。(13)user_di_14:輸入IO—14。(14)user_di_15:輸入IO—15。(15)user_di_16:輸入IO—16。(16)user_di_17:輸入IO—17。機器人用戶輸出IO類型名稱包含:(1)user_do_00:輸出IO—00。(2)user_do_01:輸出IO—01。(4)user_do_02:輸出IO—02。(5)user_do_03:輸出IO—03。(6)user_do_04:輸出IO—04。(7)user_do_05:輸出IO—05。(8)user_do_06:輸出IO—06。(9)user_do_07:輸出IO—07。(10)user_do_10:輸出IO—10。(11)user_do_11:輸出IO—11。(12)user_do_12:輸出IO—12。(13)user_do_13:輸出IO—13。(14)user_do_14:輸出IO—14。(15)user_do_15:輸出IO—15。(17)user_do_16:輸出IO—16。(18)user_do_17:輸出IO—17。8.1數(shù)據(jù)類型介紹8.1.6用戶IO名稱(10)user8.2PythonSDKIO與MODBUS模塊IO狀態(tài)獲取與參數(shù)設置8.2PythonSDKIO與MODBUS模塊IO狀態(tài)獲8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置Aub-i5機械臂接口板IO名稱的配置的獲取方法如下所示:#獲取控制柜用戶DI?io_config=robot.get_board_io_config(RobotIOType.User_DI)#輸出DI配置?(io_config)#獲取控制柜用戶DO?io_config=robot.get_board_io_config(RobotIOType.User_DO)#輸出DO配置?(io_config)程序說明:robot是機械臂控制類程序說明如下:?:獲取接口板IO的配置信息,參數(shù)為用戶輸入IO,返回值賦值到io_config變量中。?:打印用戶輸入IO的配置信息,信息包括(地址,類型,id,數(shù)值和名稱),如下:(接至P89打印輸入IO配置)。?:獲取接口板IO的配置信息,參數(shù)為用戶輸出IO,返回值賦值到io_config變量中。8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置[{'addr':30,'type':4,'id':'F1','value':-1.0,'name':'F1'},{'addr':31,'type':4,'id':'F2','value':-1.0,'name':'F2'},{'addr':32,'type':4,'id':'F3','value':-1.0,'name':'F3'},{'addr':33,'type':4,'id':'F4','value':-1.0,'name':'F4'},{'addr':34,'type':4,'id':'F5','value':-1.0,'name':'F5'},{'addr':35,'type':4,'id':'F6','value':-1.0,'name':'F6'},{'addr':36,'type':4,'id':'U_DI_00','value':-1.0,'name':'U_DI_00'},{'addr':37,'type':4,'id':'U_DI_01','value':-1.0,'name':'U_DI_01'},{'addr':38,'type':4,'id':'U_DI_02','value':-1.0,'name':'U_DI_02'},{'addr':39,'type':4,'id':'U_DI_03','value':-1.0,'name':'U_DI_03'},{'addr':40,'type':4,'id':'U_DI_04','value':-1.0,'name':'U_DI_04'},8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置{'addr':41,'type':4,'id':'U_DI_05','value':-1.0,'name':'U_DI_05'},{'addr':42,'type':4,'id':'U_DI_06','value':-1.0,'name':'U_DI_06'},{'addr':43,'type':4,'id':'U_DI_07','value':-1.0,'name':'U_DI_07'},{'addr':44,'type':4,'id':'U_DI_10','value':-1.0,'name':'U_DI_10'},{'addr':45,'type':4,'id':'U_DI_11','value':-1.0,'name':'U_DI_11'},{'addr':46,'type':4,'id':'U_DI_12','value':-1.0,'name':'U_DI_12'},{'addr':47,'type':4,'id':'U_DI_13','value':-1.0,'name':'U_DI_13'},{'addr':48,'type':4,'id':'U_DI_14','value':-1.0,'name':'U_DI_14'},{'addr':49,'type':4,'id':'U_DI_15','value':-1.0,'name':'U_DI_15'},{'addr':50,'type':4,'id':'U_DI_16','value':-1.0,'name':'U_DI_16'},{'addr':51,'type':4,'id':'U_DI_17','value':-1.0,'name':'U_DI_17'}]8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置?打印輸出IO配置信息(包括地址,類型,id,數(shù)值和名稱)如下所示:[{'addr':32,'type':5,'id':'U_DO_00','value':-1.0,'name':'U_DO_00'},{'addr':33,'type':5,'id':'U_DO_01','value':-1.0,'name':'U_DO_01'},{'addr':34,'type':5,'id':'U_DO_02','value':-1.0,'name':'U_DO_02'},{'addr':35,'type':5,'id':'U_DO_03','value':-1.0,'name':'U_DO_03'},{'addr':36,'type':5,'id':'U_DO_04','value':-1.0,'name':'U_DO_04'},{'addr':37,'type':5,'id':'U_DO_05','value':-1.0,'name':'U_DO_05'},{'addr':38,'type':5,'id':'U_DO_06','value':-1.0,'name':'U_DO_06'},{'addr':39,'type':5,'id':'U_DO_07','value':-1.0,'name':'U_DO_07'},{'addr':40,'type':5,'id':'U_DO_10','value':-1.0,'name':'U_DO_10'},{'addr':41,'type':5,'id':'U_DO_11','value':-1.0,'name':'U_DO_11'},8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板IO配置{'addr':42,'type':5,'id':'U_DO_12','value':-1.0,'name':'U_DO_12'},{'addr':43,'type':5,'id':'U_DO_13','value':-1.0,'name':'U_DO_13'},{'addr':44,'type':5,'id':'U_DO_14','value':-1.0,'name':'U_DO_14'},{'addr':45,'type':5,'id':'U_DO_15','value':-1.0,'name':'U_DO_15'},{'addr':46,'type':5,'id':'U_DO_16','value':-1.0,'name':'U_DO_16'},{'addr':47,'type':5,'id':'U_DO_17','value':-1.0,'name':'U_DO_17'}]8.2IO狀態(tài)獲取與參數(shù)設置8.2.1獲取機械臂接口板I8.2IO狀態(tài)獲取與參數(shù)設置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論